代码实现技术
进程间的通信
1.动态链接库(dll)技术:
共享数据(需要预处理指令,共享的变量在定义时必须初始化,因为未初始化的数据存放在.bss段)
用dll实现进程间的通信:主进程和目标进程分别加载已创建好的dll文件,通过dll提供的导出函数对共享数据区访问,实现进程间的通信。
2、共享内存技术:
任何进程不允许读取、写入或者修改另一个进程的数据,使用共享内存可以实现共享数据的读写以响应别的进程。
过程:创建共享内存、数据传送、数据传输结束并将内存文件映射对象视图卸载和资源释放。
代码注入技术
1、目标:将代码体注入到目标文件、在目标文件启动时或者执行过程中钩住控制、获取目标文件重要数据信息、正确及时传送回获取到的信息。
2、动态X-code技术:
a、windows钩子技术;
b、用CreateRemoteThead远程注入进程技术:向远程进程中创建一个线程,通过此线程加载嵌有注入代码的DLL来实现远程加载。
c、使用CreateFileMapping共享内存技术:通过注入内存来控制目标进程
3、静态X-code技术:
a、向空闲空间注入:向PE文件头注入、向段尾部注入。(需要计算实际可用空间)
b、改写目标程序注入:找到注入点→覆盖源代码→保证正常运行。
c、混合注入
4、无论哪种注入技术,必须保证目标程序栈的平衡性和数据的准确性,在注入代码完成后还需要还原被覆盖的目标程序代码。
实例
目标
对扫雷程序中开始到结束整个过程进行跟踪,分析其中核心算法、设计思想。
需求分析
1、找出程序布雷的算法函数,分析布雷函数的实现方法,还原函数代码;
2、找出程序的排雷函数,分析排雷函数的实现方法,还原函数代码;
3、找出程序判断游戏开始与结束的时机和条件;
4、编写代码,还原主要功能函数。