• <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>

            S.l.e!ep.¢%

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

            OllyDBG 之旅 (六)

            Posted on 2009-09-23 09:46 S.l.e!ep.¢% 閱讀(252) 評論(0)  編輯 收藏 引用 所屬分類: Crack
            從看雪下載的一個程序
            http://m.shnenglu.com/Files/sleepwom/cycle.zip

            打開后需要輸入正常的'用戶名'和'序列號'后,才會彈出 MessageBox

            OD加載,右鍵'查找'-'當前模塊中的名稱',? 看到有?
            ?名稱=USER32.GetDlgItemTextA

            很顯然,程序是通過 GetDlgItemText 這個API 去獲取? '用戶名' 和 '序列號'的
            所以執行 '在每個參考點上設置斷點'
            執行完,下面提示 '已設置3個斷點'
            F9 ('運行')

            隨便輸入一個用戶名,序列號, 然后 'Check'
            用戶名: abcdefghijklmnopq
            序列號: 1234567890123456789

            0040109C? /$? C705 82214000>mov???? dword ptr [402182], FEDCBA98
            004010A6? |.? 6A 11???????? push??? 11?????????????????????????????? ; /Count = 11 (17.)
            004010A8? |.? 68 71214000?? push??? 00402171???????????????????????? ; |Buffer = cycle.00402171
            004010AD? |.? 68 E9030000?? push??? 3E9????????????????????????????? ; |ControlID = 3E9 (1001.)
            004010B2? |.? FF75 08?????? push??? dword ptr [ebp+8]??????????????? ; |hWnd
            004010B5? |.? E8 0F020000?? call??? <jmp.&USER32.GetDlgItemTextA>??? ; \GetDlgItemTextA??? <---- 斷點在此
            004010BA? |.? 0BC0????????? or????? eax, eax
            004010BC? |.? 74 61???????? je????? short 0040111F
            004010BE? |.? 6A 11???????? push??? 11?????????????????????????????? ; /Count = 11 (17.)
            004010C0? |.? 68 60214000?? push??? 00402160???????????????????????? ; |Buffer = cycle.00402160
            004010C5? |.? 68 E8030000?? push??? 3E8????????????????????????????? ; |ControlID = 3E8 (1000.)
            004010CA? |.? FF75 08?????? push??? dword ptr [ebp+8]??????????????? ; |hWnd
            004010CD? |.? E8 F7010000?? call??? <jmp.&USER32.GetDlgItemTextA>??? ; \GetDlgItemTextA? <---- 這里也有斷點

            很顯然,
            用戶名,序列號,調用完API后,會分別放在
            cycle.00402171,? cycle.00402160
            然后在下面的數據區域右擊 '轉到' -> '表達式'
            輸入 00402171

            執行完第一個 GetDlgItemTextA? API 后? 觀察 00402171? 地址的內容,和 EAX 寄存器的值為 0x10
            00402171? 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36? 1234567890123456
            00402181? 00 98 BA DC FE 43 79 63 6C 65 43 72 61 63 6B 6D? .樅滎CycleCrackm
            00402191? 65 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00? e....@..........
            004021A1? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00? ................

            即 GetDlgItemTextA? API 的返回值是 10, 那么 00402171?? 地址開始的 10 個字節都存放著剛剛輸入的 序列號

            按 F8 ('單步步過')

            會執行這一句
            004010BA? |.? 0BC0????????? or????? eax, eax
            004010BC? |.? 74 61???????? je????? short 0040111F

            je是jump if zero的意思,jz是jump if equal的意思,兩者都是結果為0(相等),
            je jz 是一樣的? 。只是JE更適合人類的思維習慣? 相等就跳轉?
            兩個都是將操作數相減? 等于零(zf=1)就跳轉

            or eax, eax??? 只就為了改為 zf 標志位
            je? 指令,當 zf 為1時,就跳轉

            這里是為了判斷, API 的返回值是否為 0

            同樣的方法跟蹤地址 00402160? 在調用完 第二個 GetDlgItemTextA?? 后的內容

            00402160? 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70? abcdefghijklmnop
            00402170? 00 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35? .123456789012345
            00402180? 36 00 98 BA DC FE 43 79 63 6C 65 43 72 61 63 6B? 6.樅滎CycleCrack
            00402190? 6D 65 00 00 00 00 40 00 00 00 00 00 00 00 00 00? me....@.........

            00402160? 和 00402170?? 分別放了 用戶名 和序列號

            接著往下看
            004010D2? |.? 0BC0????????? or????? eax, eax
            004010D4? |.? 74 49???????? je????? short 0040111F

            這里也做了判斷 eax 是否為 0的操作

            接著繼續往下看

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



            ?

            ?

            亚洲精品乱码久久久久久蜜桃 | 久久久久人妻一区精品| 国产高潮久久免费观看| 亚洲欧洲精品成人久久曰影片| 日韩久久久久久中文人妻| 久久亚洲国产精品一区二区| 无码任你躁久久久久久老妇| 久久综合久久自在自线精品自 | 久久精品国产AV一区二区三区| 久久久无码人妻精品无码| 久久精品国产国产精品四凭| 2021国内精品久久久久久影院| 漂亮人妻被黑人久久精品| 久久精品国产精品亚洲下载| 久久夜色精品国产噜噜噜亚洲AV| 久久国产V一级毛多内射| 99精品国产在热久久无毒不卡 | 欧美黑人激情性久久| 国产激情久久久久影院| 精品免费久久久久久久| 99蜜桃臀久久久欧美精品网站| 久久成人18免费网站| 丁香五月综合久久激情| 国产91色综合久久免费| 国产人久久人人人人爽| 亚洲成色WWW久久网站| 一本一本久久aa综合精品| 久久婷婷是五月综合色狠狠| 久久亚洲国产成人影院网站| 99久久国产综合精品五月天喷水 | 亚洲精品国产字幕久久不卡| 久久久久久久久久久久久久| 久久亚洲国产最新网站| 伊人久久大香线蕉成人| 亚洲精品WWW久久久久久| 久久亚洲精品无码播放| 亚洲第一永久AV网站久久精品男人的天堂AV | 一本久久精品一区二区| 午夜精品久久久久成人| 77777亚洲午夜久久多喷| 久久人人爽人人爽人人AV东京热|