青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

OllyDBG 之旅 (八)

Posted on 2009-09-26 16:43 S.l.e!ep.¢% 閱讀(381) 評論(0)  編輯 收藏 引用 所屬分類: Crack

假設輸入的用戶名和序列號為:
11111
22222

004010D6? |.? B9 10000000?? mov???? ecx, 10
004010DB? |.? 2BC8????????? sub???? ecx, eax
004010DD? |.? BE 60214000?? mov???? esi, 00402160??????????????????????????? ;? ASCII "11111"
004010E2? |.? 8BFE????????? mov???? edi, esi
004010E4? |.? 03F8????????? add???? edi, eax
004010E6? |.? FC??????????? cld
004010E7? |.? F3:A4???????? rep???? movs byte ptr es:[edi], byte ptr [esi]
004010E9? |.? 33C9????????? xor???? ecx, ecx
004010EB? |.? BE 71214000?? mov???? esi, 00402171??????????????????????????? ;? ASCII "22222"

ecx = 0x10
ecx = ecx - eax = 0x10 - 0x5 = 0x0b
esi =??00402160?
edi = 00402160?
edi= edi+0x5 = 00402165
使標志位 D 為0

接下來是這一個語句:? 004010E7? |.? F3:A4???????? rep???? movs byte ptr es:[edi], byte ptr [esi]

此時 edi 指向 用戶名后面的數據空間
edi = 0x00402165
00402155? 40 79 61 68 6F 6F 2E 63 6F 6D 00 31 31 31 31 31? @yahoo.com.11111
00402165? 00 00 00 00 00 00 00 00 00 00 00 00 32 32 32 32? ............2222
00402175? 32 00 00 00 00 00 00 00 00 00 00 00 00 98 BA DC? 2............樅

esi = 0x00402160
esi 指向輸入的用戶名


rep 指令
格式:REP MOVS(或REP STOS,或REP LODS)
執行的操作:使REP后面的串操作指令重復執行,執行的次數預先存放在CX寄存器中,每執行一次串操作指令,CX寄存器的內容自動減1,一直重復執行到CX=0,指令才結束。具體的操作步驟是:
第1步 如果CX=0,則退出REP,否則執行REP后面的串操作指令;
第2步 CX ← CX-1;?
第3步 執行串操作指令
第4步 重復第1步~第3步。

rep???? movs byte ptr es:[edi], byte ptr [esi]
的意思是,重復執行? movs byte ptr es:[edi], byte ptr [esi] 這個語句,次數是 ecx 寄存器中的次數
1. esi 指向輸入的用戶名
2. edi 指向輸入用戶名后面的內存
3. ecx 是通過 0x10- 輸入用戶名的長度得來的

也就是說,如果輸入的用戶名,不足 0x10 這個長度, 就是用‘輸入的用戶名’重復去填充,直至 0x10 這個長度
如果輸入的用戶名已經是 0x10 這個長度,那么就不做任何操作了

執行完之后的結果
00402155? 40 79 61 68 6F 6F 2E 63 6F 6D 00 31 31 31 31 31? @yahoo.com.11111
00402165? 31 31 31 31 31 31 31 31 31 31 31 00 32 32 32 32? 11111111111.2222
00402175? 32 00 00 00 00 00 00 00 00 00 00 00 00 98 BA DC? 2............樅

接下來的代碼:

004010E9? |.? 33C9????????? xor???? ecx, ecx
004010EB? |.? BE 71214000?? mov???? esi, 00402171??????????????????????????? ;? ASCII "22222"
004010F0? |>? 41??????????? /inc???? ecx
004010F1? |.? AC??????????? |lods??? byte ptr [esi]
004010F2? |.? 0AC0????????? |or????? al, al
004010F4? |.? 74 0A???????? |je????? short 00401100
004010F6? |.? 3C 7E???????? |cmp???? al, 7E
004010F8? |.? 7F 06???????? |jg????? short 00401100
004010FA? |.? 3C 30???????? |cmp???? al, 30
004010FC? |.? 72 02???????? |jb????? short 00401100
004010FE? |.^ EB F0???????? \jmp???? short 004010F0
00401100? |>? 83F9 11?????? cmp???? ecx, 11
00401103? |.? 75 1A???????? jnz???? short 0040111F
00401105? |.? E8 E7000000?? call??? 004011F1

INC OPR //Byte/Word
執行操作: OPR=OPR+1
1.OPR可以是寄存器和存儲器操作數, 但不能是立即數和段寄存器
2.影響標志位OF,SF,ZF,PF 和AF,不影響CF

lods
字符串操作中,從串取指令,從DS:SI所指向的空間中取出一個字節/字/雙字放入寄存器中AL/AX/EAX,同時把SI+(-)1/2/4.(LODS相當于MOV AL,[SI]?? INC SI.)
從串取指令就是從DS:SI所指向字符串中取出一個字符.

ecx = 0
esi = 00402171? (esi 指向輸入的序列號)
ecx += 1
eax=0x32?????? esi+=1?? == 0x00402171 + 1 = 0x00402172 (取出序列號的一個字母,并把 esi 指向下一個字母)
or????? al, al?? (判斷上一步取出來的字符是否為 0,?? 因為 lods 指令用了 byte ptr, 所以這里只需要比較 al 就可以了)
|je????? short 00401100??? (如果al,即取出來的字符等于0,就是跳轉到00401100???,字符取出來有可能是0????? 這里的 0 是結束字符?)
cmp???? al, 7E??? (將 al 跟 0x7e 進行比較, 7e 的十進制是 126,? 7E 對應的字符是 '~')
jg????? short 00401100?? ( j 表示 jump,? g 表示 greater , 也就是說,取出來的字符如果大于 '~' 這個字符,就是跳轉到 00401100 )
cmp???? al, 30???? (將 al跟 0x30 進行比較,30的十進制是 48, 0x30 對應的字符是 '-')
jb????? short 00401100? ( j 表示 jump, b 表示 below, jb 判斷 cf 標志位,低于時跳轉, jl 用于帶符號的運算,jb用于 無符號的運算)

看回 ascii 表示,可見字符是從 0x30 - 0x7E,? 上面這幾句很明顯,是在判斷輸入序列號的字符是否合法
同時 ecx 存放著序列號的長度

0401100? |>? 83F9 11?????? cmp???? ecx, 11?????? ;? ecx 跟 11 比較
00401103? |.? 75 1A???????? jnz???? short 0040111F

cmp 算術減法運算結果為零,就把ZF(零標志)置1.??? jnz 判斷當 ZF(零標志位)為 0 時就跳轉
所以這兩個語句就是,當 ecx 不等于 0x11, 就?跳轉到 0040111F

0040111F? |> \C3??????????? retn

0040111F? 是一個 retn?,,,,,,

按 F9 讓它過去,然后把序列號改為? 2222222222222222????? (16個2)

當 ecx == 11 時,會繼續往下走, call 004011F1

00401100? |> \83F9 11?????? cmp???? ecx, 11
00401103? |.? 75 1A???????? jnz???? short 0040111F
00401105? |.? E8 E7000000?? call??? 004011F1
0040110A? |.? B9 01FF0000?? mov???? ecx, 0FF01
0040110F? |.? 51??????????? push??? ecx
00401110? |.? E8 7B000000?? call??? 00401190

F7 跟進子調用 004011F1

代碼如下:
004011F1? /$? A1 60214000?? mov???? eax, dword ptr [402160]
004011F6? |.? 8B1D 64214000 mov???? ebx, dword ptr [402164]
004011FC? |.? 3305 71214000 xor???? eax, dword ptr [402171]
00401202? |.? 331D 75214000 xor???? ebx, dword ptr [402175]
00401208? |.? 25 0F1F3F7F?? and???? eax, 7F3F1F0F
0040120D? |.? 81E3 00010307 and???? ebx, 7030100
00401213? |.? 33C9????????? xor???? ecx, ecx

地址 402160 指向的是輸入的用戶名開頭
地址 402164 指向的是輸入的用戶名第五個字節
地址 402171 指向的是輸入的序列號開頭
地址 402175 指向的是輸入的序列號第五個字節

那么語句的意思大概是
1. 用戶名的前1-4個字節放到? eax
2. 用戶名的前5-8個字節放到 ebx
3. 用戶名與序列號的前四個字節異或放到 eax
4. 用戶名與序列號的前5-8字節異或放到 ebx
5. eax 位與 0x7F3F1F0F? 放到 eax
6. ebx 位與 0x7030100??? 放到 ebx
7. ecx 清 0

接著往下看

00401213? |.? 33C9????????? xor???? ecx, ecx
00401215? |>? 8BF0????????? /mov???? esi, eax
00401217? |.? 8BFB????????? |mov???? edi, ebx
00401219? |.? D3E6????????? |shl???? esi, cl
0040121B? |.? D3E7????????? |shl???? edi, cl
0040121D? |.? 81E6 80808080 |and???? esi, 80808080
00401223? |.? 81E7 80808080 |and???? edi, 80808080
00401229? |.? 8BD6????????? |mov???? edx, esi

1. 把 eax 放到 esi
2. 把 ebx 放到 edi

把 eax 和 ebx 分別放到 esi, edi 干嘛?

shl 指令是邏輯左移,右面補零。
shl? x, y????? y為移動的位數

00401219? |.? D3E6????????? |shl???? esi, cl
0040121B? |.? D3E7????????? |shl???? edi, cl

此時, cl 為0, 所以這兩句暫時沒用

0040121D? |.? 81E6 80808080 |and???? esi, 80808080
00401223? |.? 81E7 80808080 |and???? edi, 80808080

接著把 esi 跟 edi 分別跟 0x80808080 與

00401229? |.? 8BD6????????? |mov???? edx, esi??? ;?? 把 esi 放到 edx

0040122B? |.? C0EE 07?????? |shr???? dh, 7????? 對dh右移7位
0040122E? |.? 66:C1E2 07??? |shl???? dx, 7???? 對dx左移7位

把 dx 的后半截清0, 不過此時dx為0, 所以這兩句暫時不起

00401232? |.? C1EA 08?????? |shr???? edx, 8
00401235? |.? C0EE 07?????? |shr???? dh, 7
00401238? |.? 66:C1E2 07??? |shl???? dx, 7
0040123C? |.? C1EA 08?????? |shr???? edx, 8
0040123F? |.? C0EE 07?????? |shr???? dh, 7
00401242? |.? 66:D1EA?????? |shr???? dx, 1

上面的一堆指令都是對 edx 進行無聊的移位

00401245? |.? 8BF2????????? |mov???? esi, edx
00401247? |.? 8BD7????????? |mov???? edx, edi

將?edx 放到 esi
將 edi 放到 edx?

接著往下看

00401270? |.? 51??????????? |push??? ecx????????????????????????????????? 將 ecx 跟 edx 都放到堆棧, 此時 ecx 跟 edx 都為 0, 沒意義
00401271? |.? 52??????????? |push??? edx
00401272? |.? BA 08000000?? |mov???? edx, 8???????????????????? edx = 8
00401277? |.? 91??????????? |xchg??? eax, ecx??????????????????????????? 交換指令XCHG(exchange),??? ecx 跟 eax 交換,? eax 在上邊是取用戶名前四位進行一些位操作的結果
00401278? |.? 83F8 03?????? |cmp???? eax, 3???????????????????????????比較 eax 跟 3
0040127B? |.? 7F 0F???????? |jg????? short 0040128C????????????????如果 eax 大于 3 則跳轉
0040127D? |.? F6E2????????? |mul???? dl???????????????????????????????????? 此時 dl 為0
0040127F? |.? 5A??????????? |pop???? edx??????????????????????????????????? 恢復 edx
00401280? |.? 83C0 08?????? |add???? eax, 8???????????????????????????? eax + 8
00401283? |.? 91??????????? |xchg??? eax, ecx?????????????????????????????? eax 跟 ecx 交換
00401284? |.? D3C0????????? |rol???? eax, cl??????????????????????????????? ROL 循環左移指令 , 左移,移出位填充到右邊最高位
00401286? |.? 33C2????????? |xor???? eax, edx??????????????????????????? 此時,edx 為 0, 所以 eax 的值還是不變
00401288? |.? D3C8????????? |ror???? eax, cl?????????????????????????????? ROR 循環右移指令,? 右移,移出位填充到左邊最高位
0040128A? |.? EB 0D???????? |jmp???? short 00401299
0040128C? |>? 83E8 03?????? |sub???? eax, 3
0040128F? |.? F6E2????????? |mul???? dl
00401291? |.? 5A??????????? |pop???? edx


循環移位指令

格式: ROL OPRD1,COUNT ;不含進位標志位CF在循環中的左循環移位指令.

? ?? ?ROR OPRD1,COUNT ;不含進位示志位CF在循環中的右循環移位指令.

? ?? ?RCL OPRD1,COUNT ;帶進位的左循環移位指令.

? ???RCR OPRD1,COUNT ;帶進位的右循環移位指令.

說明:

1. 本指令組只影響標志CF、OF.OF由移入CF的內容決定,OF取決于移位一次后符號位是否改變,如改變,則OF=1.

2. 由于是循環移位,所以對字節移位8次; 對字移位16次,就可恢復為原操作數.由于帶CF的循環移位,可以將CF的內容移入,
? ?所以可以利用它實現多字節的循環.


?

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区精品丝袜| 亚洲国产精品久久久久秋霞不卡| 最新亚洲电影| 亚洲激情图片小说视频| 欧美国产第二页| 亚洲第一页在线| 久久精品一区二区三区四区 | 国产一区二区日韩| 国产日本欧洲亚洲| 亚洲激情中文1区| 香蕉国产精品偷在线观看不卡| 久久久一区二区| 快she精品国产999| 午夜在线观看免费一区| 欧美日韩伦理在线免费| 一本色道久久综合亚洲精品不| 欧美成人资源| 免费在线日韩av| 亚洲美女视频| 日韩午夜激情| 国产精品二区在线观看| 亚洲午夜在线| 亚洲在线成人精品| 国产欧美日韩三级| 久久亚洲一区二区三区四区| 久久成人免费日本黄色| 亚洲承认在线| 9国产精品视频| 国产欧美日韩高清| 欧美v日韩v国产v| 国产精品久久久久一区| 亚洲欧美日本国产有色| 亚洲天堂av电影| av72成人在线| 国产精品羞羞答答| 久久精品日韩一区二区三区| 亚洲国产精品免费| 欧美另类高清视频在线| 亚洲欧美日韩另类| 久久久久久久网| av成人免费在线观看| 亚洲在线视频观看| 伊人精品成人久久综合软件| 亚洲高清不卡在线观看| 国产精品sm| 欧美成人午夜激情| 国产精品久久激情| 欧美aa在线视频| 国产精品成人aaaaa网站| 久久偷看各类wc女厕嘘嘘偷窃| 欧美福利视频在线观看| 欧美亚洲一区三区| 欧美精品三级在线观看| 久久久久久久精| 欧美三级电影大全| 男人插女人欧美| 国产精品一区在线观看| 亚洲黄一区二区| 国内精品久久久久久久影视麻豆| 亚洲欧洲综合| 韩日欧美一区| 亚洲一区二区视频在线| 夜夜狂射影院欧美极品| 欧美在线视频全部完| 亚洲影院色在线观看免费| 免费视频一区二区三区在线观看| 欧美一区二区三区在线观看视频 | 亚洲精选一区二区| 激情综合在线| 午夜精品久久99蜜桃的功能介绍| 日韩视频免费| 美女任你摸久久| 久久嫩草精品久久久精品| 国产精品美女久久久浪潮软件 | 亚洲欧美日韩国产中文| 中文成人激情娱乐网| 免费在线欧美视频| 欧美69视频| 亚洲电影免费在线| 久久久999精品| 久久久噜噜噜久久久| 国产伦精品一区二区| 亚洲天堂成人在线观看| 亚洲一区国产精品| 国产精品国产一区二区| 一本色道久久88综合日韩精品| 亚洲精品日韩在线观看| 欧美xxx在线观看| 亚洲狠狠婷婷| 国产精品自拍在线| 香蕉亚洲视频| 国产精品美腿一区在线看| aa亚洲婷婷| 亚洲欧美日本伦理| 国产欧美一区在线| 久久国产精品一区二区三区四区| 久久爱www久久做| 国产色产综合色产在线视频 | 国产日韩高清一区二区三区在线| 亚洲午夜精品一区二区| 午夜亚洲精品| 国产午夜精品一区理论片飘花| 亚洲综合电影一区二区三区| 欧美亚洲专区| 好吊成人免视频| 久久躁日日躁aaaaxxxx| 亚洲国产精品日韩| 中文无字幕一区二区三区| 国产精品99一区| 欧美在线视频二区| 亚洲国产精品小视频| 亚洲婷婷免费| 国产日韩欧美精品在线| 久久只有精品| 夜夜夜精品看看| 久久久久女教师免费一区| 亚洲国产清纯| 欧美午夜女人视频在线| 欧美一区二区视频在线观看2020| 另类综合日韩欧美亚洲| 日韩亚洲欧美高清| 国产精品亚洲网站| 男人的天堂亚洲| 亚洲专区在线视频| 亚洲国产精品久久久久| 欧美一区二区视频观看视频| 激情视频一区二区| 欧美日韩视频在线| 久久久久久久综合狠狠综合| 亚洲美女黄网| 麻豆av一区二区三区| 亚洲一二区在线| 激情综合中文娱乐网| 欧美日韩国产成人精品| 欧美在线一级va免费观看| 亚洲精品小视频在线观看| 久久爱www| 亚洲午夜精品视频| 亚洲国产精品一区在线观看不卡| 欧美午夜精品理论片a级大开眼界| 久久久亚洲精品一区二区三区| 99热免费精品| 欧美激情女人20p| 久久久噜噜噜久久久| 亚洲一区免费视频| 亚洲精品免费在线播放| 狠狠色噜噜狠狠狠狠色吗综合| 欧美日韩在线视频首页| 麻豆精品精华液| 欧美专区日韩视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲国产成人不卡| 免费看的黄色欧美网站| 久久国产手机看片| 午夜精品一区二区三区在线播放| 亚洲美女电影在线| 91久久久亚洲精品| 亚洲国产精品一区二区www在线| 国产一区二区福利| 国产精品外国| 国产欧美成人| 国产美女精品一区二区三区| 久久亚洲精品中文字幕冲田杏梨| 亚洲淫片在线视频| 最新国产成人av网站网址麻豆| 久久国产精品久久国产精品| 在线视频日韩精品| 99精品视频免费| 日韩视频一区二区在线观看 | 中国日韩欧美久久久久久久久| 亚洲国产mv| 亚洲电影下载| 亚洲国产99精品国自产| 亚洲国产精品t66y| 亚洲人成网站精品片在线观看| 亚洲大胆女人| 亚洲人成网站色ww在线| 日韩一级免费观看| 中文av一区特黄| 亚洲欧美成aⅴ人在线观看| 亚洲欧美在线看| 久久精品91久久久久久再现| 久久久一二三| 欧美大片第1页| 最新日韩中文字幕| 一区二区三区视频在线| 亚洲一区免费看| 欧美影院精品一区| 狂野欧美激情性xxxx| 欧美成人精品h版在线观看| 欧美经典一区二区三区| 欧美网站在线观看| 国产日韩av高清| 亚洲国产精品日韩| 亚洲私拍自拍| 久久久久久电影| 欧美激情网站在线观看| 日韩视频精品| 欧美一区二区视频在线观看2020 | 麻豆av福利av久久av|