1 查看壳程序信息

  • 使用ExeInfoPe

分析:

发现这个壳的类型没有被识别出来,Vc 6.0倒是识别出来了,Vc 6.0的特征是 入口函数先调用GetVersion()

2 用OD找OEP

  • 拖进OD

发现 这个壳和我们的正常程序很像。但是并不是我们的真正程序入口

  • 因为vc6.0特征的第一个调用的是GetVersion(),给GetVersion()下 硬件断点

//第一次断下来,但是根据栈回溯,调用者并不是我们的模块

//第二次断下来,就应该是了

//找到入口后 栈上右键 反汇编窗口跟随

//如下

  • 在OD看内存布局,一般.rdata的最前面是放的IAT,而且OD数据窗口默认就是.rdata的起始位置。

    • 也可以点一个call /jmp  [];看一下来找IAT表

  • 对那个地方下一个硬件写入断点 --DWORD,即当前面的壳程序在修改的时候就能段下来找到壳的加密算法的地方

3 对加密部分分析

这个分析的过程,需要自己去啃是分享不了的。

我是从GetProcAddress 开始分析的,过程中往前观察分析了几次来解答这里的一些寄存器的内容信息、局部变量的信息,以下是我主要分析的部分:

  • 通过对IAT表位置下硬件写入断点,我们找到了这个修改IAT的地方

断下这个GetProcAddress()这个函数 调用之后EAX保存的是 当前要填入IAT的真实地址

004385B9    FF15 CC924300      CALL DWORD PTR DS:[0x4392CC] ; kernel32.GetProcAddress

//开始怀疑修改进IAT的函数内容--加密代码前面几句--写死的硬编码opcode 到底意欲何为:

在内存窗口跳到[EBX-0X30]选择反汇编观察一下:

  • 发现 这就是解密IAT代码。

总结:用硬编码 opcode (用于解密IAT)的首地址替代IAT中的函数地址,然后每次IAT调用的时候都会去调用这个代码块使用。

4 分析了加密算法了流程后

  • 这时候我们只需要保存正确的函数地址值到IAT,那么这个程序就能脱掉了。

然后和前面几篇一样的流程dump到本地,用impREC修复一下IAT

运行没毛病!!

附:还可以使用OD脚本修正IAT

思路:

  1. 调用getprocAddress之后,立刻使用一个临时变量保存起来,

  2. 再待壳修改IAT后,立刻修改回正确的函数地址(前面保存的临时变量)

脚本如下:

//.定义变量
MOV dwGetApiAddr,004385bf
MOV dwWriteAddr,004385f0

//.初始化环境
BC //清除软件断点
BPHWC //清除硬件断点
BPMC //清除内存断点

//下硬件执行断点

BPHWS dwGetApiAddr,"x"
BPHWS dwWriteAddr,"x"
BPHWS  dwOEP,"x"

//.构建逻辑
/*
 -- 用一个临时变量来存储 真正的函数地址
 -- 在加密逻辑代码执行完,并且写入IAT后,立刻改回
*/
LOOP0:
  RUN //相当于od -- F9
  CMP  dwGetApiAddr,eip//如果是执行完GetProcAddress后
  JNZ CASE1
  mov dwTemp,eax
  JMP LOOP0    

CASE1:
  CMP dwWriteAddr,eip
  MOV [edi],dwTemp
  JMP LOOP0  

CASE2:

  CMP dwOEP,eip
  JNZ LOOP0  

  MSG "改回来了哈哈"

脱壳系列_2_IAT加密壳_详细版_解法1_包含脚本的更多相关文章

  1. 脱壳系列_2_IAT加密壳_详细版解法1(含脚本)

    1 查看壳程序信息 使用ExeInfoPe 分析: 发现这个壳的类型没有被识别出来,Vc 6.0倒是识别出来了,Vc 6.0的特征是 入口函数先调用GetVersion() 2 用OD找OEP 拖进O ...

  2. 脱壳系列_0_FSG壳_详细版

    ---恢复内容开始--- 1 查看信息 使用ExeInfoPe查看此壳程序 可以看出是很老的FSG壳. 分析: Entry Point : 000000154,熟悉PE结构的知道,入口点(代码)揉进P ...

  3. 脱壳系列(一) - CrypKeySDK 壳

    程序: 运行 用 PEiD 载入程序 PEid 显示找不到相关的壳 脱壳: 用 OD 载入程序 这个是壳的入口地址 因为代码段的入口地址为 00401000 这三个是壳增加的区段 按 F8 往下走程序 ...

  4. 脱壳系列(五) - MEW 壳

    先用 PEiD 看一下 MEW 11 1.2 的壳 用 OD 载入程序 按 F8 进行跳转 往下拉 找到这个 retn 指令,并下断点 然后 F9 运行 停在该断点处后再按 F8 右键 -> 分 ...

  5. 脱壳系列(四) - eXPressor 壳

    先用 PEiD 查一下壳 用 OD 载入程序 这里有一串字符串,是壳的名称和版本号 按 Alt+M 显示内存窗口 这里只有三个区段,后面两个是壳生成的,程序的代码段也包含在里面 利用堆栈平衡 按 F8 ...

  6. 脱壳系列(二) - EZIP 壳

    程序: 运行程序 用 PEiD 查壳 EZIP 1.0 用 OD 打开 按 F8 往下走 这个看似是 OEP 的地方却不是 OEP 因为代码段从 00401000 开始 可以看到,壳伪造了 3 个区段 ...

  7. CleanMyMac 4破解版-最强中文版_破解版_激活码_注册码

    最新版CleanMyMac 4中文版本已经发布了,也受到了广大用户的喜爱.众所周知, 注册码是开启软件的钥匙,在获取软件安装包之后需要有效的注册码才能激活软件.但是关于CleanMyMac 4注册码的 ...

  8. CleanMyMac 3.7.5最强中文版_激活码_破解版_下载_注册码

    版权归作者所有,任何形式转载请联系作者.作者:缘来远去(来自豆瓣)来源:https://www.douban.com/note/612586476/ 最新版CleanMyMac 3中文版本已经发布快要 ...

  9. 脱壳系列—— 揭开so section加密的美丽外衣

    i春秋作家:HAI_ 0×00 前言 对so的加密,https://bbs.pediy.com/thread-191649.htm大神的帖子里已经很详细的说明了.当然加密不是我们研究的重点,如何搞掉这 ...

随机推荐

  1. 高并发 Nginx+Lua OpenResty系列(8)——Lua模版渲染

    模版渲染 动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现.而Lua中也有许多模板引擎,如目前京东在使用的lua-resty-tem ...

  2. Hyperledger Fabric1.4的多机部署

    之前的文章深入解析Hyperledger Fabric启动的全过程主要讲解了Fabric的网络搭建,以及启动的整体流程,但是都是通过单机完成的.而区块链本身就是去中心化的,所以最终还是要完成Fabri ...

  3. SpringBoot中资源初始化加载的几种方式(看这一片就够了)

    一.问题 在平时的业务模块开发过程中,难免会需要做一些全局的任务.缓存.线程等等的初始化工作,那么如何解决这个问题呢?方法有多种,但具体又要怎么选择呢? 二.资源初始化 1.既然要做资源的初始化,那么 ...

  4. 机器学习-5 支持向量机SVM

    一.概念和背景 SVM:Support Vector Machine 支持向量机. 最早是由Vladimir N. Vapnik和Alexey Ya. Chervonenkis在1963年提出的. 目 ...

  5. Hadoop 学习之路(四)—— Hadoop单机伪集群环境搭建

    一.前置条件 Hadoop的运行依赖JDK,需要预先安装,安装步骤见: Linux下JDK的安装 二.配置免密登录 Hadoop组件之间需要基于SSH进行通讯. 2.1 配置映射 配置ip地址和主机名 ...

  6. 基于Dapper的开源Lambda扩展LnskyDB 2.0已支持多表查询

    LnskyDB LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼. 文档地址: https://lining ...

  7. HBase Region重点剖析

    Region的概念 Region是HBase数据管理的基本单位.数据的move,数据的balance,数据的split,都是按照region来进行操作的. region中存储这用户的真实数据,而为了管 ...

  8. C++一些知识的整理

    1. C 和 C++ 区别 C++支持多种编程范式:面向对象编程.泛型编程.过程化编程.支持类.封装.重载等特性. c和c++的头文件不同. 输入输出不同. 变量的声明定义不同:c语言:变量要放在语句 ...

  9. 查询亿级数据毫秒级返回!Elasticsearch 是如何做到的?

    掌握搜索技能,才能在庞大的数据集中找到准确的目标.本篇就带你进入另一个非凡的旅程,即使你没有像Google或Baidu一样强大的技术,一样也可以做出与之相匹敌的用户体验. 搜索是现代软件必备的一项基础 ...

  10. 上传文件不落地转Base64字符串

    1. 问题描述 因需调用第三方公司的图像识别接口,入参是:证件类型.图像类型.图片base64字符串,采用http+json格式调用. 本来采用的方式是:前端对图片做base64处理,后端组装下直接调 ...