-
-
[旧帖]
[原创]手脱RLPack1.21完全版
0.00雪花
-
发表于:
2009-8-31 19:07
3522
-
[旧帖] [原创]手脱RLPack1.21完全版
0.00雪花
【破文标题】手脱RLPack1.21完全版
【破文作者】冷烟
【作者邮箱】chengudan@qq.com
【破解工具】exeinfope,OD,lordPE,Import REC 1.7
【破解平台】windows XP sp3
【软件名称】记事本
【软件大小】65K
【原版下载】windows xp里都有
【保护方式】RLPack v.1.20.1 Full Edition
【软件简介】winXP里的记事本
【破解声明】此次的RLPACK只是压缩和加密输入表,并不是最大强度
------------------------------------------------------------------------
【破解过程】
首先 exeinfope0.0.2.4 查壳 为RLPack v.1.20.1 Full Edition (EXE- aPLib 0.43 / LZMA 4.3x )
那咱们就话不多说 OD忽略所有异常 载入程序
首先先单步 然后ESP定律 下硬件断点 F9两次后 来到这里
01022513 60 pushad
01022514 E8 00000000 call NOTEPAD.01022519
01022519 83C4 04 add esp,4
0102251C 8B6C24 FC mov ebp,dword ptr ss:[esp-4]
01022520 E8 8B020000 call NOTEPAD.010227B0
01022525 E8 74240000 call NOTEPAD.0102499E
0102252A E8 88430000 call NOTEPAD.010268B7
0102252F 837C24 28 01 cmp dword ptr ss:[esp+28],1
01022534 75 0C jnz short NOTEPAD.01022542
01022536 8B4424 24 mov eax,dword ptr ss:[esp+24]
0102253A 8985 7E470000 mov dword ptr ss:[ebp+477E],eax
01022540 EB 0C jmp short NOTEPAD.0102254E
01022542 8B85 7A470000 mov eax,dword ptr ss:[ebp+477A]
01022548 8985 7E470000 mov dword ptr ss:[ebp+477E],eax
0102254E E8 100D0000 call NOTEPAD.01023263
01022553 EB 03 jmp short NOTEPAD.01022558
01022555 24 00 and al,0
01022557 00EB add bl,ch
取消断点 继续F8单步向下,遇到向上的跳,就F4执行到跳转下条指令
期间有很多CALL与跳转 不管他 继续向下
向下后 到达这里 看见地下一个看不见头的大跳转 就知道是找到OEP了
0102276A E8 B0350000 call NOTEPAD.01025D1F
0102276F 68 00400000 push 4000
01022774 68 DA030000 push 3DA
01022779 FFB5 71550000 push dword ptr ss:[ebp+5571]
0102277F FF95 05040000 call dword ptr ss:[ebp+405]
01022785 EB 03 jmp short NOTEPAD.0102278A
01022787 2200 and al,byte ptr ds:[eax]
01022789 00E8 add al,ch
0102278B CC int3
0102278C 34 00 xor al,0
0102278E 00E8 add al,ch
01022790 DF ??? ; 未知命令
01022791 0B00 or eax,dword ptr ds:[eax]
01022793 00E8 add al,ch
01022795 850A test dword ptr ds:[edx],ecx
01022797 0000 add byte ptr ds:[eax],al
01022799 83BD 0C4E0000 0>cmp dword ptr ss:[ebp+4E0C],0
010227A0 74 07 je short NOTEPAD.010227A9
010227A2 E9 10100000 jmp NOTEPAD.010237B7
010227A7 EB 01 jmp short NOTEPAD.010227AA
010227A9 61 popad
010227AA - E9 EE4BFEFF jmp NOTEPAD.0100739D ; 这里跟入 就直接达到OEP
010227AF 90 nop
010227B0 60 pushad
010227B1 6A 40 push 40
010227B3 68 00100000 push 1000
010227B8 68 00000800 push 80000
010227BD 6A 00 push 0
010227BF FF95 FD030000 call dword ptr ss:[ebp+3FD]
我们单步 直接到达OEP
0100739D 6A 70 push 70 ; 这里就是OEP了 记事本的
0100739F 68 98180001 push NOTEPAD.01001898
010073A4 E8 BF010000 call NOTEPAD.01007568
010073A9 33DB xor ebx,ebx
010073AB 53 push ebx
010073AC 8B3D CC100001 mov edi,dword ptr ds:[10010CC] ; kernel32.GetModuleHandleA
010073B2 FFD7 call edi
010073B4 66:8138 4D5A cmp word ptr ds:[eax],5A4D
010073B9 75 1F jnz short NOTEPAD.010073DA
010073BB 8B48 3C mov ecx,dword ptr ds:[eax+3C]
010073BE 03C8 add ecx,eax
010073C0 8139 50450000 cmp dword ptr ds:[ecx],4550
010073C6 75 12 jnz short NOTEPAD.010073DA
010073C8 0FB741 18 movzx eax,word ptr ds:[ecx+18]
010073CC 3D 0B010000 cmp eax,10B
010073D1 74 1F je short NOTEPAD.010073F2
010073D3 3D 0B020000 cmp eax,20B
010073D8 74 05 je short NOTEPAD.010073DF
010073DA 895D E4 mov dword ptr ss:[ebp-1C],ebx
010073DD EB 27 jmp short NOTEPAD.01007406
010073DF 83B9 84000000 0>cmp dword ptr ds:[ecx+84],0E
直接使用OllyDump插件脱壳 保存为dump.exe 使用lordPE 重建文件PE头 无法运行
再打开Import REC 1.7 输入OEP地址 点搜索 提示找到 再点获取 无无效指针
修复转存文件 正常运行 也可以先修复指针 再重建PE 发现这样修复后的文件较小
------------------------------------------------------------------------
【破解总结】自己给记事本加个壳,然后自己脱,是很好的学习方法
这次脱的壳比较简单 以后还需提高
------------------------------------------------------------------------
希望能申请到个邀请码 继续学习
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)