文章中用到的demo下载地址:

http://download.csdn.net/detail/ccnyou/4540254

附件中包含demo以及文章word原稿

用到工具:

Ollydbg

LordPE

ImportREC

这些工具请自行下载准备

Dump原理这里也不多做描述,想要了解google it!常见的dump软件有LordPE,ProcDump,PETools等本文以LordPE为例

首先,打开 LordPE,由于此时机器上只有一个汉化版,也懒得花时间去找原版了。我们打开选项,设置成如图样子:

设置好后,在LordPE的进程窗口选择相关进程(这里以加了Aspack壳 的dumpDemo.exe为例),单击右键,执行【完整转存】DumpFull,保存即可,如果有Anti-Dump,先执行修正镜像大小(correct ImageSize),再dump full。保存名字默认为dumped.exe

重建输入表:

一般而言,一个加密的外壳,破坏原有的输入表是必有的功能。程序被dump出来后还需要重建输入表,例如这个程序dump后运行提示:

这里以ImportREC为例。在运行ImportREC之前,需要满足:

  • 目标文件完全被dump,另存为另一个文件
  • 目标文件正在运行中
  • 事先找到程序的真正入口(OEP)或IAT的偏移和大小

这里使用堆栈平衡原理找OEP,由于找OEP不是本文重点,这简单点说明过程:

1,OD载入,在执行完pushad后,看到各个寄存器被压进

0012FFA4h~0012FFC0h中,如图:

2,在OD中下硬件访问断点:

hr 12FFA4

3,按F9运行程序,外壳代码处理结束后,调用popad恢复现场环境,将访问这些堆栈。OD就会中断,此时离OEP不远了。中断如图:

其实如果了解其原理,可以在PE文件开始运行时,记下当时的ESP,假设是 12FFC4h,大多数程序第一句都是push 指令,就是对12FFC0h进行写入操作,因此对其设置硬件写断点,(hr 12FFC0),就可以方便地来到OEP附近了。

4,回到正题,跟到Retn后发现程序来到

00401700 /.  55            PUSH EBP

这里,按Ctrl+A让OD分析一下,发现这里就是真正入口点了,记录之。

好像有点离体了。。。。回到刚才正题,运行ImportREC,在下拉框中选择dumpdemo进程,然后在右边OEP中填入我们获取的OEP的RAV,这里我们输入1700(由于映像基质是00400000),然后点击 自动搜寻(IAT AutoSearch),让其自动检测IAT大小和偏移

如果出现如图对话框,表示输入的OEP发挥作用了

单击 【获取输入表】(Get Imports)按钮,让其自动分析IAT结构得到基本信息,如图:

这里有一个无效的,经过尝试右键菜单中的Trace level 1,2,3命令修复均无效,而且由图中数据也可以看出这个指针式无效的,我们展开,右键【删除指针数据】,现在全部都是有效的了。

5,修复已脱壳的Dumped.exe,选保证选中【增加新区段】(默认选中),再点击【修复转存文件】,打开Dumped.exe,此时不需要手工备份,程序将创建文件Dumped_.exe,此时OEP也被修正。我们运行Dumped_.exe,已经没有刚才那个错误提示了。功能完全正确,确定就是比刚才的大了点(原文件11.5k,这个修正后的36.0k),中间多了外壳数据和新增区段(.mackt)的输入表数据。

6,如果不舍得新增一段区段的空间,也可以在.rdata中选取一段空白,这里输入000029C0,在单击修复转存文件即可,这次修复后体积是32.0k,节省了4k  O__O”…

转载于:https://www.cnblogs.com/Fightingbirds/p/3172905.html

手动脱壳—dump与重建输入表(转)相关推荐

  1. 33. 脱壳篇-重建输入表

    OD自动分析MessageBox,call 004011EA,他是怎么分析知道函数MessageBox 打开PE头文件,INT 我们要重点关注的字段一个是ImageBase基址,一个是Import T ...

  2. 重建输入表 - 脱壳篇04

    重建输入表 - 脱壳篇04 让编程改变世界 Change the world by program 重建输入表 [caption id="attachment_2648" alig ...

  3. 脱壳实践之手动构造输入表

    0x00 前言 对于脱壳后的程序往往不能直接运行,这是因为它们很多都没有重建输入表.当然用的od脱壳可能可以.重建输入表一般都是用专业软件比如ImportREC.但是对于逆向研究者来说会自己重讲输入表 ...

  4. 逆向基础:软件手动脱壳技术入门

    前言: 大家好,我是周杰伦 这里整合了一下之前自己学习软件手工脱壳的一些笔记和脱文,希望能给新学软件逆向和脱壳的童鞋们一点帮助. 1 一些概念 1.1 加壳 加壳的全称应该是可执行程序资源压缩,是保护 ...

  5. 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc)

    系列汇总 写一个PE的壳_Part 1:加载PE文件到内存 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc) 写一个PE的壳_Part 3:Section里实 ...

  6. Ollydbg手动脱壳得几点小结

    手动脱壳 Ollydbg手动脱壳得几点小结:           一般认为手动脱壳的关键是找到软件的真正入口OEP,但是用ollydbg脱壳知道软件的真正入口OEP并不能解决问题,因为ollydbg的 ...

  7. 认识Import表-PE输入表说明

    认识Import表-PE输入表说明 有很多介绍PE文件的文章,但是我打算写一篇关于输入表的文章,因为它对于破解很有用.     我想解释它的最好的方法是举一个例子,你可以跟着我逐步深入,一步一步的思考 ...

  8. 如何手动生成Dump文件并分析Dump文件

    大家都知道,当服务器出现蓝屏问题时,我们需要获取系统所产生的DUMP文件进行分析,如何确保在系统问题发生时,可以正确的生成所需要的DUMP文件呢?我们需要做如下检查: 1).右键点击"我的电 ...

  9. 手动脱壳----PECompact 2.x - Jeremy Collake

    网上也有很多手动脱壳的教程,但是光看不写总觉的像自己没学过似的. 操作环境: 操作系统:Windows 7 Ultimate OD版本:Olldbg 1.10 被脱壳软件:文章最后提供下载 下边利用E ...

最新文章

  1. AS 4.7安装yum
  2. excel实现统计词频功能
  3. linux shell mkpasswd 生成随机密码
  4. zlmediakit DESCRIBE:404 Not Found
  5. arm-none-eabi-gcc install
  6. 2016网络安全***赛记录
  7. python运行速度慢是解释器的原因_python为什么会运行慢
  8. 复制vmware overLay网络无法ping通 ping www.baidu.com可以
  9. Jdbc普通查询、流式查询、游标查询
  10. Spark + Hadoop,基于WIFI探针的大数据分析系统
  11. Linux基础——怎么样用 TeamViewer 和 VNC 从远程控制电脑
  12. java后根次序非递归输出_求根结点到每个叶子节点的逆序列【后序遍历非递归的应用】...
  13. 江苏省计算机二级c语言备考,江苏省计算机二级C语言考试备考指南
  14. Oracle 容灾方案选择
  15. Idea启动文件配置java目录_项目IDEA启动配置
  16. 大厂裁员潮下,测试人员路在何方?
  17. C# 阿里云短信接口调用(不使用SDK,单文件完成)
  18. iOS-常见三种加密(MD5、非对称加密,对称加密)
  19. 解决phpmyadmin 访问卡慢等问题
  20. SystemUI修改

热门文章

  1. 随笔之如何实现一个线程池
  2. iOS WKWebView带进度条封装(只用传入url,可改变进度条颜色)
  3. swift实现ios类似微信输入框跟随键盘弹出的效果
  4. 用模板实现单例模式(线程安全)、模板方式实现动态创建对象
  5. Keras 最新《面向小数据集构建图像分类模型》
  6. 详细介绍Java垃圾回收机制
  7. ES6 module 简单整理
  8. Windows Server 2012
  9. C#中DateTime.Now.Ticks的用法和说明
  10. jenkins运行日志时间与linux,Jenkins 用户文档(运行多个步骤)