脱壳技术,Blaze Media Pro5.05脱壳+基本修复CC(int3)+破解(三)(图),Media 2008年06月23日 星期一 下午 04:03 在(二)中我们得到了四张表 : int3地址表 (实际地址 1) 跳转类型表 跳转量表 跳转命令长度表 (实际长度-1) 在OD中打开已脱壳程序,现在壳已经是垃圾了,我们就用用它的空间吧。把前面保存的连续的四个表拷贝到壳开始的空间,我这儿是9d1000。得到: 9d1000~9d5f00 int3地址表 9d5f00~9dae00 跳转类型表 9dae00~9dfd00 跳转量表 9dfd00~9e4c00 跳转命令长度表 随便找个地方写入下列代码: 009E4C04 XOR ECX, ECX 009E4C06 MOV EAX, DWORD PTR DS:[ECX*4 9D1000] //取出int3地址 009E4C0E CMP EAX, 0 009E4C11 JE SHORT dumped_.009E4C80 009E4C13 MOVZX EDX, BYTE PTR DS:[ECX 9D5F00] //跳转类型 009E4C1A MOV EBX, DWORD PTR DS:[ECX*4 9DAE00] //跳转量 009E4C22 MOVZX EDI, BYTE PTR DS:[ECX 9DFD00] //跳转命令长度 009E4C29 DEC EAX 009E4C2A INC ECX 009E4C2B CMP DWORD PTR DS:[EAX], EC8B55CC //进一步排除无效的int3 009E4C31 JE SHORT dumped_.009E4C06 009E4C33 CMP BYTE PTR DS:[EAX-1], 0CC 009E4C37 JE SHORT dumped_.009E4C06 009E4C39 CMP BYTE PTR DS:[EAX 1], 0CC 009E4C3D JE SHORT dumped_.009E4C06 009E4C3F NOP 009E4C40 CMP EDI, 1 009E4C43 JNZ SHORT dumped_.009E4C4E 009E4C45 MOV BYTE PTR DS:[EAX], DL 009E4C47 DEC BL 009E4C49 MOV BYTE PTR DS:[EAX 1], BL 009E4C4C NOP 009E4C4D NOP 009E4C4E CMP EDI, 5 009E4C51 JNZ SHORT dumped_.009E4C64 009E4C53 MOV BYTE PTR DS:[EAX], 0F 009E4C56 ADD DL, 10 009E4C59 MOV BYTE PTR DS:[EAX 1], DL 009E4C5C SUB EBX, 5 009E4C5F MOV DWORD PTR DS:[EAX 2], EBX 009E4C62 NOP 009E4C63 NOP 009E4C64 CMP EDI, 4 009E4C67 JNZ SHORT dumped_.009E4C79 009E4C69 CMP DL, 0EB 009E4C6C JNZ SHORT dumped_.009E4C79 009E4C6E MOV BYTE PTR DS:[EAX], 0E9 009E4C71 SUB EBX, 4 009E4C74 MOV DWORD PTR DS:[EAX 1], EBX 009E4C77 NOP 009E4C78 NOP 009E4C79 JMP dumped_.009E4BFA 009E4C7E NOP 009E4C7F NOP 009E4C80 NOP 在009E4C04处New origin here,在009E4C80下断,运行停住。修复了大部分int3。把修复好的程序另存为一文件。 现在工作结束了吗?答案是没有。你运行修复的文件看看,还出错。如下代码: 006539B4 85C9 TEST ECX, ECX 006539B6 CC INT3 006539B7 7A C7 JPE SHORT dumped_.00653980 006539B9 45 INC EBP 006539BA FC CLD 006539BB 2E:0000 ADD BYTE PTR CS:[EAX], AL 006539BE 00CC ADD AH, CL //这里的cc也是int3 006539C0 B7 8A MOV BH, 8A 006539C2 71 0A JNO SHORT dumped_.006539CE 把006539B6处的int3修复好以后,变成如下代码: 006539B4 85C9 TEST ECX, ECX 006539B6 75 12 JNZ SHORT dumped_1.006539CA 006539B8 C745 FC 2E000000 MOV DWORD PTR SS:[EBP-4], 2E 006539BF CC INT3 006539C0 B7 8A MOV BH, 8A 006539C2 71 0A JNO SHORT dumped_1.006539CE 这时在006539BF处的在OD才显示正确的int3。 怎么办?你得把修复的文件按照(二)(三)中的步骤再来一遍。麻烦吧。经过两次修复后,程序终于可以正常运行了,但有些功能不能用,还没破解。 (三)破解 破解我就不详细说了。vb程序,挺麻烦的。 1、功能破解: 从401000开始查找unicode码“DAYSLEFT”,在4876b0。在4876c8处有一unicode码“20",清0即可。 从401000开始查找unicode码“DAYSLEFT”,在4876b0。在4876c8处有一unicode码“20",改成0即可。 2、about菜单显示: 从401000开始查找unicode码“Registered to”,在49e904。然后查找命令“push 49e904”可以定位about菜单的代码。 00842120 PUSH dumped_c.0049E904 ; UNICODE "Registered To: " 00842125 PUSH EDX 00842126 MOV EBX, DWORD PTR DS:[ESI] 00842128 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCa>; msvbvm60.__vbaStrCat 修改: 00841F4F JE dumped_c.0084216F JE->JNE 00841FF2 JE BMP_crac.008420AE JE->JNE pyzpyz 2004.4.22 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 23:23 , Processed in 0.141790 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.