从两个方面谈,一个是传奇是封包拦截通过拦截recv函数的返回接收数据做到的,recv函数存在于ws2_32.dll和wsock32.dll,属于系统dll。读入mir1.dat修改你无法定位,除非运行起来,但是运行起来后你修改dump出去也是系统的dll。此路不通,一个是从内存下手,这个数据存在于堆栈,取相对位置强制jmp修改可以,但是这个堆栈不是专属的,属于临时堆栈空间,强制改了后也会让游戏崩溃,毫无意义,如果硬说想实现其实也行,在mir1.dat里面自建一个区段,从入口点跳转过去,原理大概和InlineHook差不多,传奇的更新是通过判断md5,这样改了后会更新,阻拦更新的话和自己写个这个功能的挂来说没啥区别了,区别就是不需要注入器了,自进程唤起罢了。综上得出结论,不如开挂,基本是个挂都带这个功能
Ryan 发表于 2022-6-17 16:27
从两个方面谈,一个是传奇是封包拦截通过拦截recv函数的返回接收数据做到的,recv函数存在于ws2_32.dll和ws ...
感谢!
虽然没解决,但是分析很有道理.
为什么只要是个挂都能解决的问题,不用挂就解决不了呢?
周末愉快!
太阳树 发表于 2022-6-17 18:31
感谢!
虽然没解决,但是分析很有道理.
挂是自己的代码,自己想怎么写怎么写,mir1.dat是游戏的代码。受限制,最简单的一段汇编
MOV EAX,A//赋值EAX值为A
MOV EBX,B//赋值EBX值为B
CMP EAX,EBX//比较EAX和EBXxxxxxxxx
如果自己hook就可以
JMP XXXXXXX//跳转到自己代码
自己写运算
retn
然后上面的A和B是这里代码返回的数,通过修改A,B的数改变了代码运行轨迹和输出