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 手动脱壳
第七步:如何打入补丁
当做这一步时请注意.很多人不知道究竟该如何打补丁,所以努力试着理解我这里所作的, 然后学会在其它情况下运用.
第一步是改变跳转,
我们将要改变这个跳转为JMP 401000那是我们将要打补丁的地方, 父进程offset 401000 .
跳转设好了,现在去401000 (ctrl G)我们要开始写补丁了. 在report中我们可以看到三次entry point value.也许OEP在其它情况下会出现更多次.但是我们只需改变这三个.
father unpacks了在report中显示的block.所以我们将要欺骗father则他会相信从第一个section开始的所有blocks都存在错误, 一个接一个所有的blocks都会被unpacked.因为这一点我们需要知道第一个 section的起止点.点击"查看/内存"
这儿我们可以看到getright的sections.忽略Header section看text section,它从401000开始,结束在589000-1=588fff.
401000-588fff (第一个section的范围)
我们将要在report中用400000代替OEP的值.
正如你在图中看到的我写入了40000,然后patch会在每一个loop前加1000,所以第一个被unpack的block将在401000.
现在我们将要在401000处写下如下补丁.
00401000 8105 10F01200 0>picture1/add DWORD PTR DS:[12F010],1000
0040100A 8105 1CF01200 0>picture1/add DWORD PTR DS:[12F01C],1000
00401014 8105 20F01200 0>picture1/add DWORD PTR DS:[12F020],1000
这些行将我们先前在转储窗口(dump window)写的值增加1000.那些蓝色的值在不同的机器上可能会不同,所以修改为你在转储窗口(dump window)看到的实际值. 再次提醒,证实在转储窗口(dump window)写入了00 00 40 .最容易犯的错误就是在补丁(蓝色的)中的offset和转储窗口(dump window)的offset不匹配.
下一行该这样写:
0040101E 813D 20F01200 0>CMP DWORD PTR DS:[12F020],getright.00589000
比较是为了让我们知道何时所有的块都被unpacked了.
然后我们必须写下:
00401028 - 0F85 F6341F00 JNZ getright.005F7524
如果比较为假,则返回called loop的地方.然后我们需要在最后写下NOP,在那儿我们将要设下一个BP. 当它完成转储时,它将会停在那儿.
这儿我们可以看到完整的补丁代码
我们可以跟踪第一个循环,来检测report中的each entry是否每次都增加1000.
第八步: UNPACK
按F9运行程序然后等待它停在我们先前在补丁中设下nop的bpx处.如果没有错误发生,当我们停止时,看view-LOG我们将要看到所有的unpacked blocks.
这是假设的所有unpacked blocks的LOG.我没有完整的给出因为地方不够但是你可以在你的日志窗口中查看.
所以现在从401000到589000(包括588fff)的所有blocks都被unpacked了,然后dump已经就绪.
第九步:把CHILD从FATHER那儿脱钩
一旦我们停在NOP,让我们写下下面几行.
PUSH (child的handle )
Call DebugActiveProcessStop
如果handle由字母开始,你需要在它前面键入一个0,因为不这样做的话olly不会认出. 想知道son的handle只需看一下pupe, 记住child的handle是在两个进程中的上面的那个.你一样可以通过opening file attach来获得son的handle.那儿你可以看到两个名称相同的进程. 红的是father,黑的是son.在此情况下我得到的是B78 所以我将要写下0B78.记住handle在每次运行程序时都会改变.
相关文章
- “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







最新评论