好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 iy0507 于 2011-7-20 13:08 编辑
破解DataExplore数据恢复大师V2.53
2009年曾经因为要恢复文件所以尝试破解,当时太菜没办法,今天又因为需要恢复数据所以尝试,没想到就解决了,因此写篇小帖因此纪念。
这个版本网上是有破解版,破解是单个文件恢复功能,非常麻烦。
是个非常不错的恢复软件,收费还是可以接受的,所以就请大家支持正版了!
软件有最新版本,添加功能之一是可以识别.IOS文件和TMD加壳。注册保护框架大概相同,保护作者就不以新版本说明(偶们私藏)。
路人甲:鄙视你 !
有何遗漏,请各位谅解
没有壳编译语言是:Microsoft Visual C++ 7.0 [Debug] [Overlay]
使用C32asm来查找关键字符串
String Resource ID=00592: 注册码需要本程序关闭后重新运行才能生效.
如果您已经加载数据,请先保存,重新运行后打开保存的文件就可以导出了
::00596106->PUSH 250
::0059638B->PUSH 250
::005E795E->PUSH 250
::005E9224->PUSH 250
String Resource ID=00593: 谢谢支持DataExplore!
::00542ADA->PUSH 251
String Resource ID=00594: 错误的注册码!
::00542B16->PUSH 252
OD载入程序
分别在以上地址下F2断点
00542A95 . E8 A62BF3FF CALL Data.00475640 ; 3、关键CALL这里F7进去 注意EAX值!
00542A9A . 85C0 TEST EAX,EAX ; 2、EAX与EAX做与运算,EAX必须大于0下面的JE才能不跳
00542A9C 74 74 JE SHORT Data.00542B12 ; 1、关键跳 Z=0 JE不跳 不要他跳
00542A9E . B9 A0096800 MOV ECX,Data.006809A0
00542AA3 . C706 01000000 MOV DWORD PTR DS:[ESI],1
00542AA9 . E8 323BF3FF CALL Data.004765E0
00542AAE . 85C0 TEST EAX,EAX
00542AB0 . 74 0F JE SHORT Data.00542AC1
00542AB2 . B9 A0096800 MOV ECX,Data.006809A0
00542AB7 . E8 143BF3FF CALL Data.004765D0
00542ABC . 83F8 50 CMP EAX,50
00542ABF . 7C 15 JL SHORT Data.00542AD6
00542AC1 > A1 3C116800 MOV EAX,DWORD PTR DS:[68113C]
00542AC6 . C700 28000000 MOV DWORD PTR DS:[EAX],28
00542ACC . C705 40116800>MOV DWORD PTR DS:[681140],1
00542AD6 > 8D4C24 08 LEA ECX,DWORD PTR SS:[ESP+8]
00542ADA . 68 51020000 PUSH 251 ; 谢谢支持DataExplore!
00542ADF . 51 PUSH ECX
00542AE0 . E8 2B0B0000 CALL Data.00543610
00542AE5 . 83C4 08 ADD ESP,8
00542AE8 . 50 PUSH EAX
00542AE9 . 8D4C24 08 LEA ECX,DWORD PTR SS:[ESP+8]
00542AED . C64424 18 01 MOV BYTE PTR SS:[ESP+18],1
00542AF2 . E8 D924F0FF CALL Data.00444FD0
00542AF7 . 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8]
00542AFB . 83C0 F0 ADD EAX,-10
00542AFE . C64424 14 00 MOV BYTE PTR SS:[ESP+14],0
00542B03 . 8D50 0C LEA EDX,DWORD PTR DS:[EAX+C]
00542B06 . 83C9 FF OR ECX,FFFFFFFF
00542B09 . F0:0FC10A LOCK XADD DWORD PTR DS:[EDX],ECX
00542B0D . 49 DEC ECX
00542B0E . 85C9 TEST ECX,ECX
00542B10 . EB 40 JMP SHORT Data.00542B52
00542B12 > 8D4424 08 LEA EAX,DWORD PTR SS:[ESP+8]
00542B16 . 68 52020000 PUSH 252 ; 错误的注册码!
………………忽略代码………………
00542B68 . 6A 00 PUSH 0
00542B6A . 56 PUSH ESI
00542B6B . E8 700B0000 CALL Data.005436E0 ; 注册码正确或错误的提示
00542B70 . 8D46 F0 LEA EAX,DWORD PTR DS:[ESI-10]
00542B73 . 83C4 10 ADD ESP,10
看这里
00475640 /$ 8B81 58E40000 MOV EAX,DWORD PTR DS:[ECX+E458] ; 1、将DD44DB放到EAX中
00475646 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] ; 2、EAX指向的值放到EAX中
00475648 |. 8B91 84E40000 MOV EDX,DWORD PTR DS:[ECX+E484] ; 3、将DD4458放到EDX中
0047564E |. 2B02 SUB EAX,DWORD PTR DS:[EDX] ; 4、EAX减上EDX指向的值,结果存放在EAX中
00475650 |. F7D8 NEG EAX ; 5、EAX值取反
00475652 |. 1BC0 SBB EAX,EAX ; 6、EAX减去EAX
00475654 40 INC EAX ; 7、寄存器EAX加1
00475655 \. C3 RETN
逆向思维分析
00475640 /$ 8B81 58E40000 MOV EAX,DWORD PTR DS:[ECX+E458] ; EAX等于DD44DB
00475646 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] ; EAX等于805990E0
00475648 |. 8B91 84E40000 MOV EDX,DWORD PTR DS:[ECX+E484] ; EDX等于DD4458
0047564E |. 2B02 SUB EAX,DWORD PTR DS:[EDX] ; 1、如果EAX减去EDX指向值等于零
00475650 |. F7D8 NEG EAX ; 2、EAX值取反
00475652 |. 1BC0 SBB EAX,EAX ; 3、EAX减去EAX
00475654 40 INC EAX ; 4、寄存器EAX加1
00475655 \. C3 RETN
1、EDX指向值为2B9BA254,如果EAX=2B9BA254,那么2B9BA254减去2B9BA254结果为零
2、00475650的EAX取反后EAX仍然是零
3、00475652的EAX减去EAX后EAX仍然是零
4、00475654的EAX加上1后EAX就等于1
结果就和我们期待的EAX值相符
那么是上面是什么时候读取值放到EAX的??
00475640 /$ 8B81 58E40000 MOV EAX,DWORD PTR DS:[ECX+E458] ; 1、将ECX+E458指向的值存放到EAX中
00475646 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] ; 2、读取EAX指向的值存放到EAX值
以上代码加上将0DD44DB值存放到EAX中,0DD44DB的值成为2B9BA254就如我所预了
我们修改0DD44DB值为2B9BA254看看
运行到关键CALL
00542A95 . E8 A62BF3FF CALL Data.00475640 ; 到这里,看数据窗口
在数据窗口中跟随到0DD44D8
数据窗口:
00DD44D8 E0 90 59 80 78 01 DD 00 鄲Y
没办法贴完了,给各位文件吧
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|