调用软件【游戏】自身的CALL函数

打开游戏软件,打开CE工具并附加到程序中,不断的打击游戏找到有效的内存数据。右击是什么改写了数据。

再次改变游戏中的数据-----显示汇编程序。

怎样确定call有哪些参数,在Call前有几个push就有几个参数。参数是多少可以在Call处下断点。

可以发现push esi,再查esi寄存器的值是01F2EF78,可以发现这个应该是调用者的地址也就是玩家的地址。每次启动这个地址是会发生变化的。

当知道玩家或调用者的头地址054CEF78,call的地址059DC378,在内存查看器中点工具----自动汇编----自动汇编框架代码。

alloc(callDead,256)    //分配call函数 callDead内存空间
CreateThread(callDead)   //创建一个线程来调用callDead函数。

callDead:.
push esp,0c       //堆栈平衡,在汇编中照抄在push前和call后。若是注入就不需要了。
push 054CEF78     //汇编中esi的玩家头地址
call 059DC378    //在汇编中call后面的地址 
add esp,10       //堆栈平衡,在汇编中照抄在push前和call后。若是注入就不需要了。

ret                //调用线程是一定要ret的,否则会出问题。

可以通过选中或不选中来确定是否调用callDead函数。

通过修改数据变化扫描到地址后-----右击谁改写了这个地址------再次修改游戏数据的变化-------显示反汇编程序。

那怎样知道是谁调用了这个函数呢?可以在这个函数内的任意地方,下一个断点并运行,然后再把断点取消掉,调试-----运行到返回。

在add的上一句就是call的地方,而上面的两个push就是参数。

转载请注明出处:  https://www.cntworld.cn
智能工控 » 调用软件【游戏】自身的CALL函数

发表回复

提供最优质的资源集合

立即查看 了解详情