Cs1.6找基地址
找基地址
最近在搞FPS的外挂研究,拿CS1.6学的,不得不说,像是一个新的领域,学得确实让我感到心力交瘁,就例如这次的找基地址,让人难受
又干到凌晨了,我真服了,记录下找基地址的辛酸泪,以免忘掉
找自身坐标
这个算是比较好找的了,分为X,Y,Z坐标,最快的方法就是去找Z坐标,因为这个比较好控制变大,变小,所以很容易就能找到
不断筛选,筛了个大概,然后一般是选择绿色的,因为绿色的是相对固定的,不是堆栈空间
把它们添加到下栏里边
点击数值可以进行排序
剩下的就是瞅着顺眼的数值就整体用来半分法,一直找到修改后人物会飞天的效果(记得要锁定)
要让人物产生飞天的效果应该只有自己可以,不能让对面玩家飞起来,因为在真实环境下,对面人物的坐标都在服务器上,就算改了,也只是在你的本地视觉上稍微飞天了(超级快就被服务器修正了),所以我们能实现飞天的只有自己(有时候服务器还会修正,看游戏本身吧)
最终追到了俩基地址,貌似改哪个都行,都能产生飞天的效果(貌似还不止两个….)
浏览周围的数据,还能找到自身人物的X,Y坐标.随便记录下
1 | 自身X坐标:hw.dll+10F7F60-8 |
找自身的朝向
这个也不难,把枪朝天数值增加或减少,朝地数值减少或减少,改数值看准星有没有变化就行
和之前一样,就可以定位到唯一一个数据
间接找到了水平朝向的数值
1 | 自身垂直朝向:hw.dll+10569A4 |
遍历其他玩家的坐标
其中一个玩家的坐标为:
1 | hw.dll+11D0284 |
和之前一样,通过让人物暂停,运动,然后通过改值,人物有抽动(这其实就是坐标被修改了,但是马上被服务器修正了),这样反复用CE查找就可以找到了
这里插一句题外话:
我之前一直没找到如何保存这里的数据,现在找到了
点击这里就可以保存了
然后想恢复这些数据,直接导入就行
因为要遍历,所以我们需要知道人物坐标结构体的大小。(这里默认存人物坐标的是一个结构体数组)
通过CE附加去找到哪里修改了这个地址的值,然后就可以推出结构体的大小
欸我日,想上传一个视频的,但是发现视频太大了传不上去
那就简单提一下:
通过CE会找到一个修改人物坐标的汇编代码,懒的人可以直接找到汇编代码后,拉到IDA进行反汇编
可以看到,定位到结构体的地址应该是this+0x38,所以我们需要找出来这个this + 0x38究竟是咋算出来的
因为在x86汇编下,this就是ecx,所以我们需要一步步耐心地去追ecx的来源,一直执行到返回,耐心溯源
最终找到ecx的来源,This指针的值就为0xFB5690
然后我们在地址为 0xFB5690+0x38的位置下一个硬件写入断点
发现是这个函数的返回值写入了 0xFB5690+0x38,跟进去看看
这个函数很明显就是根据下标去计算结构体的地址,很容易计算出结构体的大小为0x250,结构体数组的及地址为0x5E3FEA8
淦
如果你以为结构体数组基地址就是固定0x5E3FEA8,那么就大错特错了,因为Dll加载会重定位,会导致基地址变化,因此我们需要记下来的是Dll基地址 + 偏移
1 | *(DWORD*)(hw_dll的基地址 + 0x9E409 + 0x1); |
这样去取出机器码里面的基地址才是对的
找阵营,找死亡标志
其中一个人物死亡标志
1 | hw.dll+746A64 |
其实我一开始找的是死亡标志,阵营是顺便找出来的
老方法,费老大劲了,终于找到其中一个人的死亡标志
根据CE谁更改了这个地址的值,找到汇编代码:
一顿分析,知道存这个结构体数组的基地址是0x53B6970,结构体大小为0x58。
然后分析又可以知道
+0x0是区分自己和别人
+0x52存的是人物阵营
+0x44存的是人物的死亡标志
同理:
1 | *(DWORD*)(hw_dll的基地址 + 0xC253F + 0x3); |
但是我这一版CS1.6注入DLL很不稳定,怀疑是这一版本相对于其他版本并不稳定,所以我换了一个版本:
下载链接:
【原创】【CS1.6辅助】 - 『编程语言区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
记录下数据:
人物朝向地址 垂直朝向cstrike.exe+0x1B59CAC 水平朝向:cstrike.exe+0x1B59CB0
自己的X坐标cstrike.exe+0x19E3F28 Y坐标 cstrike.exe+0x19E3F2C Z坐标cstrike.exe+0x19E3F30
对象其中一个坐标cstrike.exe+1B5A998 结构体基地址为0x2F5A5C4,结构体大小是0x24c
+0x188是x坐标 +0x18c是y坐标 +0x190是z坐标
其中一个对象死亡标志位 cstrike.exe+625724 0是活着,1是死的 结构体大小为0x68,结构体基地址为0x1A25654 第一个结构体是自己,如果第二个DWORD没有数据,则判定为敌方
矩阵基地址:
1 | cstrike.exe+1820100 //矩阵基地址 |
666