代码注入相关知识以及扫雷程序的分析(分析过程之后添加)

代码实现技术

进程间的通信

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、编写代码,还原主要功能函数。

posted @ 2016-04-18 00:54  miaohj  阅读(543)  评论(4编辑  收藏  举报