406-407.x64项目汇编编写及调试bug

2021-04-27 13:23:29 任鸟飞 280

本文章用作技术交流以及反外挂游戏安全而用,请勿用作非法用途,检测某个功能,我们先要了解这个功能的实现原理。

未成年人不建议购买学习

购买飞郁C++课程,赠送任鸟飞VIP(合作)



任鸟飞逆向,飞郁培训官网发布

任鸟飞,郁金香等著名讲师出品的课程教程

零基础学外挂,学辅助,外挂与反外挂,逆向分析,脚本,游戏安全,软件安全


1.添加窗口

右键--添加--资源


Dilog--新建



删除界面上的按钮




2.添加窗口类

右键--添加类




写类名,基类CDialogEx--确定



3.初始化代码添加显示窗口代码

包含头文件



添加代码


CTestDialog *PMainDialog;//窗口类 DWORD WINAPI ShowTestDialog(LPARAM lpData) { PMainDialog = new CTestDialog;//给指针分配空间 PMainDialog->DoModal();//阻塞的方式 模态窗口 delete PMainDialog;//释放空间 FreeLibraryAndExitThread(theApp.m_hInstance, 1);//释放DLL退出线程 return TRUE; } // Cx64MFCDLL框架App 初始化 BOOL Cx64MFCDLL框架App::InitInstance() { CWinApp::InitInstance(); ::CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)ShowTestDialog, NULL, NULL, NULL);//启动测试功能窗口线程 return TRUE; }



4. 添加测试按钮




5.

注释放开




增加一句输出ASMadd函数地址,这样方便一会我们进汇编代码观察



然后注入,看输出结果
我们预计的结果应该是101+55+22 = 178

实际输出结果,和我们预计的差距很大



那么我们用debug 附加游戏, 跳到 ASMadd函数地址,看看有什么问题



发现是 call改变了rcx 和rdx的值


这样写就可以了



这次和我们预计的结果是一样的了


到这里其实x64调用汇编代码我们已经会了




电话咨询
QQ客服