0
点赞
收藏
分享

微信扫一扫

单步跟踪法脱壳加密壳

小桥流水2016 2022-11-16 阅读 144


用到的文件下载地址:先用ExeinfoPe查看一下是否加壳以及壳的类型:

加壳了,类型为aspack压缩壳。

单步跟踪法脱壳加密壳_加壳


一般的Win32程序从​​_start​​开始执行,然后到main函数。压缩加壳程序一般是从​​_start​​开始,然后到​​load​​函数,把代码恢复,然后​​jmp​​跳转到真正要执行的代码位置区域,最后到​​main​​开始执行。脱壳其实就是上下文恢复的过程,从​​pushad​​保存到栈上,​​popad​​恢复弹出到寄存器,一般是长跳转(段之间的跳转),从而恢复上下文。

注意用英文原版ollydbg。

常用快捷键:
F2下断点
F4运行到此处
F7步入
F8步过
F9运行

用Ollydbg打开Notepad.exe,停在了如下位置:

单步跟踪法脱壳加密壳_d3_02


对于近call,我们选择跟进,按F7之后,是如下位置:

单步跟踪法脱壳加密壳_d3_03


又是一个近call,继续跟进,按F7,现在没有近call了,单步向下,

我们可以轻松看到程序在调用GetModuleHandleA, GetProcAddress等api。继续向下分析

单步跟踪法脱壳加密壳_加壳_04

向下都是远call,我们之间F8一直下去

在0040D12F遇到一个稍大的循环,我们直接在0040D15F按F4跳过循环

单步跟踪法脱壳加密壳_表单_05


单步跟踪法脱壳加密壳_加壳_06


继续向下F8,发现在​​0040D1A3​​又跳回到了之前的位置,就是向上的跳转,我们之间在下一行按F4跳过

也就是在​​0040D1A9​​位置按F4跳过,继续向下F8步过

单步跟踪法脱壳加密壳_d3_07


在​​0040D395​​​又跳回,这是一个大循环,尝试跳出循环,我们在​​0040D39A​​按F4

单步跟踪法脱壳加密壳_表单_08


单步跟踪法脱壳加密壳_加壳_09


这里的​​jnz​​​跳转实现,在上一句有​​popad​​,基本说明壳程序已经加载完毕,现在要将控制权移交原程序。

继续向下到retn返回

单步跟踪法脱壳加密壳_表单_10


到了一堆db里,我们删除分析,或按Ctrl+A,显示出了程序的入口点汇编指令。

单步跟踪法脱壳加密壳_表单_11

我们成功找到了OEP:004010CC
使用OllyDump脱壳即可。

单步跟踪法脱壳加密壳_加壳_12

单步调试的两个准则找到程序的真正入口点OEP:

  1. 程序向下执行。有向上执行的,可能是循环,跳过到F4。
  2. 近call进去,近call步入。视野范围之内看到的F7步入,视野之外(拖动滚动条,下拉才能看到的)F8步过,例外是系统库函数的调用可以步过,如kernel32。

Win10用​​ImportREC_fix​​, Win7用原版,修复动态链接资源库的表单

管理员身份运行ImportREC之前,需要脱壳的程序是ollydbg正在运行的。

单步跟踪法脱壳加密壳_加壳_13


右键Delete thunks。成功脱壳:

单步跟踪法脱壳加密壳_加壳_14


单步跟踪法脱壳加密壳_加壳_15


举报

相关推荐

0 条评论