也想出现在这里? 联系我们

Getright 5 手动脱壳和重建IAT–第一部分(图)

作者 : 小编 本文共2642个字,预计阅读时间需要7分钟 发布时间: 2021-06-23 共4.64K人阅读
也想出现在这里? 联系我们

这是一篇Armadillo加壳软件Getright 5.01的脱壳译文,我是参照Ricardo Narvaja的“Getright 5 脱壳和重建IAT”的文章以及Bighead[DFCG][YCG]的译文,一边实践一边再次翻译的。感谢Ricardo Narvaja和Bighead[DFCG][YCG]。
Armadillo for Dummies: Getright 5 手动脱壳和重建 IAT (第一部分)
因为Armadillo实在是太复杂了,以至于人们已经不得不沿用下面这个手动的方法去脱壳armadillo,这不是我的过错,只是因为armadillo实在是太难脱壳了,然后我将会在这个文档中一步一步地去完成脱壳,同时配上很多图片,只是想让它变得尽量容易理解.我并不想写一个10兆大的参考教程,所以我把这个文档分成两部分.第一部分主要讲如何转储(dump)armadillo保护的程序,然后我会在第二部分中提及一些以前在其它任何教程中都未曾见过的东西,那就是输入表(import table)的redirection和rebuilding.
在我们开始之前,我必须声明这篇参考教程只在Windows XP上测试.请不要在 windows98或者2000中尝试.原因是只有Windows xp才拥有必要的API,能够把子进程(child)从它的父进程father那儿脱钩下来.
这次练习,我们找到的自愿者是Getright 5 final. Crusader曾经写过关于这个软件的某一个版本的参考教程,但是这篇参考教程在很多方面都不同于crusader写的那篇.
crusader写的那篇参考教程(原版)—-附(1)
crusader写的那篇参考教程(FTBirthday翻译版本)—-附(2)
你可以从以下连接下载GetRight 5.不管怎样我在我的ftp中保存了一个副本,所以你可以从那儿下载,就不用去管它在网上被放在哪儿了.
http://www.getright.com/
抓起你的鼠标,安装好Getright然后准备作战.Armadillo将会变得软弱无力.
如何脱壳(UNPACK)以及转储(DUMP)Getright 5
在OLLYBG中载入GETRIGHT.exe然后整装待发.我将按照以下的步骤,很容易记住的,你可以在其它任何armadillo保护软件中按部就班.
第一步:重新设置检测ISDEBUGGERPRESENT API的字节
我将要解释如何在任何电脑中去寻找这个字节.
首先从这个连接下载命令行插件:
http://dd.x-eye.net/file/cmdbar10802.zip
解压它然后复制dll到OLLYDBG文件夹.只要你运行Ollydbg你将会在调试窗口的左下角看到一个白色的输入框,在那儿你可以键入很多命令.让我们键入:
Bp IsDebuggerPresent
我们将要使用BP而不是BPX,因为BP可以直接在API上下断点,那正是我们所需要的.
我们必须准确地键入Bp IsDebuggerPresent.记住我们必须保证大小写的顺序,因为如果我们键入了任何不同于以上形式的命令,那么一个错误提示(UNKNOWN COMMAND)将在命令行的右边产生.所以正确地键入BP IsDebuggerPresent然后按回车. 如果在按回车后没有错误提示出现,那就说明这个BP已经生效.
现在按F9运行程序,它将会中断在API IsDebuggerPresent

在这张图中我们可以看到OllyDBG中断在API IsDebuggerPresent(红色), 然后按F7步进到第三行(白色)
77E52749 0FB640 02 MOVZX EAX,BYTE PTR DS:[EAX 2]
一旦到达那儿,看一下disassembly,在那儿我们可以看到如下图的内容:

这儿我们可以看到在我的机器中偏移是7ffdf002,包含了值01.这个地址在其它机器中可能会不同. 值01意味着调试器被检测到了,所以写下这个地址,在任何时候我们在ollydbg中运行程序,都必须把它修改为00,从而避免被packer检测到.记住在ollydbg中运行或重运行程序的任何时候修改此值为00.
我们将以重启ollydbg (ctrl F2)来结束第一步,到转储窗口(DUMP)单击右键选择"前往 表达" 7ffdf002或者其它任何先前你记下的地址,然后把它的值从01修改为00.


把它改为00.

第二步:BP WAITFORDEBUGEVENT
这一步并非必要,但却是一个好的选择,当它停止时在转储(DUMP)区看到report.让我们看看该怎样做.
首先我们需要在命令行输入BP WaitForDebugEvent,和我们输入IsDebuggerPresent的方法是相同的.
现在运行它,当它停下时我们可以在堆栈窗口(Stack window)看到关于这个API的所有参数信息.

看一下第二行.那儿我们可以看到它将在哪儿显示report,所以到转储窗口(dump window), 右键选择 "前往 表达"= 12EFF8.注意这个值在一些机器上可能会不同,所以前往你的机器显示的值.

我们在上面的图中看到的是我们将要称之为"API report"的东西.主程序(让我们把它称为Father)通过那里得知secondary program(让我们把它称为son)发生了什么.
现在我们可以很容易地通过在命令行输入BC WaitForDebugEvent来删除这个断点.
所有的操作都是为了在转储窗口(dump window)看到report,在这个report中我们可以看到入口点OEP(entry point).
第三步: BP WRITEPROCESSMEMORY

像图中一样设置这个断点然后点击"运行".也许你会在一些例外(exceptions)处停下,但是你可以通过按SHIFT F9很容易地走过.一旦我们停在了WriteProcessMemory API不要做任何事情,看下图:
正如我们在下图中看到的, father将要复制给son的第一个块(block)的所有信息,都可以在堆栈窗口(STACK window)看到.

FTBirthday:由经验,我觉得很难走到这一步,但是我知道是在005F949E处call了WriteProcessMemory如图:

我通过一遍遍试验,得出了最好的方法:等到前两次在别处call了WriteProcessMemory后,左手一直按住shift, 右手连续按F9大约31次,就可以顺利到达.

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » Getright 5 手动脱壳和重建IAT–第一部分(图)

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录