很是无奈,有种恨铁不成钢的失落感,最近在
解密一款国外数据恢复软件,当初查到没壳,满心欢喜的
可是....好景不长,我终于还是栽在了它的网络验证算法上,每每想到这时,我就想到了一部动漫--《火影》
男主角竭尽所能就是为了保护身边的同伴,如果没有别人的帮助也是很难的,而我,现在栽在一款裸奔国外软件上,
也非常渴望得到别人的点拨。
以上都是吐槽,我来这里求助,也是出于技术交流的初衷,一个摔倒在解密大道上的小弟迫切希望得到各位巨人
的搀扶
软件下载链接:
400K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0G2L8$3#2V1M7Y4y4Q4x3X3g2U0L8$3#2Q4x3V1k6%4K9h3&6V1L8%4N6K6i4K6u0r3b7X3!0G2L8h3g2J5j5h3&6Y4i4K6u0V1g2@1W2z5i4K6u0W2k6i4S2W2
查壳:无壳
软件语言:delphi
工具:OD
查找参考字符串,错误提示“Invalid Registration Code”,找到以下关键代码
006AA35C /. 55 PUSH EBP ; 关键函数
006AA35D |. 8BEC MOV EBP,ESP
006AA35F |. 6A 00 PUSH 0
006AA361 |. 6A 00 PUSH 0
006AA363 |. 6A 00 PUSH 0
006AA365 |. 53 PUSH EBX
006AA366 |. 8BD8 MOV EBX,EAX
006AA368 |. 33C0 XOR EAX,EAX
006AA36A |. 55 PUSH EBP
006AA36B |. 68 F9A36A00 PUSH Boomeran.006AA3F9
006AA370 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
006AA373 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
006AA376 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
006AA379 |. 8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
006AA37F |. E8 EC62DAFF CALL Boomeran.00450670
006AA384 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
006AA387 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
006AA38A |. E8 590AD6FF CALL Boomeran.0040ADE8
006AA38F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006AA392 |. E8 ED82E6FF CALL Boomeran.00512684 ;关键算法
006AA397 |. 84C0 TEST AL,AL
006AA399 |. 74 0C JE SHORT Boomeran.006AA3A7 ;关键跳转
006AA39B |. C783 34020000>MOV DWORD PTR DS:[EBX+234],1
006AA3A5 |. EB 2C JMP SHORT Boomeran.006AA3D3
006AA3A7 |> 6A 10 PUSH 10
006AA3A9 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
006AA3AC |. A1 E4946F00 MOV EAX,DWORD PTR DS:[6F94E4]
006AA3B1 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
006AA3B3 |. E8 087FD9FF CALL Boomeran.004422C0
006AA3B8 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
006AA3BB |. E8 6CA2D5FF CALL Boomeran.0040462C
006AA3C0 |. 8BC8 MOV ECX,EAX
006AA3C2 |. BA 08A46A00 MOV EDX,Boomeran.006AA408 ; ASCII "Invalid Registration Code"
006AA3C7 |. A1 E4946F00 MOV EAX,DWORD PTR DS:[6F94E4]
按以上分析,原以为这个程序已经被拿下了,爆破,算法分析都可以,后来才知道 我错了
关键代码是在网络验证部分,这里所谓的关键算法只是个入门的门槛,如下
00512684 /$ 55 PUSH EBP
00512685 |. 8BEC MOV EBP,ESP
00512687 |. 83C4 F8 ADD ESP,-8
0051268A |. 53 PUSH EBX
0051268B |. 56 PUSH ESI
0051268C |. 33D2 XOR EDX,EDX
0051268E |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
00512691 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00512694 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00512697 |. E8 801FEFFF CALL Boomeran.0040461C
0051269C |. 33C0 XOR EAX,EAX
0051269E |. 55 PUSH EBP
0051269F |. 68 36285100 PUSH Boomeran.00512836
005126A4 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
005126A7 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
005126AA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005126AD |. E8 B61DEFFF CALL Boomeran.00404468
005126B2 |. 83F8 0E CMP EAX,0E
005126B5 |. 75 12 JNZ SHORT Boomeran.005126C9
005126B7 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005126BA |. 8078 03 2D CMP BYTE PTR DS:[EAX+3],2D
005126BE |. 75 09 JNZ SHORT Boomeran.005126C9
005126C0 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005126C3 |. 8078 08 2D CMP BYTE PTR DS:[EAX+8],2D
005126C7 |. 74 04 JE SHORT Boomeran.005126CD
005126C9 |> 33DB XOR EBX,EBX
005126CB |. EB 02 JMP SHORT Boomeran.005126CF
005126CD |> B3 01 MOV BL,1
005126CF |> 84DB TEST BL,BL
005126D1 |. 0F84 44010000 JE Boomeran.0051281B
005126D7 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
005126DA |. 50 PUSH EAX
005126DB |. B9 03000000 MOV ECX,3
005126E0 |. BA 01000000 MOV EDX,1
005126E5 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005126E8 |. E8 831FEFFF CALL Boomeran.00404670
005126ED |. BA 50285100 MOV EDX,Boomeran.00512850 ; ASCII "vou"
005126F2 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
005126F5 |. E8 9685EFFF CALL Boomeran.0040AC90
005126FA |. 84C0 TEST AL,AL
005126FC |. 0F85 CB000000 JNZ Boomeran.005127CD
00512702 |. BA 5C285100 MOV EDX,Boomeran.0051285C ; ASCII "osx"
00512707 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051270A |. E8 8185EFFF CALL Boomeran.0040AC90
0051270F |. 84C0 TEST AL,AL
00512711 |. 0F85 B6000000 JNZ Boomeran.005127CD
00512717 |. BA 68285100 MOV EDX,Boomeran.00512868 ; ASCII "win"
0051271C |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051271F |. E8 6C85EFFF CALL Boomeran.0040AC90
00512724 |. 84C0 TEST AL,AL
00512726 |. 0F85 A1000000 JNZ Boomeran.005127CD
0051272C |. BA 74285100 MOV EDX,Boomeran.00512874 ; ASCII "web"
00512731 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
00512734 |. E8 5785EFFF CALL Boomeran.0040AC90
00512739 |. 84C0 TEST AL,AL
0051273B |. 0F85 8C000000 JNZ Boomeran.005127CD
00512741 |. BA 80285100 MOV EDX,Boomeran.00512880 ; ASCII "trs"
00512746 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
00512749 |. E8 4285EFFF CALL Boomeran.0040AC90
0051274E |. 84C0 TEST AL,AL
00512750 |. 75 7B JNZ SHORT Boomeran.005127CD
00512752 |. BA 8C285100 MOV EDX,Boomeran.0051288C ; ASCII "tri"
00512757 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051275A |. E8 3185EFFF CALL Boomeran.0040AC90
0051275F |. 84C0 TEST AL,AL
00512761 |. 75 6A JNZ SHORT Boomeran.005127CD
00512763 |. BA 98285100 MOV EDX,Boomeran.00512898 ; ASCII "bmg"
00512768 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051276B |. E8 2085EFFF CALL Boomeran.0040AC90
00512770 |. 84C0 TEST AL,AL
00512772 |. 75 59 JNZ SHORT Boomeran.005127CD
00512774 |. BA A4285100 MOV EDX,Boomeran.005128A4 ; ASCII "bbm"
00512779 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051277C |. E8 0F85EFFF CALL Boomeran.0040AC90
00512781 |. 84C0 TEST AL,AL
00512783 |. 75 48 JNZ SHORT Boomeran.005127CD
00512785 |. BA B0285100 MOV EDX,Boomeran.005128B0 ; ASCII "bbd"
0051278A |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051278D |. E8 FE84EFFF CALL Boomeran.0040AC90
00512792 |. 84C0 TEST AL,AL
00512794 |. 75 37 JNZ SHORT Boomeran.005127CD
00512796 |. BA 80285100 MOV EDX,Boomeran.00512880 ; ASCII "trs"
0051279B |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051279E |. E8 ED84EFFF CALL Boomeran.0040AC90
005127A3 |. 84C0 TEST AL,AL
005127A5 |. 75 26 JNZ SHORT Boomeran.005127CD
005127A7 |. BA BC285100 MOV EDX,Boomeran.005128BC ; ASCII "trm"
005127AC |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
005127AF |. E8 DC84EFFF CALL Boomeran.0040AC90
005127B4 |. 84C0 TEST AL,AL
005127B6 |. 75 15 JNZ SHORT Boomeran.005127CD
005127B8 |. BA C8285100 MOV EDX,Boomeran.005128C8 ; ASCII "trd"
005127BD |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
005127C0 |. E8 CB84EFFF CALL Boomeran.0040AC90
005127C5 |. 84C0 TEST AL,AL
005127C7 |. 75 04 JNZ SHORT Boomeran.005127CD
005127C9 |. 33DB XOR EBX,EBX
005127CB |. EB 02 JMP SHORT Boomeran.005127CF
005127CD |> B3 01 MOV BL,1
005127CF |> 84DB TEST BL,BL
005127D1 |. 74 48 JE SHORT Boomeran.0051281B
005127D3 |. BE 05000000 MOV ESI,5
005127D8 |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4]
005127DB |. 8A5430 FF |MOV DL,BYTE PTR DS:[EAX+ESI-1]
005127DF |. B8 CC285100 |MOV EAX,Boomeran.005128CC ; ASCII "23456789abcdefjhikmnpqrstuvwxyzABCDEFJHIKMNPQRSTUVWXYZ"
005127E4 |. E8 FB94EFFF |CALL Boomeran.0040BCE4
005127E9 |. 85C0 |TEST EAX,EAX
005127EB |. 75 04 |JNZ SHORT Boomeran.005127F1
005127ED |. 33DB |XOR EBX,EBX
005127EF |. EB 2A |JMP SHORT Boomeran.0051281B
005127F1 |> 46 |INC ESI
005127F2 |. 83FE 09 |CMP ESI,9
005127F5 |.^ 75 E1 \JNZ SHORT Boomeran.005127D8
005127F7 |. BE 0A000000 MOV ESI,0A
005127FC |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4]
005127FF |. 8A5430 FF |MOV DL,BYTE PTR DS:[EAX+ESI-1]
00512803 |. B8 CC285100 |MOV EAX,Boomeran.005128CC ; ASCII "23456789abcdefjhikmnpqrstuvwxyzABCDEFJHIKMNPQRSTUVWXYZ"
00512808 |. E8 D794EFFF |CALL Boomeran.0040BCE4
0051280D |. 85C0 |TEST EAX,EAX
0051280F |. 75 04 |JNZ SHORT Boomeran.00512815
00512811 |. 33DB |XOR EBX,EBX
00512813 |. EB 06 |JMP SHORT Boomeran.0051281B
00512815 |> 46 |INC ESI
00512816 |. 83FE 0F |CMP ESI,0F
00512819 |.^ 75 E1 \JNZ SHORT Boomeran.005127FC
0051281B |> 33C0 XOR EAX,EAX
0051281D |. 5A POP EDX
0051281E |. 59 POP ECX
0051281F |. 59 POP ECX
00512820 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
00512823 |. 68 3D285100 PUSH Boomeran.0051283D
00512828 |> 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
0051282B |. BA 02000000 MOV EDX,2
00512830 |. E8 C719EFFF CALL Boomeran.004041FC
00512835 \. C3 RETN
00512836 .^ E9 7913EFFF JMP Boomeran.00403BB4
0051283B .^ EB EB JMP SHORT Boomeran.00512828
0051283D . 8BC3 MOV EAX,EBX
0051283F . 5E POP ESI
00512840 . 5B POP EBX
00512841 . 59 POP ECX
00512842 . 59 POP ECX
00512843 . 5D POP EBP
00512844 . C3 RETN
以上为“关键算法”部分,本来想用爆破,后来发现并不难,
注册码只要符合以下条件即可
(1)前三位必须是vou、win等几个特定字符串中的一种
(2)位数不多不少14位
(3)第4第9位必须是短横杠
只要满足以上条件即可,我采用的是“vou-xxxx-xxxxx”
这是一个以网络验证为主要方式的数据恢复软件
只有通过验证了才能弹出保存文件的对话框
知道后面程序用的是网络验证,我用OD的中断返回大法在堆栈看到些蛛丝马迹,如下
后面我做出了很多努力,想找出网络验证的关键选择判断代码,不过最终都以失败告终,只能懊悔自己的技术还不够到家
希望这里的哪位朋友有兴趣自己用OD跟一下,帮忙找找思路,最好是经过实践检验的思路
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课