原創深思3加密狗破解

看雪資料發表於2015-11-15

原創深思3加密狗破解
 
     日期:2004年3月23日   破解人:8FZ
―――――――――――――――――――――――――――――――――――――――――――
 
 
【軟體名稱】:不公佈名字   軟體版本:
【軟體大小】:
【下載地址】:
【軟體簡介】:軟體是個商業軟體。無狗執行無任何提示,並口狗。帶狗破解。
【軟體限制】:
【破解宣告】:初學Crack,只是感興趣,沒有其它目的。失誤之處敬請諸位大俠賜教!
【作業系統】:
【破解工具】:

―――――――――――――――――――――――――――――――――――――――――――
 
【破解過程】:
 
OD載入EXE。稍等片刻,OK。
反彙編視窗往上翻到頂。。。看到如下的東西
00401000   /$  68 F0294400       push Phone.004429F0
00401005   |.  66:C705 F4294400 >mov word ptr ds:[4429F4], 0DFF6
0040100E   |.  66:C705 F6294400 >mov word ptr ds:[4429F6], 686B
00401017   |.  66:C705 F8294400 >mov word ptr ds:[4429F8], 399
00401020   |.  66:C705 F2294400 >mov word ptr ds:[4429F2], 0FFFF
00401029   |.  E8 92FF0200       call Phone.00430FC0
0040102E       66:A1 F0294400    mov axword ptr ds:[4429F0]

深思比較典型的東西
看到這個基本可以定下,401029處讀狗,mov axword ptr ds:[4429F0]
返回有狗無狗標誌,順便下個斷,有狗0無狗非零。搜尋全部call Phone.00430FC0
全部下斷,OK。執行
果然被攔截,手工返回O。避免EXIT啦。執行,報錯,OK,再來
0041E800    .  F2:AE             repne scas byte ptr es:[edi]
0041E802    .  F7D1              not ecx
0041E804    .  49                dec ecx
0041E805    .  BF 82A58300       mov edi, 83A582
0041E80A    .  8D440A 01         lea eaxdword ptr ds:[edx+ecx+1]
0041E80E    .  8986 E8000000     mov dword ptr ds:[esi+E8], eax                 
0041E814    .  E8 671B0100       call Phone.00430380
0041E819    .  83C4 08           add esp, 8
0041E81C    .  85C0              test eaxeax
0041E81E       74 42             je short Phone.0041E862       跳一錯誤地方,直接NOP
0041E820    .  6A 6C             push 6C
0041E822    .  E8 ED400100       call <jmp.&MFC42.#823>
0041E827    .  83C4 04           add esp, 4
0041E82A    .  894424 14         mov dword ptr ss:[esp+14], eax                 
003452B8
0041E82E    .  3BC3              cmp eaxebx
0041E830    .  C68424 50010000 0>mov byte ptr ss:[esp+150], 0B
0041E838    .  74 1D             je short Phone.0041E857

NOP後正常又被OD斷下。。
0040104C   |.  66:C705 F4294400 >mov word ptr ds:[4429F4], 0DFF6
00401055   |.  66:C705 F6294400 >mov word ptr ds:[4429F6], 686B
0040105E   |.  66:C705 F8294400 >mov word ptr ds:[4429F8], 399
00401067   |.  66:A3 F2294400    mov word ptr ds:[4429F2], ax
0040106D   |.  E8 4EFF0200       call Phone.00430FC0
00401072       66:A1 F0294400    mov axword ptr ds:[4429F0] 手工返回


0042BE8A   |.  E8 B151FDFF       call Phone.00401040                            
0042BE8F   |.  8D4C24 18         lea ecxdword ptr ss:[esp+18]
0042BE93   |.  8D443F 01         lea eaxdword ptr ds:[edi+edi+1]
0042BE97   |.  51                push ecx
0042BE98   |.  66:894424 1E      mov word ptr ss:[esp+1E], ax
0042BE9D   |.  66:897424 22      mov word ptr ss:[esp+22], si
0042BEA2       E8 E959FDFF       call Phone.00401890             到狗進行資料變換
0042BEA7   |.  8D4424 1C         lea eaxdword ptr ss:[esp+1C]
0042BEAB   |.  8D543F 02         lea edxdword ptr ds:[edi+edi+2]
0042BEAF   |.  C1EE 10           shr esi, 10
0042BEB2   |.  50                push eax
0042BEB3   |.  66:895424 22      mov word ptr ss:[esp+22], dx
0042BEB8   |.  66:897424 26      mov word ptr ss:[esp+26], si
0042BEBD   |.  E8 DE57FDFF       call Phone.004016A0             到狗進行資料變換
0042BEC2   |.  83C4 10           add esp, 10
0042BEC5   |.  5F                pop edi
0042BEC6   |.  5E                pop esi
0042BEC7   |.  5B                pop ebx
0042BEC8   |.  83C4 4C           add esp, 4C
0042BECB   .  C3                retn

採用的是隨雞數變化,這個就不要跟進去了。。跟了也沒用。說的這裡,就要提下深思3的資料變換方式了,其實前面的牛人早就發表在網上了

,也就是碼錶法,副本法,逆變換法
好繼續GO,OD斷下。返回撥用


0041EF80   /$  83EC 4C           sub esp, 4C
0041EF83   |.  53                push ebx
0041EF84   |.  56                push esi
0041EF85   |.  57                push edi
0041EF86   |.  8BF9              mov ediecx
0041EF88   |.  51                push ecx
0041EF89   |.  8D87 D4000000     lea eaxdword ptr ds:[edi+D4]
0041EF8F   |.  8BCC              mov ecxesp
0041EF91   |.  896424 10         mov dword ptr ss:[esp+10], esp
0041EF95   |.  50                push eax
0041EF96   |.  E8 FB380100       call <jmp.&MFC42.#535>
0041EF9B   |.  E8 10130100       call Phone.004302B0
0041EFA0   |.  6A 05             push 5
0041EFA2   |.  8BD8              mov ebxeax
0041EFA4   |.  E8 9720FEFF       call Phone.00401040                           
0041EFA9   |.  8D5424 18         lea edxdword ptr ss:[esp+18]
0041EFAD   |.  8D4C1B 01         lea ecxdword ptr ds:[ebx+ebx+1]
0041EFB1   |.  52                push edx
0041EFB2   |.  66:894C24 1E      mov word ptr ss:[esp+1E], cx
0041EFB7   |.  E8 E424FEFF       call Phone.004014A0          到狗進行資料變換
0041EFBC   |.  8B7424 1C         mov esidword ptr ss:[esp+1C]
0041EFC0   |.  8D4C24 1C         lea ecxdword ptr ss:[esp+1C]
0041EFC4   |.  8D441B 02         lea eaxdword ptr ds:[ebx+ebx+2]
0041EFC8   |.  51                push ecx
0041EFC9   |.  81E6 FFFF0000     and esi, 0FFFF
0041EFCF   |.  66:894424 22      mov word ptr ss:[esp+22], ax
0041EFD4   |.  E8 C720FEFF       call Phone.004010A0          到狗進行資料變換
0041EFD9   |.  8B4424 20         mov eaxdword ptr ss:[esp+20]
0041EFDD   |.  8B8F EC000000     mov ecxdword ptr ds:[edi+EC]
0041EFE3   |.  25 FFFF0000       and eax, 0FFFF
0041EFE8   |.  83C4 10           add esp, 10
0041EFEB   |.  C1E0 10           shl eax, 10
0041EFEE   |.  0BC6              or eaxesi
0041EFF0   |.  5F                pop edi
0041EFF1   |.  5E                pop esi
0041EFF2   |.  33C1              xor eaxecx
0041EFF4   |.  5B                pop ebx
0041EFF5   |.  83C4 4C           add esp, 4C
0041EFF8   .  C3                retn

OD隨便做個記號。方便以後分析,返回撥用



00412270   /$  56                push esi
00412271   |.  6A 00             push 0                                         
00412273   |.  8BF1              mov esiecx                                   
00412275   |.  68 9C000000       push 9C                                        
0041227A   |.  E8 E1F6FFFF       call Phone.00411960                             
0041227F   |.  E8 50070200       call <jmp.&MFC42.#1168>
00412284   |.  8B48 04           mov ecxdword ptr ds:[eax+4]
00412287   |.  E8 F4CC0000       call Phone.0041EF80            
0041228C       05 90000000       add eax, 90            返回處。EAX重點。打個記號
00412291   |.  68 2D040000       push 42D
00412296   |.  8BCE              mov ecxesi
00412298   |.  8986 2C010000     mov dword ptr ds:[esi+12C], eax
0041229E   |.  E8 7D090200       call <jmp.&MFC42.#3092>
004122A3   |.  85C0              test eaxeax
004122A5   |.  74 1A             je short Phone.004122C1
004122A7   |.  8B40 20           mov eaxdword ptr ds:[eax+20]
004122AA   |.  6A 00             push 0                                         
004122AC   |.  6A 01             push 1                                         
004122AE   |.  68 F1000000       push 0F1                                       
004122B3   |.  50                push eax                                       
004122B4   |.  FF15 94994300     call dword ptr ds:[<&USER32.SendMessageA>]      
004122BA   |.  8BCE              mov ecxesi
004122BC   |.  E8 1F040000       call Phone.004126E0
004122C1   |>  5E                pop esi
004122C2   .  C3                retn

OD繼續,同樣一處呼叫上面

00413E60   /$  6A FF             push -1
00413E62   |.  68 10664300       push Phone.00436610                             
00413E67   |.  64:A1 00000000    mov eaxdword ptr fs:[0]
00413E6D   |.  50                push eax
00413E6E   |.  64:8925 00000000  mov dword ptr fs:[0], esp
00413E75   |.  83EC 08           sub esp, 8
00413E78   |.  8D4424 00         lea eaxdword ptr ss:[esp]
00413E7C   |.  50                push eax                                       
00413E7D   |.  E8 5EFEFFFF       call Phone.00413CE0                            
00413E82   |.  8B4C24 00         mov ecxdword ptr ss:[esp]
00413E86   |.  C74424 10 0000000>mov dword ptr ss:[esp+10], 0
00413E8E   |.  8B41 F8           mov eaxdword ptr ds:[ecx-8]
00413E91       85C0              test eaxeax
00413E93   |.  74 27             je short Phone.00413EBC
00413E95   |.  51                push ecx
00413E96   |.  8D5424 04         lea edxdword ptr ss:[esp+4]
00413E9A   |.  8BCC              mov ecxesp
00413E9C   |.  896424 08         mov dword ptr ss:[esp+8], esp
00413EA0   |.  52                push edx
00413EA1   |.  E8 F0E90100       call <jmp.&MFC42.#535>
00413EA6   |.  B9 B0EE4400       mov ecx, Phone.0044EEB0
00413EAB   |.  C64424 14 00      mov byte ptr ss:[esp+14], 0
00413EB0       E8 CBB00000       call Phone.0041EF80         這裡
00413EB5       8BC8              mov ecxeax                EAX重點。                   
00413EB7       E8 64040100       call Phone.00424320        無狗此CALL出錯
00413EBC   |>  8D4C24 00         lea ecxdword ptr ss:[esp]
00413EC0   |.  C74424 10 FFFFFFF>mov dword ptr ss:[esp+10], -1
00413EC8   |.  E8 C3E90100       call <jmp.&MFC42.#800>
00413ECD   |.  8B4C24 08         mov ecxdword ptr ss:[esp+8]
00413ED1   |.  64:890D 00000000  mov dword ptr fs:[0], ecx
00413ED8       83C4 14           add esp, 14
00413EDB   .  C3                retn

無狗CALL出錯,那我們就帶上狗看看,哦。正常,轉存一下EAX的值看看

0034CB40  18 C2 43 00 01 00 00 00 00 00 00 00 00 00 00 00  .C.............
0034CB50  00 00 00 00 01 00 00 00 00 00 00 00 C8 3B 13 00  ............?..
0034CB60  44 02 3E 00 00 00 00 00 00 00 00 00 41 6D DF 77  D.>.........Amw
0034CB70  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0034CB80  38 98 34 00 00 00 00 00 00 00 00 00 00 00 00 00  8.4.............
0034CB90  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0034CBA0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0034CBB0  60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00  `...`...........
下個硬體寫入斷點看看什麼時候會生成
多次斷下,返回領空,找到

00420225   |.  E8 1C280100       call <jmp.&MFC42.#541>
0042022A   |.  8D8E 84010000     lea ecxdword ptr ds:[esi+184]
00420230   |.  C64424 24 06      mov byte ptr ss:[esp+24], 6
00420235   |.  E8 74260100       call <jmp.&MFC42.#540>
0042023A   |.  8D8E 94010000     lea ecxdword ptr ds:[esi+194]
00420240   |.  C64424 24 07      mov byte ptr ss:[esp+24], 7
00420245   |.  E8 F22B0100       call <jmp.&MFC42.#500>
0042024A   |.  8D8E B0010000     lea ecxdword ptr ds:[esi+1B0]
00420250   |.  C64424 24 08      mov byte ptr ss:[esp+24], 8
00420255   |.  E8 36C90000       call Phone.0042CB90
0042025A   |.  8D8E 88030000     lea ecxdword ptr ds:[esi+388]
00420260   |.  C64424 24 09      mov byte ptr ss:[esp+24], 9
00420265   |.  E8 44260100       call <jmp.&MFC42.#540>
0042026A       C706 18C24300     mov dword ptr ds:[esi], 0043C218  原來這裡附值啊。我靠。
00420270   |.  B9 07000000       mov ecx, 7
00420275   |.  33C0              xor eaxeax
00420277   |.  8DBE 30020000     lea edidword ptr ds:[esi+230]
0042027D   |.  8935 BCEF4400     mov dword ptr ds:[44EFBC], esi
00420283   |.  C64424 24 0A      mov byte ptr ss:[esp+24], 0A
00420288   |.  F3:AB             rep stos dword ptr es:[edi]

執行到0042026A處的ESI的值就是我們需要的地址了,用SMC打個補就行了
軟體還有多處同樣地方地方需要這個值,搜尋全部調0041EF80不會遺漏。全部打上

OK,已經可以不要狗執行了

相關文章