Getright 5 手动脱壳和重建IAT--第一部分(图)
互联网 发布时间:2008-10-08 19:05:36 作者:佚名
我要评论
这是一篇Armadillo加壳软件Getright 5.01的脱壳译文,我是参照Ricardo Narvaja的“Getright 5 脱壳和重建IAT”的文章以及Bighead[DFCG][YCG]的译文,一边实践一边再次翻译的。感谢Ricardo Narvaja和Bighead[DFCG][YCG]。
Armadillo for Dummies: Getright 5 手动脱壳
这些信息被保存在父进程的一个缓冲区从3B8FB0开始,然后它会复制给子进程一个从538000开始的 1000 bytes (BYTES TO WRITE)的块(block),所以如果我们到了这一步,我们可以很容易理解child的第一个section是完全空的,所以当它试图执行到OEP时,它报告一个error因为那儿没有任何东西,所以 father得到了通知正如我们可以在father的report中看到的,所以它停止了运行,复制必要的数据块,然后继续运行直到下一个error.被复制的数据块的大小是1000 bytes,所以当程序试图执行任何超过这个大小的block外的指令时, 另一个error将会发生,然后这个error会被通知给father, father会复制另外1000 bytes的块block然后继续.
顺便说一下,我们可以假设第一个error发生是因为son (坏小子)call了它的入口点OEP,它的值应该就在 report上.显然OEP的值必定在第一个block,father复制过去来解决son报告的error.
这个块从538000开始知道538fff.OEP值必定在这些值中. 让我们看一下REPORT.看转储窗口(DUMP window) 我们先前已经知道了指向report的指针12EFF8.
太好了!在那儿我们至少看到了三次这个值: 538540.数学课告诉我538540比538000大,比538fff小 (那些是father试图拷贝给son的那个块的起止值)所以我可以确信538540就是child的OEP.
让我们从API WriteProcessMemory来改变断点的性质.知道哪个块被拷贝不是很好吗.可以通过下面的方法做到.首先选择bpx所在的行,按F2移除bpx.
右击选择"断点/条件记录".现在在对话框中准确地填入如图所示的值.这样做的目的是使我们在记录窗口中看到所有被father decrypts并拷贝给son的blocks.
第四步: NOP THE CRIPTER CALL
在先前的参考教程s中我们知道,这儿我们是在decripter call.Father为son decrypts了一个block.但是还有一个cripter call用来encrypts或者destroys已使用的blocks来避免被转储dump.现在的任务是如何找到这个call并把它nop掉.
我现在在WriteProcessMemory API,所以我打开"呼叫堆栈窗口"(Alt K)在那儿我可以看到:
在这个"呼叫堆栈窗口"越靠上面的是越最新被执行的.从CALLED FROM 我们可以看到5F949E是father calls API的地方. 如果我们向下看,我们可以看到另一个call.所以我们获得了decripter call的offset.
DECRIPTER CALL= 5F88D1
通过"前往 表达" 5F88D1跳到那儿 ,或者左键双击它.
这是好的CALL,它用来decrypts.现在去找坏的那个,稍稍向下翻屏或者右击选择"查找参考/呼叫目标" 选择出现的两个参考中的另一个.
它在这儿呢!
重新加密的call--ENCRIPTER CALL = 5F8A24
现在我们把它nop掉.我们选择这个call按空格写入nop.
顺便说一下,我们可以假设第一个error发生是因为son (坏小子)call了它的入口点OEP,它的值应该就在 report上.显然OEP的值必定在第一个block,father复制过去来解决son报告的error.
这个块从538000开始知道538fff.OEP值必定在这些值中. 让我们看一下REPORT.看转储窗口(DUMP window) 我们先前已经知道了指向report的指针12EFF8.
太好了!在那儿我们至少看到了三次这个值: 538540.数学课告诉我538540比538000大,比538fff小 (那些是father试图拷贝给son的那个块的起止值)所以我可以确信538540就是child的OEP.
让我们从API WriteProcessMemory来改变断点的性质.知道哪个块被拷贝不是很好吗.可以通过下面的方法做到.首先选择bpx所在的行,按F2移除bpx.
右击选择"断点/条件记录".现在在对话框中准确地填入如图所示的值.这样做的目的是使我们在记录窗口中看到所有被father decrypts并拷贝给son的blocks.
第四步: NOP THE CRIPTER CALL
在先前的参考教程s中我们知道,这儿我们是在decripter call.Father为son decrypts了一个block.但是还有一个cripter call用来encrypts或者destroys已使用的blocks来避免被转储dump.现在的任务是如何找到这个call并把它nop掉.
我现在在WriteProcessMemory API,所以我打开"呼叫堆栈窗口"(Alt K)在那儿我可以看到:
在这个"呼叫堆栈窗口"越靠上面的是越最新被执行的.从CALLED FROM 我们可以看到5F949E是father calls API的地方. 如果我们向下看,我们可以看到另一个call.所以我们获得了decripter call的offset.
DECRIPTER CALL= 5F88D1
通过"前往 表达" 5F88D1跳到那儿 ,或者左键双击它.
这是好的CALL,它用来decrypts.现在去找坏的那个,稍稍向下翻屏或者右击选择"查找参考/呼叫目标" 选择出现的两个参考中的另一个.
它在这儿呢!
重新加密的call--ENCRIPTER CALL = 5F8A24
现在我们把它nop掉.我们选择这个call按空格写入nop.
相关文章
- “CMOS密码”就是通常所说的“开机密码”,主要是为了防止别人使用自已的计算机,设置的一个屏障2023-08-01

QQScreenShot之逆向并提取QQ截图--OCR和其他功能
上一篇文章逆向并提取QQ截图没有提取OCR功能, 再次逆向我发现是可以本地调用QQ的OCR的,但翻译按钮确实没啥用, 于是Patch了翻译按钮事件, 改为了将截图用百度以图搜图搜索.2023-02-04
QQ截图是我用过的最好用的截图工具, 由于基本不在电脑上登QQ了, 于是就想将其提取出独立版目前除了屏幕录制功能其他都逆出来了, 在此分享一下2023-02-04
非系统分区使用BitLocker加密导致软件无法安装的解决方法
很多电脑用户在考虑自己电脑磁盘分区安全时会采用 Windows 自带的 BitLocker 加密工具对电脑磁盘分区进行加密。但有些人加密后就会忘记自己设置的密码从而导致在安装其它软2020-11-25
防止离职员工带走客户、防止内部员工泄密、避免华为员工泄密事件的发生
这篇文章为大家详细介绍了如何才能防止离职员工带走客户、防止内部员工泄密、避免华为员工泄密事件的发生,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-27
彻底防止计算机泄密、重要涉密人员离职泄密、涉密人员离岗离职前防范举
近些年企业商业机密泄漏的事件屡有发生,这篇文章主要教大家如何彻底防止计算机泄密、重要涉密人员离职泄密、告诉大家涉密人员离岗离职前的防范举措,具有一定的参考价值,2017-06-27- 最近有电脑用户反应量子计算机可以破解下载的所有的加密算法吗?其实也不是不可以,下面虚拟就为大家讲解买台量子计算机,如何分分钟破解加密算法2016-09-26
怎么破解Webshell密码 Burpsuite破解Webshell密码图文教程
webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,一种网页后门。黑客通常会通过它控制别人网络服务器,那么怎么破解webshell密码呢?一起来看看吧2016-09-19- 本文讨论了针对Linux系统全盘加密的冷启动攻击,大家都认为这种攻击是可行的,但执行这么一次攻击有多难?攻击的可行性有多少呢?需要的朋友可以参考下2015-12-28
防止泄露公司机密、企业数据防泄密软件排名、电脑文件加密软件排行
面对日渐严重的内部泄密事件,我们如何守护企业的核心信息,如何防止内部泄密也就成了摆在各个企业领导面前的一大问题。其实,针对内网安全,防止内部信息泄漏早已有了比较2015-12-17







最新评论