当前位置: 首页 > 编程日记 > 正文

手动脱壳—dump与重建输入表(转)

文章中用到的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

相关文章:

如何用RNN生成莎士比亚风格的句子?(文末赠书)

作者 | 李理,环信人工智能研发中心vp,十多年自然语言处理和人工智能研发经验。主持研发过多款智能硬件的问答和对话系统,负责环信中文语义分析开放平台和环信智能机器人的设计与研发。来源 | 《深度学习理论与实战:基础篇》基本概…

图像相似度计算之哈希值方法OpenCV实现

感知哈希算法(perceptual hash algorithm),它的作用是对每张图像生成一个“指纹”(fingerprint)字符串,然后比较不同图像的指纹。结果越接近,就说明图像越相似。 实现步骤: 1. 缩小尺寸:将图像缩小到8*8的尺寸&am…

七夕大礼包:26个AI学习资源送给你!

整理 | Jane出品 | AI科技大本营(ID:rgznai100)免费的在线学习课程一直是大多数人学习 AI 知识和技能的方式之一。今天,基于 Github 上一位小姐姐 Chip Huyen 分享的 10 门机器学习课程,AI科技大本营将这份收藏大礼包进…

HTML Inspector – 帮助你编写高质量的 HTML 代码

HTML Inspector 是一款代码质量检测工具,帮助你编写更优秀的 HTML 代码。HTML Inspector 使用 JavaScript 编写,运行在浏览器中,是最好的 HTML 代码检测工具。 您可能感兴趣的相关文章Metronic – 赞!Bootstrap 响应式后台管理模板…

Git简介以及与SVN的区别

Git是由著名Linux内核(Kernel)开发者Linus Torvalds为了便利维护Linux而开发的。 Git是一个分布式的版本控制系统。作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处…

java集合中某一个元素出现的次数

int count Collections.frequency(list, key); java的内置方法转载于:https://www.cnblogs.com/wysAC666/p/10252676.html

加密解密-DES算法和RSA算法

昨天忽然对加密解密有了兴趣,今天上班查找了一些资料,现在就整理一下吧:) 一.DES算法 这种算法如图所示,这里将描述它的每一个步骤。这个算法进行了16次迭代(圈),把各块明文交织起来…

开始Dojo之路

开始Dojo之路waiting……转载于:https://blog.51cto.com/frabbit2013/1242108

图像相似度计算之直方图方法OpenCV实现

操作步骤: 1. 载入图像(灰度图或者彩色图),并使其大小一致; 2. 若为彩色图,增进行颜色空间变换,从RGB转换到HSV,若为灰度图则无需变换; 3. 若为灰度图,直接计算其直方…

黄皓之后,计算机科学上帝Don Knuth仅用一页纸证明布尔函数敏感度猜想

作者 | Freesia编辑 | 夕颜出品 | AI科技大本营(ID:rgznai100)导读:近日,美国艾默里大学计算机与数学科学系教授黄皓(Hao Huang)用一篇短短 6 页的论文证明了布尔函数,引发了计算机和数学领域社…

数位DP 不断学习中。。。。

1, HDU 2089 不要62 :http://acm.hdu.edu.cn/showproblem.php?pid2089 题意:不能出现4,或者相邻的62, dp[i][0],表示不存在不吉利数字 dp[i][1],表示不存在不吉利数字,且最高位为2 dp[i][2],表示存在不吉利数字 #i…

linux 性能 管理 与 优化

一、影响Linux服务器性能的因素操作系统级&#xff1a;CPU、内存、磁盘I/O带宽、网络I/O带宽程序应用级二、系统性能评估影响性能因素 评判标准 好 坏 糟糕 CPU user% sys%< 70% user% sys% 85% user% sys% >90% 内存 Swap In&#xff08;si&…

对称加密算法之DES介绍

DES(Data Encryption Standard)是分组对称密码算法。DES采用了64位的分组长度和56位的密钥长度&#xff0c;它将64位的输入经过一系列变换得到64位的输出。解密则使用了相同的步骤和相同的密钥。DES的密钥长度为64位&#xff0c;由于第n*8(n1,2,…8)是校验位&#xff0c;因此实…

200行代码解读TDEngine背后的定时器

作者 | beyondma来源 | CSDN博客导读&#xff1a;最近几周&#xff0c;本文作者几篇有关陶建辉老师最新的创业项目-TdEngine代码解读文章出人意料地引起了巨大的反响&#xff0c;原以为C语言已经是昨日黄花&#xff0c;不过从读者的留言来看&#xff0c;C语言还是老当益壮&…

fastJson结合Nutz.Mapl的进阶应用

为什么80%的码农都做不了架构师&#xff1f;>>> 今天要做一堆数据的序列化, 反序列化, 序列化没问题, 反序列化却遇到了点小意外, 这一堆数据不是一个类!!!!!!当然可以通过类内部的一个类型对象来判断, 但是fastJson并没有这个功能, 只能自己一个一个的遍历一个一个…

OpenCV实现遍历文件夹下所有文件

OpenCV中有实现遍历文件夹下所有文件的类Directory&#xff0c;它里面包括3个成员函数&#xff1a;(1)、GetListFiles&#xff1a;遍历指定文件夹下的所有文件&#xff0c;不包括指定文件夹内的文件夹&#xff1b;(2)、GetListFolders&#xff1a;遍历指定文件夹下的所有文件夹…

阿里、京东、快手、华为......他们是如何构建一个个推荐系统“帝国”的?

推荐系统在人们的日常生活中随处可见&#xff0c;成为我们生命中不可或缺的一部分。作为当今应用最为广泛和成熟的 AI 技术之一&#xff0c;它是信息生产者、传播者与用户之间的桥梁&#xff0c;可以让信息最精准、最高效地到达需求不一的用户面前。每天打开手机或电脑端的大部…

前端基础_ES6

声明 三大关键字声明变量&#xff1a;var &#xff08;ES5语法&#xff09; let &#xff08;ES6语法&#xff09;声明常量&#xff1a;const (ES6语法) var 声明变量特性1、支持 函数作用域2、支持 JS预解析 &#xff08;所谓变量提升&#xff09;3、支持 重复声明 &#xff…

5大典型模型测试单机训练速度超对标框架,飞桨如何做到?

导读&#xff1a;飞桨&#xff08;PaddlePaddle&#xff09;致力于让深度学习技术的创新与应用更简单。在单机训练速度方面&#xff0c;通过高并行、低开销的异步执行策略和高效率的核心算子&#xff0c;优化静态图训练性能&#xff0c;在Paddle Fluid v1.5.0的基准测试中&…

windowsXP用户被禁用导致不能网站登录

1、查看系统事件&#xff0c;发现弹出如下的错误 2、根据上面的错误&#xff0c;我们很容易就可以判断是禁用了账户引起的 2.1后面进入计算机管理&#xff0c;再进入用户管理 2.2双击点开Internet来宾用于&#xff0c;发现此用户已经停用了。 2.3双击点开与IIS访问有关用户&…

从头到尾使用Geth的说明-3-geth参数说明和环境配置

1.参数说明 ETHEREUM选项:--config value TOML 配置文件--datadir "/home/user4/.ethereum" 数据库和keystore密钥的数据目录--keystore keystore存放目录(默认在datadir内)--nousb …

OpenSSL中对称加密算法DES常用函数使用举例

主要包括3个文件&#xff1a; 1. cryptotest.h:#ifndef _CRYPTOTEST_H_ #define _CRYPTOTEST_H_#include <string>using namespace std;typedef enum {GENERAL 0,ECB,CBC,CFB,OFB,TRIPLE_ECB,TRIPLE_CBC }CRYPTO_MODE;string DES_Encrypt(const string cleartext, const…

从原理到落地,七大维度读懂协同过滤推荐算法

作者丨gongyouliu来源 | 大数据与人工智能导语&#xff1a;本文会从协同过滤思想简介、协同过滤算法原理介绍、离线协同过滤算法的工程实现、近实时协同过滤算法的工程实现、协同过滤算法应用场景、协同过滤算法的优缺点、协同过滤算法落地需要关注的几个问题等7个方面来讲述。…

sql查询语句优化需要注意的几点

为了获得稳定的执行性能&#xff0c;SQL语句越简单越好。对复杂的SQL语句&#xff0c;要设法对之进行简化。 常见的简化规则如下&#xff1a; 1&#xff09;不要有超过5个以上的表连接&#xff08;JOIN&#xff09; 2&#xff09;考虑使用临时表或表变量存放中间结果。 3&#…

决策树算法原理(ID3,C4.5)

决策树算法原理(CART分类树) CART回归树 决策树的剪枝 决策树可以作为分类算法&#xff0c;也可以作为回归算法&#xff0c;同时特别适合集成学习比如随机森林。 1. 决策树ID3算法的信息论基础 1970年昆兰找到了用信息论中的熵来度量决策树的决策选择过程&#xff0c;昆兰把这…

对称加密算法之RC4介绍及OpenSSL中RC4常用函数使用举例

RC4是一种对称密码算法&#xff0c;它属于对称密码算法中的序列密码(streamcipher,也称为流密码)&#xff0c;它是可变密钥长度&#xff0c;面向字节操作的流密码。 RC4是流密码streamcipher中的一种&#xff0c;为序列密码。RC4加密算法是Ron Rivest在1987年设计出的密钥长度…

SpringMVC中实现的token,防表单重复提交

一&#xff1a;首先创建一个token处理类 &#xff0c;这里的类名叫 TokenHandlerprivate static Logger logger Logger.getLogger(TokenHandler.class);static Map<String, String> springmvc_token new HashMap<String, String>();//生成一个唯一值的tokenSupp…

利用CxImage实现编解码Gif图像代码举例

Gif(Graphics Interchange Format&#xff0c;图形交换格式)是由CompuServe公司在1987年开发的图像文件格式&#xff0c;分为87a和89a两种版本。Gif是基于LZW算法的无损压缩算法。Gif图像是基于颜色表的&#xff0c;最多只支持8位(256色)。Gif减少了图像调色板中的色彩数量&…

SpringBoot b2b2c 多用户商城系统 ssm b2b2c

来源&#xff1a; SpringBoot b2b2c 多用户商城系统 ssm b2b2c用java实施的电子商务平台太少了&#xff0c;使用spring cloud技术构建的b2b2c电子商务平台更少&#xff0c;大型企业分布式互联网电子商务平台&#xff0c;推出PC微信APP云服务的云商平台系统&#xff0c;其中包括…

AI“生死”落地:谁有资格入选AI Top 30+案例?

2019 年&#xff0c;人工智能应用落地的重要性正在逐步得到验证&#xff0c;这是关乎企业生死攸关的一环。科技巨头、AI 独角兽还有起于草莽的创业公司在各领域进行着一场多方角斗。进行平台布局的科技巨头们&#xff0c;正在加快承载企业部署 AI 应用的步伐&#xff0c;曾经无…