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

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.¢% 閱讀(385) 評論(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>
            最新69国产成人精品视频免费| 一本色道婷婷久久欧美| 欧美在线免费观看| 亚洲欧美在线一区| 久久成人精品电影| 猛男gaygay欧美视频| 欧美黄色影院| 欧美午夜久久| 黄色成人在线| 中文国产成人精品| 久久国产成人| 亚洲国产一区二区视频| 日韩亚洲欧美在线观看| 亚洲香蕉网站| 久久野战av| 国产精品va在线播放| 国产一区二区三区久久悠悠色av| 在线成人激情黄色| 亚洲一区二区三区精品视频| 久久久久久国产精品mv| 亚洲欧洲日本在线| 欧美在线地址| 欧美色欧美亚洲另类七区| 国产亚洲欧美一区二区三区| 亚洲美女啪啪| 久久在线播放| 亚洲一区二区精品在线观看| 久久漫画官网| 国产精品影音先锋| 亚洲免费黄色| 亚洲一区二区动漫| 日韩亚洲精品视频| 久久福利电影| 亚洲高清中文字幕| 亚洲欧美一区二区精品久久久| 久久亚洲一区二区| 国产日产精品一区二区三区四区的观看方式 | 一区二区三区国产盗摄| 久久青草久久| 国产情人节一区| 亚洲性人人天天夜夜摸| 欧美激情麻豆| 乱码第一页成人| 国内外成人在线| 欧美影视一区| 亚洲综合社区| 国产精品主播| 欧美一区二区国产| 亚洲午夜在线| 国产精品一区二区三区久久| 日韩视频专区| 亚洲三级观看| 欧美日韩一区二区高清| 99视频在线精品国自产拍免费观看 | 久久人人97超碰国产公开结果| 亚洲一区区二区| 欧美三级乱码| 亚洲欧美日韩在线观看a三区| 夜夜爽av福利精品导航| 欧美午夜国产| 性感少妇一区| 性欧美在线看片a免费观看| 国产日本欧洲亚洲| 久久噜噜噜精品国产亚洲综合 | 最新国产精品拍自在线播放| 欧美成人免费一级人片100| 亚洲国产欧美一区二区三区丁香婷| 久久综合久久久| 蜜桃精品久久久久久久免费影院| 一区视频在线播放| 91久久精品国产| 欧美视频在线观看| 久久成人精品无人区| 久久久久久久97| 亚洲免费高清视频| 亚洲影院高清在线| 在线成人欧美| 夜夜爽av福利精品导航| 国产一区二区中文字幕免费看| 久久另类ts人妖一区二区| 一区二区毛片| 欧美视频福利| 久久久久久久综合狠狠综合| 久久成人综合视频| 亚洲区一区二| 亚洲一区二区三区午夜| 在线观看日韩| 亚洲一二三区视频在线观看| 国产综合欧美在线看| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美成黄导航| 亚洲欧美bt| 欧美成人dvd在线视频| 午夜国产精品影院在线观看| 久久精品一本| 亚洲欧美日韩第一区| 美女精品网站| 久久九九99| 国产精品久久久久影院色老大| 欧美成ee人免费视频| 国产精品一区二区黑丝| 亚洲国产一区二区精品专区| 国内外成人免费视频 | 蜜臀va亚洲va欧美va天堂| 欧美日韩免费看| 欧美激情免费观看| 国产自产高清不卡| 一区二区三区精密机械公司| 精品动漫3d一区二区三区免费| 亚洲最新合集| 亚洲精品日韩激情在线电影| 欧美制服丝袜| 欧美在线观看视频| 国产精品久久久久aaaa樱花| 亚洲国产一区二区精品专区| 精品成人国产| 久久国产精品久久国产精品| 亚洲欧美日本另类| 欧美三级黄美女| 亚洲精品小视频在线观看| 亚洲国产精品成人精品| 久久精品91| 久久天天综合| 国内揄拍国内精品少妇国语| 亚洲欧洲99久久| 欧美一区二区三区视频免费| 欧美日韩一区在线播放| 最新国产成人av网站网址麻豆| 在线看片日韩| 久久综合伊人77777蜜臀| 久久久亚洲精品一区二区三区| 国产精品一区二区三区四区五区| 一区二区三区日韩精品视频| 国产精品99久久99久久久二8| 欧美激情第8页| 日韩视频免费看| 亚洲免费在线视频| 国产精品一二一区| 午夜精品影院在线观看| 久久精品在线观看| 久久夜色精品国产| 亚洲欧美日韩国产综合精品二区| 亚洲另类一区二区| 久久成人人人人精品欧| 久久精品日韩一区二区三区| 国产欧亚日韩视频| 久久久国产精品一区| 欧美成人性生活| 99成人精品| 国产精品毛片| 欧美在线播放高清精品| 免费观看亚洲视频大全| 亚洲国产成人一区| 欧美激情一区二区三区在线| 亚洲精品视频在线看| 午夜精品视频在线| 黄色欧美成人| 免费在线成人| 亚洲手机视频| 免费在线视频一区| 一区二区欧美在线| 国产日韩精品一区二区三区在线| 久久狠狠婷婷| 日韩视频一区二区在线观看 | 久久精品99国产精品日本 | 亚洲丶国产丶欧美一区二区三区| 亚洲老板91色精品久久| 国产精品sss| 免费欧美日韩国产三级电影| 一本一本久久a久久精品牛牛影视| 欧美一区二区三区四区在线观看 | 欧美激情成人在线视频| 亚洲嫩草精品久久| 亚洲成色777777在线观看影院| 亚洲影院高清在线| 亚洲国产三级网| 国产乱人伦精品一区二区| 猛男gaygay欧美视频| 亚洲欧美另类久久久精品2019| 亚洲国产另类精品专区| 久久久久久色| 午夜亚洲性色福利视频| 亚洲人成人一区二区三区| 国产日韩欧美视频| 欧美午夜不卡影院在线观看完整版免费| 欧美在线视频观看| 亚洲午夜极品| 亚洲精品美女久久久久| 欧美福利视频| 久久男人资源视频| 欧美一级播放| 亚洲欧美国产高清va在线播| 亚洲精品欧美日韩专区| 亚洲电影欧美电影有声小说| 国产欧美日韩精品丝袜高跟鞋 | 久久精品欧美日韩| 亚洲男人天堂2024| 亚洲网站啪啪| 国产精品99久久久久久久久|