注册忘记密码

黑客论坛,黑客工具,黑客教程,QQ技术,黑客基地,黑客网络,黑客软件,黑客联盟,免杀,远控,ddos,cc,黑客攻防,黑客编程,黑客定位,手机定位,微信定位,hack,黑客网站,查开房,定位,信息查询

查看: 580|回复: 0

[技术文章] 怎样调试由C++编写的Stub部分

[复制链接]
   0 UID
   0帖子
   0精华
21
   0威望
500
   0金币
45816
   0贡献
5000
   0阅读权限
   200
   积分
   0
   在线时间
   600 小时
   最后登录
   2020-6-6
发表于 2020-5-20 07:28:57 来自手机 | 显示全部楼层 |阅读模式
      由于Stub部分在运行时已经寄生到了其他的程序中,因此其调试目录相关的信息自然也就都失效了。当然,如果能在加壳时顺便处理调试目录的相关信息,那么直接调试处于寄生状态的壳也并非是不可能的事,但是我相信大多数人都不会这么做。 通过试验,笔者发现使用调试API函数OutputDebugString可以给我们带来不少便捷。 由于Stub在调试时都是以Release方式编译的,因此其反汇编代码相比源码来说变化很大,如果没有扎实的软件逆向的基础,很难快速地将眼前的一大片反汇编代码与你写的源代码相对应。但是使用了OutputDebugString函数后情况就不同了。 首先可以使用OutputDebugString的打印调试信息功能,使用DbgView工具查看其打印出来的信息;其次在使用OllyDbg调试Stub的时候,适当地使用OutputDebugString也会起到导航标的作用。可以看到,除了函数入口处的"Decrypt()Function Entry!"提醒我们已经进入Decrypt函数外,还有Decrypt()_01等标记函数中的关键点,这样我们就能迅速地在反汇编代码中定位到关键点,从而使我们的调试工作更加轻松可靠。本章详细地讲解了使用C++编写加壳程序的全部思路,并给出了一个基本的例子。读者可以由这个例子为起点设计自己的专业壳,进而写出自己的加密壳或免杀壳。 由于在壳的整个开发过程中,最不可控的就是Stub部分,因此笔者在设计本章的内容时,时时以降低Stub部分的复杂度为第一要素。因此大家应该可以发现,无论是我们编写的简单壳还是后来设计的专业壳,其Stub部分都是非常简单的。这就最大化地控制了整个加壳软件在技术方面的不稳定因素。 不过,由于篇幅限制与定位等因素,并不能在这里进行更为深入的讲解,但是如果大家能完全理解本章所讲的内容,那么编写出一个具有纯正C++血统(无任何汇编)的壳是完全有可能的。

发表回复

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则


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