本文以2020湖湘杯第二道逆向为例,原题为无壳的exe文件:exe程序链接:链接:https://pan.baidu.com/s/1PlfSOKKBTF8a7qL8dKwwNQ      提取码:cscj

首先对文件easyre.exe进行fsg加壳,加壳版本为fsg2.0:工具链接为:链接:https://pan.baidu.com/s/1YKXVfvHXiEnaKgAQUzTlAw       提取码:6zt3

对加完fsg壳之后的程序进行查壳,显示为:

可以看出有许多地方发生了改变,最重要的就在于程序入口的改变,大家都知道fsg为压缩壳,原理就在于在程序原OEP之前或在程序之后加上一段数据,使得程序调用是通过压缩段数据进行转发的,不影响程序的正常运行。首先将压缩后的程序进行OD载入:

在载入之后一路F8单步步过运行,当遇到如上图所示,向上跳转的情况时,在跳转的下一跳汇编指令,F4执行到目标指令处,继续F8运行,直到:

当运行在如图所示处时,发现,通过第2条jmp指令完成了无条件循环,而在第1条jmp指令处,之前存在jnz指令,实现有条件跳转,这时,就可以判定,第一条jmp指令跳转后的地址就是原程序的OEP,所有,在该处下一个断点,F9执行到这里,之后,F7/F8单步执行就会跳转到正常程序的OEP处,进入发现OD将原程序的汇编代码转换成为了数据进行显示,接下来将数据转换为代码,鼠标右键->分析->分析代码,结果为:

找到正常的OEP后·,使用LordPE工具,工具链接为:链接:https://pan.baidu.com/s/1ZVoMzTPnatTLYl4OVzNK1A      提取码:brtg

将正在运行的程序DUMP下来,操作为:

首先,纠正镜像文件的大小,接下来完全脱壳,执行dump下的程序,显示为:

出现这样的原因在于,程序dump时,没有将原程序的IAT进行正确一起dump下来,接下来进行IAT修复,使用工具ImportREC,工具地址为:链接:https://pan.baidu.com/s/1spm8-9FTnKN-dwPSxmk9Qg    提取码:29q1

加载OD运行时弹出的exe进程信息,并进入OD中在原OEP处点击鼠标右键->用OllyDump脱壳调试程序中复制入口点修改地址:

将地址放入ImportREC工具中去,如图所示:

将入口地址放入1处,点击2  IAT自动搜索,点击确定,再点击获取导入表,再点击显示无效的,如果有,则将无效的进行删除,没有则进行点击修正转储到之前dump下来的程序中去。

在这里如果原程序中IAT只有一个DLL,程序就能正常运行,反之,则不能正常运行,原因是,正常情况下,每一个DLL结束时是以00000000结尾,但是在fsg壳中,IAT的DLL以7FFFFFFF结尾,导致ImportREC不能正确的识别出多个DLL,导致不能正确查找出完整的DLL,所以要手动进行修改,进入OD中原OEP出,发现程序call了一些函数,跟踪地址在地址栏处查看:

接着跟踪40F140找到,程序在内存中还原的IAT:

全部改好后用ImportREC再次进行IAT修复,得到出图所示:

现在,运行dump出的exe程序,就能正常运行:

结束!!!

逆向脱壳-fsg手动脱壳相关推荐

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

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

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

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

  3. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )

    文章目录 前言 一.查找 DexFile 对应的 C++ 代码 1.根据 Native 文件命名惯例查找 C++ 代码 2.根据方法名查找 二.dalvik_system_DexFile.cpp 源码 ...

  4. 加固加壳脱壳分析(3)_实战手动脱壳某家加固

    手动脱壳准备 一个加固的Apk文件 frida环境 一台Root手机 手动脱壳准备 本次的脱壳目标就是一个叫每日优先的软件 我在论坛里分析了很久 最后发现这个软件适合用来练手 目标就是脱出完整的dex ...

  5. 【Android 逆向】整体加固脱壳 ( 脱壳点简介 | 修改系统源码进行脱壳 )

    文章目录 一.脱壳点简介 二.修改系统源码进行脱壳 一.脱壳点简介 在上一篇博客 [Android 逆向]整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 rewriteD ...

  6. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | dvmDexFileOpenPartial | dexFileParse | 脱壳点 | 获取 dex 文件在内存中的首地址 )

    文章目录 前言 一.DexPrepare.cpp 中 rewriteDex() 方法分析 二.DvmDex.cpp 中 dvmDexFileOpenPartial() 方法分析 ( 脱壳点 ) 三.D ...

  7. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati() 函数分析 )

    文章目录 前言 一.DexPrepare.cpp 中 dvmContinueOptimizati() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DEX 优化流程分析 | D ...

  8. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )

    文章目录 前言 一.DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 二./bin/dexopt 源码分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ...

  9. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )

    文章目录 前言 一.RawDexFile.cpp 中 dvmRawDexFileOpen() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLoader 加载 ...

  10. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexFile loadDexFile 函数 | 构造函数 | openDexFile 函数 )

    文章目录 前言 一.DexFile.loadDexFile 函数分析 二.DexFile 构造函数分析 三.DexFile.openDexFile 函数分析 前言 上一篇博客 [Android 逆向] ...

最新文章

  1. 多语言互通:谷歌发布实体检索模型,涵盖超百种语言和千万个实体
  2. Uncode系列开源组件简介
  3. 65 Airflow组成部分的概念介绍
  4. 用Pytorch实现三个优秀的自然图像分割框架!(包括FCN、U-Net和Deeplab,可直接训练预测)
  5. python对象编程例子-python(十二)面向对象编程、类
  6. 动态产生一个TextBox,并使输入的文本靠右对齐
  7. Mybatis接口Mapper内的方法为啥不能重载吗?
  8. Django(part24)--查询数据
  9. java迭代器cas,java提高篇(三十)-Iterator - Java 技术驿站-Java 技术驿站
  10. mysql 两个时间相差大于24小时的数据_MySQL 主从同步延迟的原因及解决办法(仅学习)...
  11. 织物印花疵点专用术语大全
  12. html重复div绘制,[DIV+CSS]绘制2重交叉表_html/css_WEB-ITnose
  13. Qt-十字消除小游戏
  14. 原生js获取屏幕高度
  15. 【学习笔记】炼数成金 Dataguru python2.x 2012
  16. Selenium:元素判断
  17. 19湖大考研经验总结
  18. js中元素样式设置的六种方法
  19. java怎么打印星期,在任何日期打印出星期几
  20. iPhone开发入门(1)----程序员眼中的iPhone

热门文章

  1. Debian10配置IP地址、DNS、主机名
  2. 北京休闲好去处 适合春游的地方
  3. 开源项目推荐系列(短信网关)
  4. 互联网短信网关接口协议
  5. 程序员要拥抱变化,聊聊Android即将支持的Java 8
  6. java全局搜素快捷键_eclipse全局搜索快捷键是什么
  7. 激光雷达发射的激光属于哪个范围???和毫米波波长相比如何???
  8. unity 模型销毁_Unity中销毁游戏对象的方式
  9. Android Studio 插件整理
  10. Red Hat Linux9.0操作系统安装和配置入门