美文网首页
脱壳经验1

脱壳经验1

作者: MagicalGuy | 来源:发表于2018-10-10 00:49 被阅读0次

脱壳-0.upx.exe
① 找OEP
ESP定律

脱壳-0.exe(FSG 2.0)
① 找oep
单步跟踪
跳转到OEP代码:
JMP DWORD PTR DS:[EBX+0xC]
② dump内存
。。
③ 修复IAT
FSG 2.0对内存中的IAT 进行了一些空隙填充,需要将其改为0

image.png

脱壳-2.exe
① 找OEP
单步跟踪

② IAT加密,解密IAT
解密IAT需要先找到加密IAT的地方,然后将其删除或是能还原。

找加密IAT代码的方式
① 对IAT设置硬件写入断点
对GetVersion所在的iat设置硬件写入断点,最终可以找到填充IAT的地方
004385EE 8907 MOV DWORD PTR DS:[EDI],EAX ; 填充IAT 函数地址

修改附近代码

修改前


image.png

修改后


image.png

② 对IAT相关的API设置断点
LoadLibraryA
GetProcAddress
GetModuleHandleA
VirtualProtect

脱壳中的一些问题
拿到程序怎么办?
以脱壳为目的,尽可能完成脱壳
技巧的使用?
① API下断注意的问题
API下断之后,第一应该观察的是堆栈,确定返回地址是我们要分析的模块

image.png

②注意当前分析的模块是不是主模块

image.png

脱壳-4.exe(未知壳)
① 找OEP
ESP定律
② IAT加密
这个壳使用一些加密技术:

IAT函数地址是不规则的
填充IAT时有混淆代码
自己实现了一个GetProcAddress
字符串使用Hash值来存储
壳代码填充IAT的代码是在申请的内存中执行
混淆规则

jmp 地址
等价于
call 地址
LEA ESP,DWORD PTR SS:[ESP+0x4]
哈希算法

edx=0, 保存计算之后的结果
LODS BYTE PTR DS:[ESI]
TEST AL,AL
JE SHORT 002F1CCB
ROL EDX,0x3
XOR DL,AL

寻找OEP脚本

// 1. 定义变量
VAR dwWriteIATAddr // 填充IAT地址的下一行地址
VAR dwGetAPIAddr // 获取到了API地址
VAR dwOEP // 原始OEP
VAR dwGetBaseAddr // 申请的内存
VAR dwTmp // 临时变量

// 2. 初始化变了
MOV dwOEP, 0047148B

MOV dwGetBaseAddr,0047A37F
// 0047A37F 0BC>OR EAX,EAX ; eax=申请的基地址

MOV dwWriteIATAddr,0897

// 001D0895 890>MOV DWORD PTR DS:[EDX],EAX ; 填充IAT
// 001D0897 E8 >CALL 001D08D5

//00300895 890>MOV DWORD PTR DS:[EDX],EAX
//00300897 E8 >CALL 003008D5

MOV dwGetAPIAddr, 0828

//00300828 ^\E9 >JMP 00300474 ; eax=函数地址

// 3. 清除所有断点
BPHWC
BPMC
BC

// 4. 设置断点
BPHWS dwGetBaseAddr, "x"
BPHWS dwOEP, "x"

// 5. 循环判断
LOOP0:
RUN

CMP eip,dwGetBaseAddr
JNZ NEXT1
ADD dwWriteIATAddr,eax
ADD dwGetAPIAddr,eax

BPHWS dwWriteIATAddr, "x"
BPHWS dwGetAPIAddr, "x"

JMP LOOP0

NEXT1:
CMP eip,dwGetAPIAddr
JNZ NEXT2

MOV dwTmp,eax
JMP LOOP0
NEXT2:
CMP eip,dwWriteIATAddr
JNZ NEXT3

MOV [edx],dwTmp
JMP LOOP0

NEXT3:
CMP eip,dwOEP
JNZ LOOP0

MSG "到达OEP!"

相关文章

  • 脱壳经验1

    脱壳-0.upx.exe① 找OEPESP定律 脱壳-0.exe(FSG 2.0)① 找oep单步跟踪跳转到OEP...

  • 脱壳经验2

    IAT在内存中和在文件中的特征?IAT在内存中是一个函数地址数组,在文件是是一个RVA数组 重定位的原理是什么?重...

  • 湖湘杯2019 RE wp(未完)

    菜鸟请大佬指导 0x01 arguement 1.脱壳 检查壳,有壳脱壳,不脱壳的话,IDA打开后你看到的就会是 ...

  • ipa重签(iReSign修改版)

    脱壳 1. 下载PP助手越狱版 2. 手动脱壳 otool -l WeChat | grep crypt暂无 安装...

  • 看电影看出漂亮打功

    相信大家都看过《金蝉脱壳1》和《金蝉脱壳2》,不知《金蝉脱壳了-恶魔车站》大家有无看过,同样是西尔维斯...

  • 加壳脱壳

    脱壳存根(stub) 脱壳存根执行了以下三个步骤: (1)将原始程序脱壳到内存中 (2)解析原始可执行文件的所有导...

  • 南美白对虾脱壳成功的关键是什么?如何预防软壳和脱壳不遂?

    南美白对虾的生长速度和对虾的脱壳速度是成正比的,虾的生长必须依赖脱壳。对虾脱壳需要满足的三个条件: 1、利用肝胰腺...

  • iOS app脱壳遇到的问题

    手机:iPhone 5s 10.3.3采用2种方式脱壳 1. Clutch 现在用Clutch脱壳 基本都失败了,...

  • 加壳脱壳(04)

    1.什么是脱壳? 摘掉壳程序,将未加密的可执行文件还原出来(有些人也称为“砸壳”) 脱壳主要有2种方法:硬脱壳、动...

  • 【脱壳】软件 - 工具汇总

    【脱壳】软件使用手册 脱壳工具: FDex2_1.1 微脱壳_1.0.0 易开发_1.0.4 Xposed环境: ...

网友评论

      本文标题:脱壳经验1

      本文链接:https://www.haomeiwen.com/subject/irxdaftx.html