首页
社区
课程
招聘
[原创]破解"易我数据恢复向导"追出注册码
发表于: 2010-5-22 12:35 9948

[原创]破解"易我数据恢复向导"追出注册码

2010-5-22 12:35
9948
文章标题】: 破解------易我数据恢复向导V2.0
【文章作者】: 小邪
【作者邮箱】: hack52@163.com
【作者QQ号】: 12814441
【下载地址】: 白度一搜,就有很多了,注意版本是V2.0
【加壳方式】: 无
【使用工具】: PEID,OD
【软件介绍】: 能够恢复回收站清空,直接使用Shift+Del删除的文件,恢复分区删除、分区丢失、分区格式化前的文件,能够恢复丢失的文件和文件夹并且能对长文件名进行恢复等。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  今天把U盘里的数据识删除了,想要恢它,于是找到以前自己收藏的酷软,发现要注册,于是呼。。。就产生了下面这篇文章。。。安装过程就不说了。。,《-|-》,。。。下面是破解过程.
(1)用PEID查壳:Microsoft Visual C++ 6.0
(2)用OD载入"易我数据恢复向导",程序停在这里:
0047B934 >  55            push ebp       //程序入口
0047B935    8BEC          mov ebp,esp
0047B937    6A FF         push -1
0047B939    68 08CA4800   push DRW.0048CA08
0047B93E    68 ECB74700   push <jmp.&MSVCRT._except_handler3>
0047B943    64:A1 0000000>mov eax,dword ptr fs:[0]
0047B949    50            push eax
0047B94A    64:8925 00000>mov dword ptr fs:[0],esp
0047B951    83EC 68       sub esp,68
0047B954    53            push ebx
0047B955    56            push esi
0047B956    57            push edi
0047B957    8965 E8       mov dword ptr ss:[ebp-18],esp
0047B95A    33DB          xor ebx,ebx

shift+F9运行程序,输入注册名:hack52 注册码:hack52ha-22222222-33333333-444444444(随便输入),单击“确定”,软件出现错误提示,在OD上按F12暂停,然后单击菜单栏的"k",来到这里:
调用堆栈 
地址       堆栈       函数例程                                                    调用来自                      框架
0012E66C   77D19418   包含 ntdll.KiFastSystemCallRet                                USER32.77D19416               0012E6A0
0012E670   77D2770A   USER32.WaitMessage                                          USER32.77D27705               0012E6A0
0012E6A4   77D249C4   USER32.77D2757B                                             USER32.77D249BF               0012E6A0
0012E6CC   77D3A956   USER32.77D2490E                                             USER32.77D3A951               0012E6C8
0012E98C   77D3A2BC   USER32.SoftModalMessageBox                                  USER32.77D3A2B7               0012E988
0012EADC   77D663FD   USER32.77D3A147                                             USER32.77D663F8               0012EAD8
0012EB34   77D664A2   USER32.MessageBoxTimeoutW                                   USER32.77D6649D               0012EB30
0012EB68   77D50877   ? USER32.MessageBoxTimeoutA                                 USER32.77D50872               0012EB64
0012EB88   77D5082F   ? USER32.MessageBoxExA                                      USER32.77D5082A               0012EB84
0012EBA4   5F45C91C   ? USER32.MessageBoxA                                        MFC42.5F45C916                0012EBA0

0012EBBC   00440F5D   ? <jmp.&MFC42.#4224>                                        DRW.00440F58//在这里面双击

单击后来到这里:
00440F58    E8 09A00300   call <jmp.&MFC42.#4224>
00440F5D    C645 FC 00    mov byte ptr ss:[ebp-4],0
00440F61    8D4D F0       lea ecx,dword ptr ss:[ebp-10]
00440F64    E8 319C0300   call <jmp.&MFC42.#800>
00440F69    C745 FC FFFFF>mov dword ptr ss:[ebp-4],-1
00440F70    8D4D EC       lea ecx,dword ptr ss:[ebp-14]
00440F73    E8 229C0300   call <jmp.&MFC42.#800>
向上拉来到段首:
00440EC8    55            push ebp      //在这F2下断
00440EC9    8BEC          mov ebp,esp
00440ECB    6A FF         push -1
00440ECD    68 06FB4700   push DRW.0047FB06
00440ED2    64:A1 0000000>mov eax,dword ptr fs:[0]
00440ED8    50            push eax
00440ED9    64:8925 00000>mov dword ptr fs:[0],esp
00440EE0    83EC 20       sub esp,20
00440EE3    894D E0       mov dword ptr ss:[ebp-20],ecx
00440EE6    6A 01         push 1

F9继续运行程序,在错误提示上点确定,然后点注册,OD断在这里(我们下断的地方):
00440EC8    55            push ebp          //OD断在这里
00440EC9    8BEC          mov ebp,esp
00440ECB    6A FF         push -1
00440ECD    68 06FB4700   push DRW.0047FB06
00440ED2    64:A1 0000000>mov eax,dword ptr fs:[0]
00440ED8    50            push eax
00440ED9    64:8925 00000>mov dword ptr fs:[0],esp
00440EE0    83EC 20       sub esp,20
继续F8单步来到这个地址:00440F1E,F7进入

00440F1E    E8 FD480300   call DRW.00475820        //   F7进入               ; //这里就里所谓的关键CALL。。。。。。。。
00440F23    85C0          test eax,eax
00440F25    75 56         jnz short DRW.00440F7D                     ; //这里当然就里关键跳了,注册信息正确跳向成功。。改里可以爆破它,我们今天的目的不是爆破,而是追注册码.
00440F27    68 F3EF0000   push 0EFF3
00440F2C    8D4D F0       lea ecx,dword ptr ss:[ebp-10]
00440F2F    E8 E49F0300   call <jmp.&MFC42.#4160>
00440F34    68 37EF0000   push 0EF37
00440F39    8D4D EC       lea ecx,dword ptr ss:[ebp-14]
00440F3C    E8 D79F0300   call <jmp.&MFC42.#4160>
00440F41    6A 10         push 10
00440F43    8D4D EC       lea ecx,dword ptr ss:[ebp-14]
00440F46    E8 A578FEFF   call DRW.004287F0
00440F4B    50            push eax
00440F4C    8D4D F0       lea ecx,dword ptr ss:[ebp-10]
00440F4F    E8 9C78FEFF   call DRW.004287F0
00440F54    50            push eax

F7进入后来到这里
00475820    55            push ebp     //F7来到这里
00475821    8BEC          mov ebp,esp
00475823    8B4D 0C       mov ecx,dword ptr ss:[ebp+C]
00475826    E8 C52FFBFF   call DRW.004287F0
0047582B    50            push eax
0047582C    8B4D 08       mov ecx,dword ptr ss:[ebp+8]
0047582F    E8 BC2FFBFF   call DRW.004287F0
00475834    50            push eax
00475835    E8 57F7FFFF   call DRW.00474F91
0047583A    5D            pop ebp
0047583B    C2 0800       retn 8
继续F8,来到这个地址:00475835,F7进入.

00475820    55            push ebp
00475821    8BEC          mov ebp,esp
00475823    8B4D 0C       mov ecx,dword ptr ss:[ebp+C]
00475826    E8 C52FFBFF   call DRW.004287F0
0047582B    50            push eax                                   ; 出现假注册码.........
0047582C    8B4D 08       mov ecx,dword ptr ss:[ebp+8]
0047582F    E8 BC2FFBFF   call DRW.004287F0
00475834    50            push eax
00475835    E8 57F7FFFF   call DRW.00474F91                          ; 一路F8来到这里
0047583A    5D            pop ebp
0047583B    C2 0800       retn 8
按F7来到这里:
00474F91    55            push ebp
00474F92    8BEC          mov ebp,esp
00474F94    81EC AC0A0000 sub esp,0AAC
00474F9A    C785 78FBFFFF>mov dword ptr ss:[ebp-488],950B4B61//下面很多MOV指令,实现软件注册算法
00474FA4    66:C785 7CFBF>mov word ptr ss:[ebp-484],0FA41
00474FAD    66:C785 7EFBF>mov word ptr ss:[ebp-482],4DC2
00474FB6    C685 80FBFFFF>mov byte ptr ss:[ebp-480],0AD
00474FBD    C685 81FBFFFF>mov byte ptr ss:[ebp-47F],7E
00474FC4    C685 82FBFFFF>mov byte ptr ss:[ebp-47E],63
00474FCB    C685 83FBFFFF>mov byte ptr ss:[ebp-47D],0CF
00474FD2    C685 84FBFFFF>mov byte ptr ss:[ebp-47C],62
00474FD9    C685 85FBFFFF>mov byte ptr ss:[ebp-47B],11
一路F8来到这里可以看到我们输入的信息,下面按F8就可以看到一些我们想要的信息
004751E6    837D 08 00    cmp dword ptr ss:[ebp+8],0                 ; 显示假注册名.....
004751EA    74 06         je short DRW.004751F2
004751EC    837D 0C 00    cmp dword ptr ss:[ebp+C],0                 ; 显示假注册码.....
004751F0    75 07         jnz short DRW.004751F9
004751F2    33C0          xor eax,eax
004751F4    E9 1D030000   jmp DRW.00475516
...................//省略了一些指令

.. .............................

................................
////////////////////////////////////////////////////////F8来到这里,"//"中间的是假注册码与真注册码进入比较
004753E1    8B85 74FBFFFF mov eax,dword ptr ss:[ebp-48C]
004753E7    83C0 01       add eax,1
004753EA    8985 74FBFFFF mov dword ptr ss:[ebp-48C],eax
004753F0    83BD 74FBFFFF>cmp dword ptr ss:[ebp-48C],4
004753F7    73 3B         jnb short DRW.00475434
004753F9    8B8D 74FBFFFF mov ecx,dword ptr ss:[ebp-48C]
004753FF    8B948D 58F9FF>mov edx,dword ptr ss:[ebp+ecx*4-6A8]
00475406    52            push edx
00475407    68 E42C4A00   push DRW.004A2CE4                          ; ASCII "%.8x-"
0047540C    8D85 54F5FFFF lea eax,dword ptr ss:[ebp-AAC]
00475412    50            push eax
00475413    FF15 443A4800 call dword ptr ds:[<&MSVCRT.sprintf>]      ; MSVCRT.sprintf
00475419    83C4 0C       add esp,0C
0047541C    8D8D 54F5FFFF lea ecx,dword ptr ss:[ebp-AAC]             ; 每循环一次显示8位真注册码
00475422    51            push ecx
00475423    8D95 54F7FFFF lea edx,dword ptr ss:[ebp-8AC]             ; 假注册码
00475429    52            push edx
0047542A    E8 F9640000   call <jmp.&MSVCRT.strcat>
0047542F    83C4 08       add esp,8
00475432  ^ EB AD         jmp short DRW.004753E1

////////////////////////////////////////////////////////////

00475434    8D85 54F7FFFF lea eax,dword ptr ss:[ebp-8AC]
0047543A    50            push eax
0047543B    FF15 E0394800 call dword ptr ds:[<&MSVCRT._strupr>]      ; MSVCRT._strupr
00475441    83C4 04       add esp,4
00475444    8D8D 54F7FFFF lea ecx,dword ptr ss:[ebp-8AC]
0047544A    51            push ecx
0047544B    E8 22610000   call <jmp.&MSVCRT.strlen>
00475450    83C4 04       add esp,4
00475453    C68405 53F7FF>mov byte ptr ss:[ebp+eax-8AD],0
0047545B    8D95 54F7FFFF lea edx,dword ptr ss:[ebp-8AC]             ; 这里得到全部注册码
00475461    52            push edx
00475462    E8 0B610000   call <jmp.&MSVCRT.strlen>
00475467    83C4 04       add esp,4

到此追出
注册名:hack52
注册码:11111111-E8847134-5B1824CA-63414152-81F6FA1F
输入注册码,重起软件就没有注册按钮了.

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 269
活跃值: (51)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
学习这个软件的算法过程。
2010-5-22 15:41
0
雪    币: 2165
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问楼主注册码直接在 EDX 明码显示出来吗?
2010-5-22 15:50
0
雪    币: 5
活跃值: (369)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
虽然我也是破解版。  但是我还是不太喜欢贴出这个。。。。。。。要不楼主把题目改下吧
2010-5-23 00:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习过程,这个软件效果不错,我试过。
2010-5-23 11:17
0
雪    币: 1085
活跃值: (114)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
6
今天又看到一篇好文章。易我数据恢复向导V2.0
我用过。
2010-5-24 18:15
0
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
如果能把算法过程写出来就好!
2010-5-24 19:14
0
游客
登录 | 注册 方可回帖
返回
//