文章标题】: 破解------易我数据恢复向导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期)