首页
社区
课程
招聘
[讨论]帮忙找找思路--一款无壳国外软件的解密
发表于: 2012-5-1 01:08 6807

[讨论]帮忙找找思路--一款无壳国外软件的解密

2012-5-1 01:08
6807
很是无奈,有种恨铁不成钢的失落感,最近在解密一款国外数据恢复软件,当初查到没壳,满心欢喜的
可是....好景不长,我终于还是栽在了它的网络验证算法上,每每想到这时,我就想到了一部动漫--《火影》
男主角竭尽所能就是为了保护身边的同伴,如果没有别人的帮助也是很难的,而我,现在栽在一款裸奔国外软件上,
也非常渴望得到别人的点拨。
    以上都是吐槽,我来这里求助,也是出于技术交流的初衷,一个摔倒在解密大道上的小弟迫切希望得到各位巨人
的搀扶
软件下载链接: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直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 226
活跃值: (1554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
006BAF51  |.  E8 2E77E5FF   call    00512684
006BAF56  |.  8845 F7       mov     byte ptr [ebp-9], al
006BAF59  |.  807D F7 00    cmp     byte ptr [ebp-9], 0
006BAF5D  |.  75 0A         jnz     short 006BAF69
006BAF5F  |.  8B45 FC       mov     eax, [local.1]
006BAF62  |.  E8 7192D4FF   call    004041D8

是006baf5d处

512684 是关键判断函数
本地调用来自 00520C40, 006AA392, 006BAF51
这三个调用后面的都是关键判断,懒得分析算法,512684修改为
00512684      B8 01000000   mov     eax, 1
00512689      C3            retn

即可
2012-5-1 22:23
0
雪    币: 259
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
hpphpp大的思路很对,方法也很对,不管是哪里调用512684 这个关键判断函数,只要给他一个成功的标志位然后返回就没问题了,如果这个程序没有网络验证,并且只有这么一个关键判断函数的话,此程序已经告破
实践出真知,按照这个方法试了下,还是不行
1.联网情况下弹出错误提示Error: Invalid Activation Number, check your Activation Number please (40144).
2.断网情况下停在checking registration code......提示许久无果
2012-5-2 03:15
0
雪    币: 226
活跃值: (1554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我整不了,求大侠,求思路
2012-5-2 20:34
0
雪    币: 259
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
问题有了点进展。。借传送门一用
177K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0f1J5M7r3!0B7K9h3g2Q4x3X3g2U0L8W2)9J5c8Y4c8Z5M7X3g2S2k6q4)9J5k6o6p5@1y4U0b7&6y4q4)9J5k6o6q4Q4x3X3b7I4i4K6u0W2K9s2c8E0L8l9`.`.
2012-5-3 03:49
0
雪    币: 226
活跃值: (1554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我这有网也显示连接不上服务器,请检查是否有活动网络连接,我想你试试,他既然有网络验证,就找他接受到的数据,下硬件访问断点,看对接受到的数据进行了什么操作判断
2012-5-3 09:24
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
网络验证的软件,必须要侦听软件来侦听数据包是怎样的一种数据才可以下结论,可以他可以通过的数据段代码copy进原来的软件里面,winhx软件进行覆盖
2012-5-3 09:39
0
雪    币: 259
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
这也是一种思路,不过难度更大了,因为必须对它的注册协议比较清晰的情况下才有希望推测出注册成功的数据包,现在不奢望别的,能把它给爆破了就已经很不错了,写个能模拟数据包的注册机对我来说确实有点遥远~~
2012-5-3 12:54
0
雪    币: 259
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
新思路:通过API或WM_GETTEXT获取文件预览窗口中的TUnicodeTextViewer控件内容并加予保存
2012-5-4 18:35
0
雪    币: 226
活跃值: (1554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
但是只能是文本文件啊,而且不算是破解了这个软件
2012-5-4 19:21
0
游客
登录 | 注册 方可回帖
返回