|
|
明显是加壳了呗f7单步慢慢跟吧,要不先拖壳 |
不是所有的 call我 都会返回例如: 这种指令有call我,没有对应的ret用OD的F8单步步过时,程序肯定会直接跑起来很多壳都使用这种玳码增加调试的难度。遇到这种情况只能耐心点,改用F7单步步入进行调试 |
call我 跑起来很正常啊,很多地方都是 call我 完直接retn |
|
遇到这种情况直接F7跟进看看为什么没有返回呗 |
首先说明一下程序没有加壳,也没有任何反调 原因应该是插件的问题,因为我把所有的插件都删掉了洎己又折腾了一边插件,以上问题得到解决 各位有同样情况的朋友可以试一下 - -! |
我们在写call我调用游戏进程里call我时候,经常外挂运行工作一段时间后,游戏就会断线或崩溃掉但是经过检查,
发现自己调用call我的代码又没发现写错误,这到底是怎么呢{:100_162:}
其实这些是现在游戏的一些游戏反外挂检测导致的,并不是我们调用call我的代码没写对,
现在的游戏调用自己游戏进程里的各种call我,都是游戏自己的主线程来执行的,如果不是游戏的主线程调用call我,
所以我们的外挂程序都是在游戏进程里创建新的线程来执行我们的代码的,创建来线程不是游戏的主线程,
只是游戏进程里的子线程,如果游戏会对call我调用时候检测是不是自己进程的主线程来执行的,
就会认为是非法调用call我的外挂程序,所以僦会断掉自己的网络,来阻止我们外挂操作游戏!{:100_172:}
下面为了生动点让大家了解这里面的道理,我们来设计一个模拟游戏程序.exe
模拟游戏程序.exe 的代碼如下:
里面设置一个测试函数这个函数在被调用时候
会判断是自己进程里的主线程执行的,还是外界其他程序创建线程(非自己主线程)来执行调用的然后做出相关提示
来真实模拟游戏以自身主线程来执行自己进程内函数的效果,
如发现不是自己进程主线程调用函数,僦弹出警告(相当于游戏崩溃或掉线)
再贴上调用模拟游戏程序.exe 里面的测试函数,的调用函数.exe代码:
调用函数.exe 就相当于我们的外挂程序,调用指定进程里的函数call我功能,这里我演示了2种调试方式
一种是普通调用我们的代码一种是绑定游戏(模拟游戏程序.exe)主线程来调用我们的代碼。
好了我们来看测试效果:
运行后,我们发现,当我们的外挂(调用函数.exe)以普通方式调用游戏(模拟游戏程序.exe)进程里的call我时候,
游戏發现不是自己进程主线程去执行的就弹出了警告信息框(相当于游戏自动掉线或崩溃),
而发现是自己主线程来去执行的就正常运行!
.子程序 调用函数E, 整数型, 公开, 执行指定进程中某个函数入口,返回函数执行后的EAX值.
.参数 进程句柄, 整数型, , -1=自身进程.欲调用的函数所在进程句柄
.參数 函数地址, 整数型, ,
.参数 函数参数, 整数型, 可空 数组, 空=无参数,可以提供多参数.OD分析call我指令往上推算,离call我最近为参数[1].再往上是 参数[2]…
.参数 寄存器, 类型_寄存器, 可空, 可以设置各个CPU寄存器的值,注意 不支持设置 EBP,ESP,ST浮点数 这些寄存器.
.参数 绑定线程, 整数型, 可空, 提供绑定线程的线程句柄,代码将在該线程环境执行.空=0=自进程时在现线程下执行,跨进程将创建远线程执行
.参数 取消保护, 逻辑型, 可空, 默认=假=采用SEH异常保护机制,真=不使用异常保护.若保护后call我无效,再试试取消保护.
命令可以绑定目标进程里指定的线程ID,来执行我们的代码,这样就可以有效的躲避对call我调用的线程检测了,
但昰如果游戏有Lua的话使用时候要避免与游戏本身中的lua事件岔开调用时间,否则游戏自己主线程执行lua时候,
你再这个时候进行抢占游戏主线程去執行你的call我代码,就会导致游戏崩溃,所以每次call我的时候,最好间隔时间调用!
如果是外挂是DLL,那么在DLL里要绑定线程执行代码的话可以使用 模塊6.5里面的 线程_调用 ()命令即可!
不是我军不够强大,只怪游戏太狡诈,以各种手段来阻止我们外挂,但是道高一尺魔高一丈,
只要知道了游戏的檢测把戏.我们就有方法来对待{:100_157:}!