庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>安全技术>软件破解>脱壳技术>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

怎样脱用 Aspack2.12 加的壳(适合初学者)

 作者:本站收集   日期:2005-5-28
字号选择〖 〗/ 双击滚屏 单击停止   
今天上网下载了个 Aspack2.12,不知它的加壳有没有变化,让我们来看看。
试验对象是 Windows 自带的记事本程序,压缩前 52KB,压缩后 32.5KB。好,开工了。

先用 fi 检查壳的类型,报告显示 PE Win GUI *UNKNOWN*,没关系,自己加的壳还用怀疑吗。
接着用 Trw2000 加载程序,Load,程序被中断在如下代码处

0167:0040D001 60 PUSHAD
0167:0040D002 E803000000 CALL 0040D00A

按 F8 跟进去(这时如果按 F10 的话程序会直接运行)

0167:0040D00A 5D POP EBP
0167:0040D00B 45 INC EBP
0167:0040D00C 55 PUSH EBP
0167:0040D00D C3 RET

按一下 F10 看到下面的代码

0167:0040D008 EB04 JMP 0040D00E

按一下 F10 看到下面的代码

0167:0040D00E E801000000 CALL 0040D014

按 F8 跟进去,来到下面

0167:0040D014 5D POP EBP
0167:0040D015 BBEDFFFFFF MOV EBX,FFFFFFED
0167:0040D01A 03DD ADD EBX,EBP
0167:0040D01C 81EB00D00000 SUB EBX,0000D000
0167:0040D022 83BD2204000000 CMP DWord Ptr [EBP+00000422],00000000
0167:0040D029 899D22040000 MOV [EBP+00000422],EBX
0167:0040D02F 0F8565030000 JNZ 0040D39A (NO JUMP) <--- 注意,下断点 bpx 0040D39A
0167:0040D035 8D852E040000 LEA EAX,[EBP+0000042E]
0167:0040D03B 50 PUSH EAX
0167:0040D03C FF954D0F0000 CALL Near [`KERNEL32!GetModuleHandleA`]
0167:0040D042 898526040000 MOV [EBP+00000426],EAX
0167:0040D048 8BF8 MOV EDI,EAX
0167:0040D04A 8D5D5E LEA EBX,[EBP+5E]
0167:0040D04D 53 PUSH EBX
0167:0040D04E 50 PUSH EAX
0167:0040D04F FF95490F0000 CALL Near [`KERNEL32!GetProcAddress`]

下断点后,按 F5,程序来到下面的代码处

0167:0040D39A B8CC100000 MOV EAX,000010CC
0167:0040D39F 50 PUSH EAX
0167:0040D3A0 038522040000 ADD EAX,[EBP+00000422]
0167:0040D3A6 59 POP ECX
0167:0040D3A7 0BC9 OR ECX,ECX
0167:0040D3A9 8985A8030000 MOV [EBP+000003A8],EAX
0167:0040D3AF 61 POPAD <--- 关键字,入口点就在附近
0167:0040D3B0 7508 JNZ 0040D3BA
0167:0040D3B2 B801000000 MOV EAX,00000001
0167:0040D3B7 C20C00 RET 000C
0167:0040D3BA 6800000000 PUSH 00000000
0167:0040D3BF C3 RET <--- 从这返回后我们就来到程序的真正入口点

下面就是程序的真正入口点

0167:004010CC 55 PUSH EBP
0167:004010CD 8BEC MOV EBP,ESP
0167:004010CF 83EC44 SUB ESP,00000044
0167:004010D2 56 PUSH ESI
0167:004010D3 FF15E4634000 CALL Near [`KERNEL32!GetCommandLineA`]

返回到真正入口点后,下指令 suspend 挂起调试器,打开 PEditor,按下 tasks 按钮,在列表中选中你的程序,点右键,选择菜单命令 dump(full) 把进程保存到文件中,保存后杀掉进程。

上面的方法对其它的程序也一样适用(我测试了好几个程序,它们在调试器所显示的代码形式都差不多),用这种方法脱壳后的程序可以直接运行。

附上 Procdump 的 Script:
[Aspack2.12]
L1=OBJR
L2=LOOK 61,75
L3=BP
L4=STEP
OPTL1=00000000
OPTL2=01010001
OPTL3=01010001
OPTL4=00030000
OPTL5=00000000
上一篇:EZIP1.0脱壳手记    下一篇:手动脱壳的基本技巧(1)  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-5-28
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿