脱壳系列_0_FSG壳_详细版
1 查看信息
- 使用ExeInfoPe查看此壳程序
- 可以看出是很老的FSG壳。
分析:
Entry Point : 000000154,熟悉PE结构的知道,入口点(代码)揉进PE头去了。在WIN10 以来在(被限制了)PE 头中不能有执行代码,只有在WIN7 及其以前的机器上,此程序才能执行。所以用虚拟机来脱这个很老的壳,在目前(本人)win10的机器上无法运行。
2 使用LordPE 观察以下PE结构
- 点击查看区段 信息:
- 分析:
发现区段有两个,都把区段名抹去了;且第一个区段的虚拟大小虽然0x17000 但是实际大小(文件中的大小)是0
3 使用OD调试此程序尝试找OEP
3.1 打开OD定位壳
- 用Nop 破坏花指令使得反汇编正确解析后,添加注释、标签 - "FSG壳"
分析: 我们发现一进来,壳早就准备好了全部寄存器数据在地址0x4219D8的位置,把当前位置保存环境的地址放到当前的ESP寄存器,那就能POP栈操作,操作壳保存好的数据了。为啥我们看不到它之前的操作? 之后写壳的时候再分析
3.2 尝试找 OEP
- 单步运行
- 遇到第一个call (字符操作核心部分)
0x000400160:CALL DWORD PTR DS:[EBX]
;此时EBX是 0x4219dc --- [EBX]:是0x4001e8
进入
0x4001e8:
结合 call 的下一句 大致理解这个算法
分析:
这个字符串拷贝的算法,(浅淡的观测下)不可逆的拷贝,而且信息不全,所以可能不重要。
我们可以先忽略这个拷贝循环 -----》 跳过这个拷贝算法: 我们在后面的每个 jmp/call 鼠标点过去一下看会不会跳回去之类的,直到找到了。
或者你安装了高亮插件(asmHighLight.dll):由于我们分析出这个拷贝的核心调用函数是 地址为 0x400160 这句opcode,那鼠标点在上面查看后面在哪里没有该高亮色,就大致找一下就能跳过这个算法部分了。
然后我们在壳代码后面部分找到了最后一个高亮。其实这个无条件跳转流这就是我们这个算法部分的最后一句了。
- 跳出字符串拷贝算法之后,我们发现代码只有10来行了。直接断点关键的跳转行,我们直接找OEP。
- 然后我们发现跳转到 OEP的是这一句:
4 Dump
- 进入入口函数后,我们点几个跳转点数据等 并没有发现有异常数据(异常数据)等。直接使用OD提供的插件ollyDump ,dump到本地。
分析:
观察其实地址 、入口点这些 头没有错。如果没有就点击脱壳
5 修复IAT
- 这里使用impREC 来修复IAT
我们发现这里查找出来的IAT信息不完全,那就需要观察IAT表是否有异常了。
分析:
通过这里找到的函数偏移,可以迅速定位到IAT表。
比如这里的rva为B000。那么再虚拟空间中的地址就是40B000,在OD中观察如下:
- 我们向下滑动,发现:
这两个异常值阻止了impREC的解析:我们该为正常的0000000间隔:
我们修改后再次用impREC解析 得到的IAT表目前来看貌似完成了
- 最后点击修复转储到我们刚才用OD,dump出来的的程序
6 检测我们的脱壳之后的程序
yes!!!
---恢复内容结束---
脱壳系列_0_FSG壳_详细版的更多相关文章
- 脱壳系列_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 ...
- Oracle_Database_11g_标准版_企业版__下载地址_详细列表
Oracle_Database_11g_标准版_企业版__下载地址_详细列表 Oracle Database 11g Release 2 Standard Edition and Enterprise ...
- 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- iOS App上架流程(2016详细版)
iOS App上架流程(2016详细版) 原文地址:http://www.jianshu.com/p/b1b77d804254 感谢大神整理的这么详细 一.前言: 作为一名iOSer,把开发出来的Ap ...
- 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册
<zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...
- Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
概要 前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对Linked ...
随机推荐
- 《Spring Cloud》学习(一) 服务治理!
前言:之前网上学习过Spring Cloud,对于工作上需要是足够了,总归对于一些方面一知半解,最近难得有些闲暇时间,有幸读了崔永超先生的<Spring Cloud 微服务实战>,一方面记 ...
- 为什么string是引用类型 值还不可以修改
C#把数据类型分为值类型和引用类型.值类型操作简单,引用类型更省空间. C#一共有15个预定义类型,其中13个值类型(8个整型.2个浮点类型.decimal.bool.char),2个引用类型(str ...
- SSM(六)JDK动态代理和Cglib动态代理
1.Cglib动态代理 目标类: package cn.happy.proxy.cglib; public class Service { public Service() { System.out. ...
- GIT \ SVN 版本管理 git + gitHub
场景1 想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件"另存为--"一个新的Word文件,再接着改,改到一定程度,再"另存为--"一个新 ...
- PAT L3-016:二叉搜索树的结构(暴力)
https://www.patest.cn/contests/gplt/L3-016 题意:中文. 思路:暴力构造,暴力查询就好了.只不过操作很多,很麻烦.比赛的时候再给我10分钟就打完了,手速太慢好 ...
- SPOJ MINSUB - Largest Submatrix(二分+单调栈)
http://www.spoj.com/problems/MINSUB/en/ 题意:给出一个n*m的矩阵M,和一个面积k,要使得M的子矩阵M'的最小元素最大并且面积大于等于k,问子矩阵M'的最小元素 ...
- SpringMvc整合hibernate
之前用的比较多的是Mybatis,最近应客户要求准备hibernate的技术,给我最深的感触就是,能用mybatis尽量用mybatis,和hibernate相比优秀了不是一点半点,hibernate ...
- IO流簡單代碼
今天測試了一下,在博客園裏HTML源碼編譯器裏寫CSS内部樣式,更新編譯后,内部樣式可用,但是會將寫的内部樣式代碼强制加上代碼注釋進行編譯,有點類似于强制注入.編譯后的效果就是在前面加入了一個空的p標 ...
- C# Socket 简单的控制台案例
一.服务器端 1. 实例化并设置socket实例对象 a.创建ip地址和端口 b.绑定监听地址 c.设置一下允许同时访问数 2. 监听连接 a.通过启动一个新的线程执行,这样主线程不会假死(启动线程, ...
- Linux系统-CENTOS7界面美化
前期准备: 在美化前,我们先安装一个扩展源. yum install -y epel-release 然后安装字体包 yum -y install liberation-mono-fonts 安装gn ...
















