脱壳——修复加密IAT
脱壳——修复加密IAT
对两个练手程序进行脱壳修复加密IAT(其实是一个程序,只是用了几种不同的加壳方式)
第一个程序
Aspack.exe
下载链接:https://download.csdn.net/download/weixin_43916597/18372920
分析程序信息
首先先查看这个程序的信息,使用PEiD查看该exe程序
这里可以看出:编译器版本:vc6.0,壳的名称:ASPack
调用OD调试程序
很清晰的看得到程序最开始的OEP是pushad
自然而然就想到了对esp打断点然后找到popad,再找到jmp或者ret之类的指令来得到真正的OEP,然后dump出来所有的字段,再修复导入表和PE文件,这种类型的原理具体可以查看我的上一篇博客:
https://www.cnblogs.com/Sna1lGo/p/14727846.html
这里直接使用工具了
在od里使用OllyDump来Dump出来exe,然后用ImportREC修复导入表就可以脱壳使用了
得到OEP,然后把OEP输入给OllyDump,得到初步的脱壳.exe
1修正入口的地址,2去掉重建输入表(因为这个重建输入表不好用)3 脱壳
再用Import REC重构就好了,最后就得到了一个完整的脱壳程序
这种方法上一个博客有仔细讲解,感兴趣的可以去看看:https://www.cnblogs.com/Sna1lGo/p/14727846.html
第二个程序
FateMouse.exe
下载链接:https://download.csdn.net/download/weixin_43916597/18372920
分析程序信息
这个壳名字取得花里胡巧的,但是没关系嗷
调用OD调试程序
一开始又是一个很经典的Pushad,果断对esp打上断点(这种办法也就前面用用玩了),然后运行程序跑到断点处
但是这里有明显的区别,这次这里的jmp是跳转到了一个别的地方(因为这个程序我们前面已经剖析很多次了),但是没关系先跳转过去看看
跳转过来是这样的一个东西,再运行看看
先不用管前面的这些,因为这个程序我们之前是操作过的,知道OEP是多少,而且目的是修复加密的IAT,所以前面的可以先不用管
直接跳转到0x00402680
这里是一些不清楚的指令,是因为od帮忙分析了,右键->分析->从模块中删除分析来恢复原来的模样
这样就很清晰明了
平时在采用FF15硬编码的call函数后面会有api的名称显示,但是这里没有,所以这里很有可能是对导入表加密了,才看call函数对应的地址的内容(注call的硬编码有两种,FF15的硬编码表示是根据函数名称)
在命令行中输入指令查看,可以看到很明显不是正常的调用API,这里表明要跳转到对应的地址来执行,那么就再进入对应的地址来查看一下看看内容是什么,这里就查看0042B240对应的0051C275
这里可以看到,其实相当于是一个中转,也就是先进入一个函数地址,然后函数的地址里面才是保存了真正的API地址
这样的话就给我们将程序dump出来之后,再通过一些程序修复IAT表进行了问题,如果这里我们还是直接用ImportREC来修复的话ImportREC找不到函数地址,它只能识别真正的地址,不能识别中转的地址,所以这里我们只需要 想办法让ImportREC能够认识这个IAT就行了,这里采用对中转地址打断点,分析中转函数的代码逻辑来修复IAT
分析关键程序的代码段逻辑
它这里的IAT表是从0042B1DC开始的,所以针对这里开始分析
给这里打一个内存写入断点,然后运行
这里是一个批处理指令,暂时不知道有什么用,继续运行程序看看,再往后运行了3次后变换到了新的位置:、
这里就好像有点东西了,首先是旁边的注释有函数的名称
其次这里的寄存器也是有内容的 ,可以很清楚的看到,这里的指令就是把0042B1DC对应的内容的值改为了一个正常的函数地址的值,相当于这里就是在修复导入函数表了
然后单步调试程序,并且关注0042B1DC这个值在哪里发生了改变
一直往下走的时候,发现经过了这条指令后0042B1DC所存储的值发生了改变 004305EA这条指令,又改变成了一个莫名其妙不认识的值,所以这里我猜测是某段指令实现获取导入表然后对导入表进行加密处理,这里我先将该使得导入表加密的指令使用nop填充,填充完之后再跳转到一条向下的指令
跳转到0043060C,为什么跳转到这里,因为前面都是循环而且是往上的循环,很大概率就是对导入表的每个函数加密,然后到第二个指令的时候就可以很清晰得看到函数的地址了
就是一个很正常的地址了,但是这样操作后直接运行运行不了了,所以这里我猜测,很有可能是加了什么验证在这个壳代码里面,那么可以加一个跳转,直接跳转到真正的OEP的地址里面,来让验证代码跑不了不就好了
但是我也不知道在哪里加比较好,就只有先试一下,先来对第一天循环执行后的语句实施Jmp oep
看看能不能行
可以很明显得看到运行成功了,算是运气比较好把,这个时候再用之前的办法来处理,dump出来,然后修复导入表就好了
总结
针对加密的导入表,可以采用对导入表加断点,跑到具体的加密指令段,然后进行特殊的分析,有时候并不需要把一个程序完整的破解,只需要达到自己的目的就了
总结中的总结:找到核心代码段分析
脱壳——修复加密IAT的更多相关文章
- 脱壳系列—— *加密脱壳(Android使用手册破解)
作者:i春秋作家HAI_ZHU 0×00 前言 好久没有写文了,要好好开动一下了.很多事情要忙.这篇文章本来很早之前就要写的,但是因为很多事情就拖了很久. 前置内容 HAI_使用手册 知识总结 0×0 ...
- OpenSSL修复加密漏洞、加强Logjam防御
来源:TechTarget中国作者:Michael Heller翻译:张程程 OpenSSL项目团队为其密码库发布补丁以修复一个严重的漏洞(该漏洞可能允许攻击者解密HTTPS通信),同时强化对Logj ...
- 菜鸟脱壳之脱壳的基础知识(六)——手动查找IAT和修复Dump的程序
前面讲了如何寻找OEP和脱壳,有的时候,Dump出来的时候不能正常运行,是因为还有一个输入表没有进行处理,一些加密壳会在IAT加密上面大做文章,用HOOK - API的外壳地址来代替真是的IAT的地址 ...
- 脱壳系列_2_IAT加密壳_详细版解法1(含脚本)
1 查看壳程序信息 使用ExeInfoPe 分析: 发现这个壳的类型没有被识别出来,Vc 6.0倒是识别出来了,Vc 6.0的特征是 入口函数先调用GetVersion() 2 用OD找OEP 拖进O ...
- 脱壳系列_2_IAT加密壳_详细版_解法1_包含脚本
1 查看壳程序信息 使用ExeInfoPe 分析: 发现这个壳的类型没有被识别出来,Vc 6.0倒是识别出来了,Vc 6.0的特征是 入口函数先调用GetVersion() 2 用OD找OEP 拖进O ...
- 浅谈IAT加密原理及过程
上一次做完代码段加密后,又接触到了新的加密方式:IAT加密 IAT加密是通过隐藏程序的导入表信息,以达到增加分析程序的难度.因为没有导入表,就无法单纯的从静态状态下分析调用了什么函数,动态调试时,也无 ...
- 脱壳第二讲,手动脱壳PECompact 2.x
脱壳第二讲,手动脱壳PECompact 2.x PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式 首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具 但是他有壳 ...
- 脱壳_00_压缩壳_ASPACK
写在前面的话: Aspack是最常见的一种压缩壳,具有较好的兼容性.压缩率和稳定性,今天我们就来一起分析一下这个壳: 零.分析压缩壳: 0.在开始动态调试前,用PEID和LoadPE查看一些信息,做到 ...
- C/C++ 导入表与IAT内存修正
本章教程中,使用的工具是上次制作的PE结构解析器,如果还不会使用请先看前一篇文章中对该工具的介绍,本章节内容主要复习导入表结构的基础知识点,并通过前面编写的一些小案例,实现对内存的转储与导入表的脱壳修 ...
随机推荐
- Deep Unfolding Network for Image Super-Resolution 论文解读
Introduction 超分是一个在 low level CV 领域中经典的病态问题,比如增强图像视觉质量.改善其他 high level 视觉任务的表现.Zhang Kai 老师这篇文章在我看到的 ...
- vivo 官网资源包适配多场景的应用
本文介绍了资源包的概念及使用场景,同时对资源包的几种使用方案进行对比.通过本文,大家可以快速掌握资源包的使用方法,解决单一配置满足多场景.多样式的问题. 一.业务背景 随着官网项目的业务深入发展,单纯 ...
- 剑指 Offer 64. 求1+2+…+n + 递归
剑指 Offer 64. 求1+2+-+n Offer_64 题目描述 题解分析 使用&&逻辑短路规则来终止循环 package com.walegarrett.offer; /** ...
- POJ-3268(来回最短路+dijkstra算法)
Silver Cow Party POJ-3268 这题也是最短路的模板题,只不过需要进行两次求解最短路,因为涉及到来回的最短路之和. 该题的求解关键是:求解B-A的最短路时,可以看做A是起点,这就和 ...
- 《逆向工程核心原理》——通过调试方式hook Api
1.附加目标进程, 2.CREATE_PROCESS_DEBUG_EVENT附加事件中将目标api处设置为0xcc(INT 3断点) 3.EXCEPTION_DEBUG_EVENT异常事件中,首先判断 ...
- Canal高可用架构部署
一.前言 canal 是阿里的一款开源项目,纯 Java 开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了 MySQL(也支持 mariaDB). canal 模拟 mys ...
- [倍增]luogu P4155 [SCOI2015]国旗计划
题面 https://www.luogu.com.cn/problem/P4155 问在环上最少取多少个区间能完全覆盖环 分析 首先发现是环,先把端点变为2n方便处理,注意离散化 其次要删去贡献不如其 ...
- github文件快速下载
目录 一,提升加载速度 二,提升下载速度 只是想快速下载文件的直接看第二部分. github加载速度慢究其原因还是伟大的墙的存在.我们需要赞美墙,但就算墙很伟大,问题还是要解决的. 有问题就解决问题, ...
- SSM-员工管理项目实战-CRUD-增删改查
SSM-CRUD 一.项目简介 主界面演示 功能点 分页 数据校验 ajax Rest 风格的 URI 技术点 基础框架 - ssm(Spring + SpringMVC + MyBatis) 数据库 ...
- Python 实现自动化 Excel 报表
Py 实现自动化Excel报表 好几个月没有写笔记了, 并非没有积累, 而是有点懒了. 想想还是要续上, 作为工作成长的一部分哦. 最近有做一些报表, 但一直找不到一个合适的报表工具, 又实在不想写前 ...