吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12943|回复: 33
收起左侧

[原创] 教你如何写UPX脱壳脚本

  [复制链接]
Martin 发表于 2014-10-18 22:20
本帖最后由 Martin 于 2014-10-18 23:02 编辑

一、开篇
首先要写在前面本篇文章写的UPX脱壳脚本有可能不是所有的UPX都使用,仅供学如果,仅供学习怎样去一个简单地脚本节省劳动力,这里不多废话,俗话说的好:“工欲善其事必先利器”,那么我们今天要用的利器就是OllySubScript脚本编写工具,有很多这类的工具,找一个就好了!下面就是对写脚本的具体分析。
这里重点说明一点:写脚本其实就是对在OD中进行分析得来的,这句话说通俗点就是比如我们载入OD后我们都会F8单步走,那么对应翻译成脚本就是STO,我们在脚本中写STO就是单步走一下!
今天我们要写的加了UPX壳的DLL,顺便将DLL的重定位地址找到;着重讲的是一个思路,这里重点思路是UPX壳是开始都是pushad和结尾是popad,这里就算是我们找到的一个特征码,记录下来我们将DLL文件载入到OD中进行查看!首先用PEID查壳看一下壳的版本!

图一

图一
将DLL文件载入到OD中。相信大家手托过UPX的都知道往下拉看看结尾处!

图二

图二
    我们通过这个跳转到OEP的上面看到popad这个指令,那么我们就可以找到一个关键点,也就是这个popad这里,那么我们就从这里下手!进行写脚本!我们可以通过OD里面的搜索功能查找popad出现的次数,Ctrl+F查找popad;发现还有一个地方有这个指令,就是下面这里:

图三

图三
       既然我们已经找到了这个关键点Popad了,那么我们就来开始写脚本!
       首先我要在脚本中写找到popad这个指令的语句,用Find查找来进行,类似于OD里面的Ctrl+B查找61;如果查找成功,地址会保存到保留变量$RESULT中,否则$RESULT将等于 0
[Asm] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
Var cc                //这里声明一个变量用来保存$RESULT的值
FIND eip, #61#         //类似于Ctrl+B,结果保存在$RESULT当中
MOV cc,$RESULT        //将查找的61的地址保存在cc中,注意这里查找的popad是100A0A29地址处的popad,注意我们在这个地方下硬件执行断点时候OD停不下来,那么我们就可以ret后面进行下断点2F-29=6,那么我们就在这个cc基础上加6
ADD cc,6
BPHWS cc,”x”           //在指定地址,设置硬件断点。有三种模式: "r" - 读取, "w" - 写入 或者 "x" - 执行.
RUN                                //运行
MSG   $RESULT                //弹出地址下硬件执行断点的地址(用来做测试)
BPHWC  cc                        //清楚硬件执行断点


上面的代码就会运行到我们查找的第一个popad后面的100A0A2F处断下,代码是add edi,0x4,100A0A2F处下面再查找popad的时候就是到OEP的那个Jmp上面的Popad了!
[Asm] 纯文本查看 复制代码
1
2
3
4
5
FIND eip, #61#                         //类似于Ctrl+B,结果保存在$RESULT当中
BPHWS $RESULT, "x"
RUN 
MSG $RESULT  
BPHWC $RESULT
    这时候代码就会段在图一所示的100A0A60处的popad,那么我们接下来要做的只需要单步两下,再对代码进行分析就到了OEP
[Asm] 纯文本查看 复制代码
1
2
3
4
5
STO                                         //单步F8运行
STO                                        //单步F8运行
MSG "欢迎来到OEP,By:BattleHeart"
AN eip                                //对程序进行分析
RET

    这样初步的脚本就写完了,接下来就是我们所说的对DLL进行加壳之后比EXE多一个重定位的查找;
    这里我们说一个快速查到的UPX壳的DLL重定位地址的方法,那就是搜索下面这几条语句;
[Asm] 纯文本查看 复制代码
1
2
3
4
xchg ah,al
rol        eax,0x10
xchg ah,al
add eax,esi
    这几条指令上面会有moveax,dword ptr ds:[ebx]dword ptr ds:[ebx]存放的就是重定位的地址。

图四

图四
        那么我们就需要查找这几个指令,进行查找重定位地址
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
VAR tezhengma1                //用来存放重定位地址
VAR ee                        //用来存放$RESULT的结果
FIND eip,#86c4c1c010#        //查找上面指令
MOV ee,$RESULT
MSG $RESULT                        //这里地址是100A0A46
SUB ee,2                                //100A0A44这个位置
BP ee                                //断点到Mov eaxdword ptr ds:[ebx]
MOV tezhengma1,[ebx]        //既然已经断在了这个位置那么我们就可以取出这个值并弹出来
MSG tezhengma1
BC ee                                //清楚F2断点

分析完毕;
       整个脚本就是如下所示;
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//UPX脱壳脚本之一
VAR cc
VAR tezhengma1
 
VAR ee
FIND eip,#86c4c1c010#
MOV ee,$RESULT
MSG $RESULT
SUB ee,2
BP ee
MOV tezhengma1,[ebx]
MSG tezhengma1
BC ee
FIND eip, #61# 
MOV cc,$RESULT
ADD cc,6
BPHWS cc, "x"
RUN
MSG   $RESULT
BPHWC  cc
FIND eip, #61#
BPHWS $RESULT, "x"
RUN 
MSG $RESULT  
BPHWC $RESULT
STO
STO
MSG "欢迎来到OEP,By:BattleHeart"
AN eip
RET

         运行结果:
     这个是重定位处断下的地址

图五

图五
      这个是重定位地址:别忘了减去基址哦!

图六

图六
      第一个Popad地址:

图七

图七
      断在了popad

图八

图八
          OEP了!

图九

图九
程序下载地:链接: http://pan.baidu.com/s/1o6HmsrC 密码: a2b6


希望大家在看的时候别忘了给点热心值,写文章不易啊!!各位看官

免费评分

参与人数 8吾爱币 +1 热心值 +8 收起 理由
skeep + 1 + 1 用心讨论,共获提升!
wang1234561211 + 1 我很赞同!
caleb110 + 1 谢谢@Thanks!
www52pojiecn + 1 谢谢@Thanks!
aikuimail + 1 我很赞同!
zaikk + 1 我很赞同!
Shark恒 + 1 谢谢@Thanks!
gxxxx0888 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

smile1110 发表于 2015-4-7 22:02
Martin 发表于 2015-4-6 20:32
@smile1110  本身就是个外挂里面的dll是加密的你是逗我吗?

一年只有三季
蚯蚓翔龙 发表于 2014-10-18 22:24
懒惰的上帝 发表于 2014-10-18 22:26
2217936322 发表于 2014-10-18 22:30
三楼,,,挺近的!
dongfang155 发表于 2014-10-18 22:43
哈哈哈,适合我这种新手啊
Bad丶Boy 发表于 2014-10-18 22:44
用OD写?
 楼主| Martin 发表于 2014-10-18 23:01

OllySubScript
Bad丶Boy 发表于 2014-10-18 23:03

不是OD吗???
 楼主| Martin 发表于 2014-10-18 23:07

你自己百度吧!
头像被屏蔽
红客鄙哥 发表于 2014-10-18 23:27 来自手机
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-6 01:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表