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

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>
            亚洲激情第一区| 欧美高清你懂得| 欧美丝袜一区二区三区| 午夜日韩在线| 久久xxxx精品视频| 在线观看91精品国产麻豆| 91久久国产自产拍夜夜嗨| 欧美天天视频| 美女精品网站| 欧美日韩在线观看一区二区| 欧美在线视频a| 欧美日韩99| 欧美成人免费全部| 国产精品日韩久久久久| 欧美国产激情二区三区| 国产伦精品一区二区三区高清版| 国产精品99久久久久久久vr| 午夜伦理片一区| 亚洲欧美视频在线| 欧美激情黄色片| 亚洲第一福利社区| 影音先锋久久资源网| 欧美一区二区日韩| 久久色在线观看| 欧美一区二区三区另类| 国产精品福利网| 亚洲小视频在线观看| 欧美人与禽性xxxxx杂性| 午夜精品国产更新| 国产精品久久国产精品99gif| 亚洲国产精品一区二区尤物区| 在线欧美福利| 嫩模写真一区二区三区三州| 亚洲大片av| 9l国产精品久久久久麻豆| 男男成人高潮片免费网站| 欧美成人r级一区二区三区| 国产在线精品自拍| 久久影视三级福利片| 欧美大色视频| 亚洲视频综合| 国内精品久久久| 欧美精品一区二区蜜臀亚洲| 日韩一区二区精品| 久久精品女人天堂| 亚洲精品在线观| 国产欧美日韩中文字幕在线| 久久精品91| 中日韩美女免费视频网址在线观看| 欧美一区二区成人6969| 亚洲国产一区二区三区a毛片| 欧美巨乳波霸| 免费中文字幕日韩欧美| 午夜日韩在线观看| 亚洲少妇在线| 亚洲国产裸拍裸体视频在线观看乱了中文 | 一本一道久久综合狠狠老精东影业| 欧美日韩免费在线视频| 久久久久久久欧美精品| 亚洲在线黄色| 亚洲清纯自拍| 亚洲高清自拍| 亚洲日本乱码在线观看| 亚洲电影网站| 黄色精品一区| 亚洲国产精品成人一区二区| 国内精品视频一区| 国内精品福利| 91久久黄色| 亚洲性感激情| 亚洲欧美日韩一区二区三区在线观看| 亚洲人久久久| 亚洲一二三级电影| 欧美专区18| 欧美在线观看网站| 激情综合自拍| 国产欧美一区二区精品婷婷| 国产精品最新自拍| 国产一区999| 一区在线电影| 亚洲欧美日韩成人| 久久av在线| 欧美激情一区二区三区四区 | 久久精品综合一区| 久久这里只精品最新地址| 久久亚洲综合色| 欧美日韩午夜精品| 黄色av成人| 午夜精品区一区二区三| 免费久久99精品国产| 亚洲五月六月| 欧美另类视频在线| 国产亚洲欧美日韩美女| 亚洲视频欧美视频| 欧美激情一区二区三区蜜桃视频 | 在线成人国产| 亚洲综合首页| 国内精品模特av私拍在线观看| 一区二区三区日韩欧美精品| 久久精品电影| 国产日韩在线一区| 欧美亚洲日本网站| 亚洲免费av观看| 欧美日韩高清免费| 99re6这里只有精品| 欧美黄在线观看| 美玉足脚交一区二区三区图片| 国产情人节一区| 久久精品夜色噜噜亚洲a∨| 亚洲小视频在线观看| 国产精品xvideos88| 亚洲欧美在线一区| 亚洲伊人第一页| 国产精品一区三区| 久久这里只有| 男女精品网站| 午夜在线电影亚洲一区| 久久精品国产2020观看福利| 亚洲三级国产| 一区二区三区欧美| 伊人久久大香线蕉综合热线 | 免费看av成人| 亚洲少妇一区| 久久漫画官网| 午夜精品久久久久久久白皮肤 | 欧美日韩一区在线视频| 欧美在线网站| 欧美大胆成人| 久久久久久久久久久久久女国产乱| 久久久噜噜噜久噜久久| 99精品久久久| 久久久久99| 亚洲先锋成人| 欧美金8天国| 蜜桃av噜噜一区| 国产日韩在线亚洲字幕中文| 狠狠色伊人亚洲综合网站色| 亚洲黄色片网站| 国产永久精品大片wwwapp| 一本色道久久综合亚洲精品不| 狠狠色综合色区| 欧美一区二区三区久久精品| 一区二区三区四区五区在线| 久久综合九色综合欧美狠狠| 欧美一区二区三区免费观看视频 | 亚洲伊人久久综合| 亚洲乱码国产乱码精品精可以看| 欧美日韩国产影院| 亚洲激情啪啪| 在线综合视频| 欧美日韩成人综合在线一区二区| 蜜桃av一区二区在线观看| 激情成人亚洲| 欧美日韩网站| 亚洲视频在线观看| 香蕉免费一区二区三区在线观看| 极品尤物av久久免费看 | 一本色道久久88亚洲综合88| 欧美三级韩国三级日本三斤| 亚洲少妇在线| 欧美激情精品久久久久久久变态| 日韩网站在线观看| 国产精品一区一区三区| 欧美成人日本| 午夜精品国产更新| 亚洲精品1区2区| 欧美激情一区三区| 亚洲你懂的在线视频| 91久久久精品| 亚洲国产欧美另类丝袜| 国产精品伊人日日| 欧美精品一区二| 久久精品免视看| 久久www免费人成看片高清| 一区二区三区久久精品| 亚洲精品一区二区三区蜜桃久| 久久亚洲国产成人| 久久成人免费日本黄色| 欧美在线视频免费观看| 午夜一区二区三区不卡视频| 亚洲资源av| 欧美亚洲一区在线| 欧美日韩在线观看一区二区| 美日韩精品视频免费看| 噜噜噜噜噜久久久久久91| 蜜臀久久99精品久久久久久9| 久久香蕉精品| 欧美1区3d| 国产精品高清网站| 国产精品久久激情| 国产在线精品自拍| 影音先锋久久久| 中文日韩电影网站| 中文久久精品| 久久亚洲欧美国产精品乐播| 麻豆成人av| 一区二区三区 在线观看视| 欧美在线视频免费观看| 欧美久久婷婷综合色| 国产亚洲福利一区|