AZPR3.0的脱壳教程.
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />使用工具:
TRW2000 1.03
ProcDump 1.6.2
Hexworkshop 3.02
比起其Beta版来,AZPR 3.0正式版的保护更为加强. 1. 对Softice的多处Check,用FrogsICE不能完全骗过; 2. CRC的校验; 3. 动态地址(好象是这个名吧?); 4.对Loader的防范,这回用Process Patch不行了.
用Softice跟踪它会是一种痛苦 (当然完全可以用Softice,只是你要了解程序的Anti-debugger技巧,在关键的Check后改变跳转方向). 这次祭出我们中国人的骄傲TRW2000来对付它.
先用Procdump的PE Editor查看一下程序的.idata section记下数值. Virtual size=2000, Virtual offset=21000. 另外,记下程序的Image Base: 400000.
1. 运行TRW, Load程序. 程序中断在入口处. 但接下来无论是否BPX设断只要G继续运行程序,便会出错. 下Faults off, G, OK程序退出.
2. 试BPM 421000 (.idata的offset), 再Load程序. G, 程序可以被正常中断, COOL!
3. G,当程序第三次(? 记不清了. 原则是d 421000显示的data区见到XXXX0200 000000字样)中断时,BD*,F10直到下面的语句
*********************************
注意: 程序每次Load时Offset都不一样,你的机器中的XXXX:YYYYYYYY肯定和下面的不同. 下Code on指令,这样才好参照下面的代码. 另外,下面所摘的几段代码是引用高手tiamath的.因为我不清楚在TRW下如何dump屏幕 (谁能指教一下:);而用ICEDump的pagein n命令来Dump Softice的屏幕,我的机器会死机. :(
*********************************
0167:004F34CD 50 PUSH EAX
0167:004F34CE B890274F00 MOV EAX,004F2790
0167:004F34D3 50 PUSH EAX
0167:004F34D4 B8A4274F00 MOV EAX,004F27A4
0167:004F34D9 50 PUSH EAX
0167:004F34DA B8A0284F00 MOV EAX,004F28A0
0167:004F34DF 50 PUSH EAX
0167:004F34E0 B8AC274F00 MOV EAX,004F27AC
0167:004F34E5 50 PUSH EAX
0167:004F34E6 B8646C4E00 MOV EAX,004E6C64
0167:004F34EB 50 PUSH EAX
0167:004F34EC 8B4508 MOV EAX,[EBP+08]
0167:004F34EF 8D4824 LEA ECX,[EAX+24]
0167:004F34F2 8B4508 MOV EAX,[EBP+08]
0167:004F34F5 8B500C MOV EDX,[EAX+0C]
0167:004F34F8 8B4508 MOV EAX,[EBP+08]
0167:004F34FB 8B4008 MOV EAX,[EAX+08]
0167:004F34FE E899F4FFFF CALL 004F299C
0167:004F3503 33C0 XOR EAX,EAX <--在这里Dump .idata
下指令 W 421000 L 2000 azprdata.bin
OK. 再往下,直到
0167:004F3637 8D4818 LEA ECX,[EAX+18]
0167:004F363A 8B4508 MOV EAX,[EBP+08]
0167:004F363D 8B10 MOV EDX,[EAX]
0167:004F363F 8B4508 MOV EAX,[EBP+08]
0167:004F3642 8B401C MOV EAX,[EAX+1C]
0167:004F3645 E8EAF6FFFF CALL 004F2D34 <--F8进入
0167:004F364A 5F POP EDI
0167:004F364B 5E POP ESI
到了
0167:004F2D72 E9148B1DA8 JMP A86CB88B
0167:004F2D77 8E4F00 MOV CS,[EDI+00]
0167:004F2D7A EB01 JMP 004F2D7D
0167:004F2D7C EB89 JMP 004F2D07
0167:004F2D7E 041C ADD AL,1C
0167:004F2D80 EB02 JMP 004F2D84
0167:004F2D82 EBE8 JMP 004F2D6C
0167:004F2D84 61 POPAD
0167:004F2D85 EB01 JMP 004F2D88
0167:004F2D87 E850EB02E9 CALL E95218DC
0167:004F2D8C 17 POP SS
0167:004F2D8D E802000000 CALL 004F2D94
0167:004F2D92 E91758C35E JMP 5F1285AE
0167:004F2D97 5B POP EBX
0167:004F2D98 59 POP ECX
此时小心地跟踪,碰到JMP时按F8而不要按F10
直到显示变成
0167:004F2D72 E9148B1DA8 JMP A86CB88B
0167:004F2D77 8E4F00 MOV CS,[EDI+00]
0167:004F2D7A EB01 JMP 004F2D7D
0167:004F2D7C EB89 JMP 004F2D07
0167:004F2D7E 041C ADD AL,1C
0167:004F2D80 EB02 JMP 004F2D84
0167:004F2D82 EBE8 JMP 004F2D6C
0167:004F2D84 61 POPAD
0167:004F2D85 EB01 JMP 004F2D88
0167:004F2D87 E850EB02E9 CALL E95218DC
0167:004F2D8C 17 POP SS
0167:004F2D8D E802000000 CALL 004F2D94
0167:004F2D92 E91758C35E JMP 5F1285AE
0167:004F2D94 58 POP EAX <-- 光标位于此行时, EAX=401000
0167:004F2D95 C3 RET <--这里
下Suspend指令. 回到Windows. 用ProcDump来Dump(full)脱壳的程序,得到azprdump.exe. 你也可以用TRW的PEDUMP命令来得到脱壳程序,但我个人的经验很容易死机,所以我宁愿用ProcDump来做.
4. 用PE Editor修改程序的Entry Point为1000. 并查看脱壳后程序的.idata section. 此时Raw size=1670, Raw offset=1FC00. 修改Directory中Import Table的RVA=21000,SIZE=1670.
5. 用Hexworkshop打开azprdump.exe和azprdata.bin. Goto到exe文件的1FC00偏移处,Select Block大小为1670. 拷贝.bin文件的同样大小(1670)的Block,粘贴到exe文件中以替换掉不正确的.idata section.
现在,再试着运行程序,应该可以正常运行了. 如果程序出错,再做一件事: 把 .bss section的raw size值改为00000000 (高手tiamath的建议).
有了脱壳的程序,大家应该会Patch它成为注册版了吧. 只需改一个字节.
结语: 用本文所描述的方法,可以对绝大多数Asprotect+Aspack保护的程序进行成功的脱壳. 大家读完这篇教程,不妨找几个程序开刀. 比方说,The Bat! 1.39现在不应该再难住大家了.
好了,这次就到这儿了,下回见.
致谢:
转载于:https://www.cnblogs.com/Element/archive/2004/10/11/50692.html
AZPR3.0的脱壳教程.相关推荐
- .Net Reactor 5脱壳教程
原文:.Net Reactor 5脱壳教程 今天别人发来一个.Net的DLL让我脱壳,第一步自然是先扔进de4dot 我这个de4dot 是集成了 Ivancito0z / TheProxy / P ...
- centos 下安装mysql,linux(Centos7)下安装mysql8.0.18的教程图解
1 获取安装资源包 mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar 提取码: rsif 2 在/usr/local目录下新建目录mysql8 3 将下载的资源包(my ...
- 在ASP.NET 2.0中操作数据教程系列
在ASP.NET 2.0中操作数据教程系列 Scott Mitchell最近完成了为 www.asp.net 网站撰写的<在ASP.NET 2.0中操作数据 (Working with Data ...
- linux mysql8.0 rpm安装_Linux(CentOS7)使用 RPM 安装 mysql 8.0.11的教程
这篇文章主要介绍了Linux(CentOS7)使用 RPM 安装 mysql 8.0.11的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参 ...
- mysql安装教程8.0.21安装_mysql8.0.21安装教程图文详解
1.下载 下载链接 点击download,这里可能需要登录甲骨文的账号,登录一下即可 2.解压 下载好会得到一个安装包 把它解压到一个能找到的目录下即可,我的是这样(my.ini文件你们应该没有) 3 ...
- Mysql8.0.12安装教程方法 Mysql8.0.12安装教程
Mysql8.0.12安装教程方法 Mysql8.0.12安装教程 MySql安装教程 - 首先,MySql官网下载地址: 官网下载地址 主要下载server版本的 Archive版本,不需要安装解压 ...
- mysql安装教程8.0.21安装,Windows系统下MySQL8.0.21安装教程(图文详解)
安装建议:尽量不要用.exe进行安装,用压缩包安装,对日后的卸载/版本升级更为方便 下载地址:https://dev.mysql.com/downloads/mysql/ 1.点击上面的下载地址得到z ...
- Windows10最新MySQL8.0.23安装教程(超级详细)
MySQL8.0.23安装教程 一.下载地址 二.安装步骤 2.1 解压 2.2 创建my.ini配置文件 2.3 配置系统环境变量 2.4 打开CMD命令窗口 2.5 安装服务 2.6 启动服务 2 ...
- linux下安装mysql_Linux下安装mysql-8.0.20的教程详解
** Linux下安装mysql-8.0.20 ** 环境介绍 操作系统:CentOS 7 mysql下载地址:https://dev.mysql.com/downloads/mysql/ 下载版本: ...
- mysql压缩包安装教程8.0.19,win10安装zip版MySQL8.0.19的教程详解
win10安装zip版MySQL8.0.19的教程详解 一. 下载后解压到想安装的目录 二. 在安装目录中添加配置文件my.ini [mysqld] # 设置3306端口 port=3306 # 设置 ...
最新文章
- HTML封装AJAX请求,在请求里面写登录的逻辑 ajax 网络请求 post
- R语言绘图设备dev
- AI赋能案例—阿里云身份证OCR识别助力实现“无接触”式政务服务!
- P1421 小玉买文具【入门题】
- mysql在jsp的导包语句_JSP+MYSQL中如何正确使用JDBC包?
- SqlServer中Group By高级使用--Inner Join分组统计
- Atitit onvif 协议截图 getSnapshotUri 使用java
- C++迭代器(STL迭代器)
- 实验:进程调度算法(C语言)
- 腾讯内部出品Android编程入门教程,快快收藏吧!!!
- 9、IPA通路分析相关网页教程
- 稻盛和夫自传读书笔记
- Discuz淘宝客网站模板/迪恩淘宝客购物风格商业版模板
- 图书馆管理系统需求规格说明书
- vue中的key有什么作用?(key的内部原理)
- 【Python】解决使用 plt.savefig 保存图片时一片空白
- 【项目】好用快搜文档搜索工具
- python经典教程_零基础 Python爬虫经典实战教程
- 安装caffe中间遇到的一些问题
- 数学基础task04 一元函数微分学的几何应用