吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12800|回复: 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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
FIND eip, #61#                         //类似于Ctrl+B,结果保存在$RESULT当中
BPHWS $RESULT, "x"
RUN  
MSG $RESULT   
BPHWC $RESULT
    这时候代码就会段在图一所示的100A0A60处的popad,那么我们接下来要做的只需要单步两下,再对代码进行分析就到了OEP
[Asm] 纯文本查看 复制代码
STO                                         //单步F8运行
STO                                        //单步F8运行
MSG "欢迎来到OEP,By:BattleHeart"
AN eip                                //对程序进行分析
RET

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

图四

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

分析完毕;
       整个脚本就是如下所示;
[Asm] 纯文本查看 复制代码
//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, 2024-11-17 10:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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