版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zz709196484/article/details/78699555
Call注入简介
差不多有一周的时间,完成了扫雷辅助的项目
项目地址
(感觉好玩的东西, 多有不足,还请各位交流指正)
过程中遇到相当多的问题与麻烦, 逐个解决.难得闲暇,
就记录过程中的一些 point
核心代码
CONST LPWORD offsetFnClick = (LPWORD)0x01003512; //选方格的函数地址
BOOL Click(DWORD x, DWORD y)
{
_asm {
//这里压入参数
push x
push y
call offsetFnClick //调用选方格函数
}
return 0;
}
上面的代码片 就是实现了在雷区的点击 , 点击(x,y)这个方格
实现这个功能的核心代码很简单, 一看就懂 , 压参数, 然后直接call地址
这里记录的原因,算是学习了一种新的途径吧
常规思路是在Local 的应用里面 , 发送鼠标消息, 来模拟 鼠标的点击, 和移位. 简约简单 ,但是感觉一点都不professional.
这种直接 call remote 的内部函数,显然显得高效 , 舒服
实现过程
实现过程并不复杂 , 这段代码是存在与DLL 文件中的, 我们用常规方法
把 该dll 注入到 remote 的内存空间 , 这样 就可以控制 ,使其 CALL 点击函数
- 打开远程线程
- 使用VirtualAllocEx函数在远程进程内存地址空间分配DLL文件名缓冲区
- 在远程进程中写缓冲区
- 取得 loadlibrary 地址
- 创建远程线程
上面也是流程
具体远程线程注入过程见远程线程注入
关键点,在于后面的 offsetFnClick
这个是 扫雷程序里面点击的 函数地址 , 照这个函数 , 基本是od 单步下来的
(其实早该看栈回溯的…)