美文网首页
脱壳之未知加密壳

脱壳之未知加密壳

作者: 看雪学院 | 来源:发表于2018-12-26 18:13 被阅读27次

拿到一个程序之后首先用PEID查看一下有什么有用的信息。

只能发现链接器版本是VC6.0。根据经验可以推论出此程序的OEP特征。

平衡堆栈的汇编代码:SUB  esp,0x58

第一个调用的函数是:GetVersion()

类似的程序特征如下图。

程序入口有标准的pushad/pushfd,使用ESP定律下硬件执行断点。

运行之后依次找到pushfd pushad之后,单步几下就会到达oep位置。

到达程序入口点,ctrl+A进行分析之后发现,第一个函数没有显示Getversion()。推测可能被加密了。

壳当中生成加密IAT的步骤是:

获取原始IAT的函数地址,并保存到一定位置。

申请空间,构造新的IAT函数。

原始函数地址填充代码段,构造新IAT函数代码进行加密。

将新构造的函数地址填充到IAT表。

跟进去这个地址查看一下,发现返回值弹出真正的函数地址。

设置硬件断点,重新运行程序。

断到壳代码中填充IAT表的地方。

写入IAT的地方是一个循环,包括获取原始函数地址,函数地址被拷贝到新的代码段中,然后将新的代码段地址写入IAT

首先在填充IAT处,下断点,ctrl+F11,进行run跟踪。

获取到原始函数地址。

继续往上查看EAX来自于哪。

将原始函数地址写入到代码段。

我们要做的任务就是把获取原始函数的地址填写到IAT中。

通过写脚本来运行。

//定义变量

VAR dwGetAPIAddr 

VAR dwSetIATAddr 

VAR dwOEP 

VAR dwTep

MOV dwGetIATAddr,001D0474// 获取 API 地址的地方 

MOV dwSetIATAddr,001D0897// 填充 IAT 的地方

MOV dwOEP, 0047148B// OEP

//去除断点

BC

BPHWC

BPMC

// 设置断点

BPHWS dwOEP, "x"

BPHWS dwGetIATAddr,"x"

BPHWS dwSetIATAddr ,"x"

//构造循环

LOOP1:

RUN //运行程序

//判断是否是获取API的地方

cmp eip, dwGetAPIAddr 

JNZ SIGN1

mov dwTep,eax//将原始函数地址用一个临时变量保存

jmp LOOP1

//判断是否是填充API的地方

SIGN1:

cmp eip, dwSetIATAddr 

JNZ SIGN2

mov [edx],dwTep //将原始函数地址写入IAT表

jmp LOOP1

//判断是否为OEP

SIGN2:

cmp eip, dwOEP//到达OEP处退出

JZ EXIT

jmp LOOP1

//结束

EXIT:

MSG "IAT解密完成"

脚本运行成功界面:

最后需要dump文件,修改输入表。

运行成功界面。

原文作者:Jabez

原文链接:https://bbs.pediy.com/thread-248537.htm

转载请注明:转自看雪学院

更多阅读:

看雪CTF.TSRC 2018 团队赛 第十二题 移动迷宫

[原创]恶意代码分析实战Chapter1

[原创] LL(1) 语法分析器解析算数表达式生成AST,和我学习编译的原因

[原创]【编译原理】文法解析算法以及左递归消除算法

相关文章

  • 脱壳之未知加密壳

    拿到一个程序之后首先用PEID查看一下有什么有用的信息。 只能发现链接器版本是VC6.0。根据经验可以推论出此程序...

  • ios脱壳

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

  • 加壳脱壳(04)

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

  • iOS逆向与安全8.1:砸壳、初识Theos

    砸壳 软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 砸壳原理 应用加壳(加密)提交给...

  • 应用砸壳

    砸壳 软件脱壳,顾明思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密) 砸壳原理 应用加壳(加密) 应用砸...

  • [iOS逆向]18、砸壳

    软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 1、砸壳原理 1.1、应用加壳(加密)...

  • iOS应用砸壳

    概述 软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 砸壳原理 应用加壳(加密)提交给...

  • iOS逆向-砸壳上(ⅩI)

    软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 砸壳原理 应用加壳(加密)提交给App...

  • iOS逆向实战--029:应用砸壳

    软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 砸壳原理 应用加壳(加密)提交给App...

  • 六 iOS逆向 - 脱壳

    加壳脱壳基本概念 使用dumpdecrypted工具进行iOSApp脱壳 一 加壳脱壳基本概念 一 什么是加壳? ...

网友评论

      本文标题:脱壳之未知加密壳

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