4.1、Import REConstructor使用
Import REConstructor可以从杂乱的IAT中重建一个新的Import表(例如加壳软件等),它可以重建Import表的描述符、IAT和所有的ASCII函数名。用它配合手动脱壳,可以脱UPX、CDilla1、PECompact、PKLite32、Shrinker、ASPack, ASProtect等壳。该工具位于:光盘\tools\PE tools\Rebuilders\Import REConstructor。
在运行Import REConstructor之前,必须满足如下条件:
1) 目标文件己完全被Dump到另一文件;
2) 目标文件必须正在运行中;
3) 事先要找到真正的入口点(OEP);
4) 最好加载IceDump,这样建立的输入表较少存在跨平台的问题。
步骤如下:
(1)找被脱壳的入口点(OEP);
(2)完全Dump目标文件;
(3)运行Import REConstructor和需要脱壳的应用程序;
(4)在Import REConstructor下拉列表框中选择应用程序进程;
(5)在左下角填上应用程序的真正入口点偏移(OEP);
(6)按"IAT AutoSearch"按钮,让其自动检测IAT位置, 出现"Found address which may be in the Original IAT.Try 'Get Import'"对话框,这表示输入的OEP发挥作用了。
(7)按"Get Import"按钮,让其分析IAT结构得到基本信息;
(8)如发现某个DLL显示"valid :NO" ,按"Show Invalids"按钮将分析所有的无效信息,在Imported Function Found栏中点击鼠标右键,选择"Trace Level1 (Disasm)",再按"Show Invalids"按钮。如果成功,可以看到所有的DLL都为"valid:YES"字样;
(9)再次刷新"Show Invalids"按钮查看结果,如仍有无效的地址,继续手动用右键的Level 2或3修复;
(10)如还是出错,可以利用"Invalidate function(s)"、"Delete thunk(s)"、编辑Import表(双击函数)等功能手动修复。
(11)开始修复已脱壳的程序。选择Add new section (缺省是选上的) 来为Dump出来的文件加一个Section(虽然文件比较大,但避免了许多不必要的麻烦) 。
(12)按"Fix Dump"按钮,并选择刚在(2)步Dump出来的文件,在此不必要备份。如修复的文件名是"Dump.exe",它将创建一个"Dump_.exe",此外OEP也被修正。
(13)生成的文件可以跨平台运行。
4.2、ReVirgin 使用指南 (作者:blowfish)
ReVirgin(简称RV)
功能: 重建Import Table;寻找OEP
下载地址: http://www.woodmann.com/fravia/index.htm
具体地址是:http://www.woodmann.com/fravia/exe/revirgin.zip
一、安装。
1、自动安装:
直接双击*.msi就会自动激活Windows Installer进行安装,这是最省事的办法。如果你的系统太老,可能需要到微软主页上免费下载Windows Installer的包。
2、手动安装:
可以用WinRAR将*.msi解开到某个目录中。然后把tracer.dll、thread.dll拷贝到%SystemRoot%目录下;对于NT/2K/XP系统,把rvtracer.sys拷贝到%SystemRoot%\system32\drivers目录中。
二、重建IT
1、首先选择被加壳的程序所对应的进程。如果找不到则点击refresh按钮。
2、再找被加壳了的程序的OEP。找OEP的方法主要有:用IceDump的/tracex;用冲击波;手动用debugger跟;利用各种编译器生成的可执行程序的startup code的机器码的pattern来找;利用RV自带的tracer来找。
3、找到OEP之后将其填入RV的相应位置(注意要填VA而不是RVA),然后点击“Fetch IAT”,RV会自动分析出IAT的起始RVA和Length。如果你觉得RV找到的不对,你也可以手动找到这个RVA和Length并填入该位置。
4、然后点击“IAT Resolver”按钮,RV会自动分析,可能要等好几分钟。这时CPU占用率很高,最好不要切换到其它程序。
5、分析完之后会看到一些API函数标记为“redirected/emulated”,此时点击“Resolve again”,大部分函数都可以resolve出来。
6、然后在下拉列表中选择“Show unresolved”,因为此时只关心尚未分析出来的API函数。
在函数列表框中选中一个或多个函数(按住shift可以选多个),然后打开右键菜单。对于每个未分析出来的API函数,你可以试试右键菜单中的“tracer”或“API Emulator”,如果RV能够分析出来,则相应的行会变成“traced”或“emulated”状态,并且Address这一列会指向DLL的地址范围。
一旦变成“traced”或“emulated”状态,则你可以再次点击“resolve again”按钮,这些API函数将会被分析出来。
注:
a、未分析出来的函数很多时,最好不要用右键菜单中的“Trace all”,后果你试试就知道了;
b、右键菜单中的edit是个开关,表示列表中的每列是否可以编辑,此时可以手动输入API函数的相关信息(但这里似乎有bug,因为即使你手动把未分析出来的函数都手动填入了,RV仍说没有全部分析完)。
c、右键菜单中的Tracer功能可能会导致被跟踪的程序出现非法操作,所以最好是随时使用“Save resolved”按钮的功能把阶段性结果存为文本文件,一旦出现非法操作还可以用“Load resolved”功能把以前的结果加载进来继续干活。
7、对所有的API函数重复5、6两步,大部分都可以分析出来。剩下的那些基本上要用debugger来手动分析了。
8、所有的API函数都分析出来之后,就可以生成IT信息,并粘贴到脱壳后的文件中。首先你得确定把生成的IT放在程序的什么位置,一般是放在末尾(此时要添加一个section),但实际上可以放在任何合理的位置。
把存放IT的位置的RVA填入,并点击“generate”按钮。如果选中了“Auto fix sections + IT Paste”,则RV会问你脱壳后的exe文件名并自动把IT粘贴进去(但目前的版本没有帮你修改程序的OEP,你得手动修改粘贴好的程序的OEP),并生成一个BIN文件,这个BIN文件是由IT、IAT、DLL名和函数名组成的,供你手动粘贴用(如果你喜欢手动粘贴的话)。
至此重建IT完毕。
三、其它说明:
1、RV的mangled scheme选项是用来对付那种将多个API重定向到同一个函数的壳的,一般用不上。
2、RV的底部的“Tracer”按钮是用来跟踪程序找OEP的,功能也很强。 只需要指定OEP可能存在于什么范围(给出最小值、最大值),当被跟踪的程序的EIP落在此区间时RV就会停下来。这和利用IceDump的/tracex来找OEP有些相似。
3、API函数列表中的Refs这一列是该函数的引用计数。
4、最好是在OEP处将被加壳的进程suspend,然后用RV。因为某些被ASProtect加壳的程序在进入OEP之后会修改IAT的某些项。
|
· 教你使用Anti ARP Snif.. · 网络嗅探教程:使用Sni.. · 时代亿信企业级信息安.. · ISA Server、虚拟机、.. · Windows年底再现图片漏.. · MBSA本地审核策略建议 |
· 企业局域网安全访问控.. · 常见病毒手工清除方法.. · 网络技术经典基础教程 · 如何破解加密的压缩文件 · 网吧破解无止境--视频! · 网吧破解--视频! |
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |