小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

適合新手的160個creakme(一)

 印度阿三17 2019-08-03

先跑一下

直接使用這個字符串去check,發(fā)現(xiàn)提示信息有關鍵字符串

CODE:0042FB80 00000021 C Sorry , The serial is incorect !

找到這個字符串的引用,有兩個

跟下去發(fā)現(xiàn)這兩個字符串都在一個函數(shù)中,最下面的3個框中左右都是錯誤,中間是對的,所以核心就在最上層和中間的這段代碼

下面看看這段代碼,直接在ollydbg中暫停,查看參數(shù)和返回值等信息

CODE:0042F998                 push    ebp
CODE:0042F999                 mov     ebp, esp
CODE:0042F99B                 xor     ecx, ecx
CODE:0042F99D                 push    ecx
CODE:0042F99E                 push    ecx
CODE:0042F99F                 push    ecx
CODE:0042F9A0                 push    ecx
CODE:0042F9A1                 push    ecx
CODE:0042F9A2                 push    ecx
CODE:0042F9A3                 push    ebx
CODE:0042F9A4                 push    esi
CODE:0042F9A5                 mov     ebx, eax
CODE:0042F9A7                 xor     eax, eax
CODE:0042F9A9                 push    ebp
CODE:0042F9AA                 push    offset loc_42FB67  
CODE:0042F9AF                 push    dword ptr fs:[eax]
CODE:0042F9B2                 mov     fs:[eax], esp
CODE:0042F9B5                 mov     ds:dword_431750, 29h
CODE:0042F9BF                 lea     edx, [ebp var_10]
CODE:0042F9C2                 mov     eax, [ebx 1DCh]
CODE:0042F9C8                 call    sub_41AA58       ??;這個函數(shù)返回18
CODE:0042F9CD                 mov     eax, [ebp var_10]   ??;這里取得了用戶名字符串
CODE:0042F9D0                 call    sub_403AB0        ;以用戶名作為參數(shù),調用sub_403AB0,這是一個判斷用戶名是不是空的函數(shù)
CODE:0042F9D5                 mov     ds:dword_43176C, eax  ;將結果存放在固定位置,后面的第一個關鍵判斷使用這個字符串
CODE:0042F9DA                 lea     edx, [ebp var_10]
CODE:0042F9DD                 mov     eax, [ebx 1DCh]
CODE:0042F9E3                 call    sub_41AA58
CODE:0042F9E8                 mov     eax, [ebp var_10]
CODE:0042F9EB                 movzx   eax, byte ptr [eax]
CODE:0042F9EE                 mov     esi, eax
CODE:0042F9F0                 shl     esi, 3
CODE:0042F9F3                 sub     esi, eax
CODE:0042F9F5                 lea     edx, [ebp var_14]
CODE:0042F9F8                 mov     eax, [ebx 1DCh]
CODE:0042F9FE                 call    sub_41AA58
CODE:0042FA03                 mov     eax, [ebp var_14]
CODE:0042FA06                 movzx   eax, byte ptr [eax 1]
CODE:0042FA0A                 shl     eax, 4
CODE:0042FA0D                 add     esi, eax
CODE:0042FA0F                 mov     ds:dword_431754, esi
CODE:0042FA15                 lea     edx, [ebp var_10]
CODE:0042FA18                 mov     eax, [ebx 1DCh]
CODE:0042FA1E                 call    sub_41AA58
CODE:0042FA23                 mov     eax, [ebp var_10]
CODE:0042FA26                 movzx   eax, byte ptr [eax 3]
CODE:0042FA2A                 imul    esi, eax, 0Bh
CODE:0042FA2D                 lea     edx, [ebp var_14]
CODE:0042FA30                 mov     eax, [ebx 1DCh]
CODE:0042FA36                 call    sub_41AA58
CODE:0042FA3B                 mov     eax, [ebp var_14]
CODE:0042FA3E                 movzx   eax, byte ptr [eax 2]
CODE:0042FA42                 imul    eax, 0Eh
CODE:0042FA45                 add     esi, eax
CODE:0042FA47                 mov     ds:dword_431758, esi
CODE:0042FA4D                 mov     eax, ds:dword_43176C
CODE:0042FA52                 call    sub_406930        ;以用戶名作為參數(shù)調用
CODE:0042FA57                 cmp     eax, 4
CODE:0042FA5A                 jge     short loc_42FA79   ?。坏谝粋€關鍵判斷
CODE:0042FA5C                 push    0               ; uType
CODE:0042FA5E                 mov     ecx, offset aTryAgain_0 ; "Try Again!"
CODE:0042FA63                 mov     edx, offset aSorryTheSerial ; "Sorry , The serial is incorect !"
CODE:0042FA68                 mov     eax, ds:off_430A48
CODE:0042FA6D                 mov     eax, [eax]      ; int
CODE:0042FA6F                 call    sub_42A170
CODE:0042FA74                 jmp     loc_42FB37
CODE:0042FA79 ; ---------------------------------------------------------------------------
CODE:0042FA79
CODE:0042FA79 loc_42FA79:                             ; CODE XREF: _TNS_BitBtn1Click C2↑j
CODE:0042FA79                 lea     edx, [ebp var_10]
CODE:0042FA7C                 mov     eax, [ebx 1DCh]
CODE:0042FA82                 call    sub_41AA58
CODE:0042FA87                 mov     eax, [ebp var_10]   ??;取字符串
CODE:0042FA8A                 movzx   eax, byte ptr [eax]   ;取出字符串的第一個地址
CODE:0042FA8D                 imul    ds:dword_431750     ?。磺懊鎸⑦@個位置賦值成了0x29
CODE:0042FA93                 mov     ds:dword_431750, eax  ?。粚⒌谝粋€字符乘以0x29
CODE:0042FA98                 mov     eax, ds:dword_431750
CODE:0042FA9D                 add     ds:dword_431750, eax   ??;這里應該相當于乘以2了
CODE:0042FAA3                 lea     eax, [ebp var_4]      ;將這個字符串的地址放到局部變量中
CODE:0042FAA6                 mov     edx, offset _str_CW.Text
CODE:0042FAAB                 call    sub_403708          ;以字符串CW作為第二參數(shù)
CODE:0042FAB0                 lea     eax, [ebp var_8]        ;同上,將字符串地址放入局部變量
CODE:0042FAB3                 mov     edx, offset _str_CRACKED.Text
CODE:0042FAB8                 call    sub_403708          ;以字符串CRACKED作為第二參數(shù)
CODE:0042FABD                 push    [ebp var_4]          ;push了CW
CODE:0042FAC0                 push    offset _str___5.Text    ;push了又一個字符串
CODE:0042FAC5                 lea     edx, [ebp var_18]      ;這里是局部變量
CODE:0042FAC8                 mov     eax, ds:dword_431750   ??;這里是用戶名第一個字符串經(jīng)過運算之后的結果
CODE:0042FACD                 call    sub_406718          ;這里又對第一個字符串的運行結果再次進行一個運算
CODE:0042FAD2                 push    [ebp var_18]        ??;將第二次運算結果放入var_18中,這里入棧了
CODE:0042FAD5                 push    offset _str___5.Text    ;應該也是參數(shù)
CODE:0042FADA                 push    [ebp var_8]
CODE:0042FADD                 lea     eax, [ebp var_C]
CODE:0042FAE0                 mov     edx, 5
CODE:0042FAE5                 call    sub_4039AC         ??;關鍵函數(shù)了,第一個參數(shù)是var_C,第二個是5,后面3個參數(shù)依次是前面push的內容
CODE:0042FAEA                 lea     edx, [ebp var_10]
CODE:0042FAED                 mov     eax, [ebx 1E0h]
CODE:0042FAF3                 call    sub_41AA58        ;這個函數(shù)讀取了序列碼的地址,然后返給var_10中作為下一個函數(shù)的參數(shù)
CODE:0042FAF8                 mov     edx, [ebp var_10]   ?。坏诙€參數(shù)是序列碼字符串
CODE:0042FAFB                 mov     eax, [ebp var_C]   ?。坏谝粋€參數(shù)是var_C,也是字符串
CODE:0042FAFE                 call    sub_4039FC       ??;要求這個函數(shù)返回0
CODE:0042FB03                 jnz     short loc_42FB1F
CODE:0042FB05                 push    0               ; uType
CODE:0042FB07                 mov     ecx, offset aCongratz_0 ; "Congratz !!"
CODE:0042FB0C                 mov     edx, offset aGoodJobDude ; "Good job dude =)"
CODE:0042FB11                 mov     eax, ds:off_430A48
CODE:0042FB16                 mov     eax, [eax]      ; int
CODE:0042FB18                 call    sub_42A170
CODE:0042FB1D                 jmp     short loc_42FB37
CODE:0042FB1F ; ---------------------------------------------------------------------------
CODE:0042FB1F
CODE:0042FB1F loc_42FB1F:                             ; CODE XREF: _TNS_BitBtn1Click 16B↑j
CODE:0042FB1F                 push    0               ; uType
CODE:0042FB21                 mov     ecx, offset aTryAgain_0 ; "Try Again!"
CODE:0042FB26                 mov     edx, offset aSorryTheSerial ; "Sorry , The serial is incorect !"
CODE:0042FB2B                 mov     eax, ds:off_430A48
CODE:0042FB30                 mov     eax, [eax]      ; int
CODE:0042FB32                 call    sub_42A170

直接以默認的方式去運行,在ollydbg中看各個函數(shù)調用的參數(shù)和返回情況

在sub_406930處,傳入用戶名字符串,然后返回-2-(-1-length),也就是length-1,這里的length包括了'\0'字符,也就是說,最后這個函數(shù)的返回位用戶名的字符串長度,最后結果為0x19,所以第一個條件判斷為字符串長度大于4。這里已經(jīng)符合了

然后是loc_42FA79處的函數(shù),這個函數(shù)最后的跳轉步驟在sub_4039FC處,要求這個函數(shù)返回0,而這個函數(shù)參數(shù)有兩個,第一個參數(shù)是CW-6560-CRACKED,第二參數(shù)為序列碼。所以這里猜測應該是根據(jù)用戶名生成了6560這個字符串,和CW和CRACKED進行拼接,然后在這里進行最后一步的判斷

從0042FA79開始,對匯編碼進行了簡要分析,這段可以直接在ollydbg中看各個函數(shù)的參數(shù),結果以及棧的變化,可以大致猜出sub_4039AC應該是字符串拼接函數(shù),而關鍵點的函數(shù)應該是一個字符串相對的判斷函數(shù)。然后直接在序列碼中輸入CW-6560-CRACKED,發(fā)現(xiàn)果然正確,而6560這個值就是根據(jù)用戶名字符串第一個字符乘以0x29再成2得到的,上文中沒有分析的函數(shù)就是用來做字符串拼接(6560這個值在跟蹤函數(shù)的過程中也會被放入到棧上,所以只需要用ollydbg跟蹤調試每一步的變化就很容易得出結果了)

最后就OK了

?

來源:https://www./content-4-376251.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多