找基地址

最近在搞FPS的外挂研究,拿CS1.6学的,不得不说,像是一个新的领域,学得确实让我感到心力交瘁,就例如这次的找基地址,让人难受

又干到凌晨了,我真服了,记录下找基地址的辛酸泪,以免忘掉

找自身坐标

这个算是比较好找的了,分为X,Y,Z坐标,最快的方法就是去找Z坐标,因为这个比较好控制变大,变小,所以很容易就能找到

不断筛选,筛了个大概,然后一般是选择绿色的,因为绿色的是相对固定的,不是堆栈空间

1722997384396

把它们添加到下栏里边

点击数值可以进行排序

1722997466975

剩下的就是瞅着顺眼的数值就整体用来半分法,一直找到修改后人物会飞天的效果(记得要锁定)

要让人物产生飞天的效果应该只有自己可以,不能让对面玩家飞起来,因为在真实环境下,对面人物的坐标都在服务器上,就算改了,也只是在你的本地视觉上稍微飞天了(超级快就被服务器修正了),所以我们能实现飞天的只有自己(有时候服务器还会修正,看游戏本身吧)

1722998360605

最终追到了俩基地址,貌似改哪个都行,都能产生飞天的效果(貌似还不止两个….)

1722998535114

浏览周围的数据,还能找到自身人物的X,Y坐标.随便记录下

1
2
3
4
5
自身X坐标:hw.dll+10F7F60-8

自身Y坐标:hw.dll+10F7F60-4

自身Z坐标:hw.dll+10F7F60 (hw.dll+1121A90)

找自身的朝向

这个也不难,把枪朝天数值增加或减少,朝地数值减少或减少,改数值看准星有没有变化就行

和之前一样,就可以定位到唯一一个数据

1723000234316

间接找到了水平朝向的数值

1723000227916

1
2
3
自身垂直朝向:hw.dll+10569A4

自身水平朝向:hw.dll+10569A8

遍历其他玩家的坐标

其中一个玩家的坐标为:

1
hw.dll+11D0284

和之前一样,通过让人物暂停,运动,然后通过改值,人物有抽动(这其实就是坐标被修改了,但是马上被服务器修正了),这样反复用CE查找就可以找到了

1723019139786

这里插一句题外话:

1723019158696

我之前一直没找到如何保存这里的数据,现在找到了

点击这里就可以保存了

1723019295003

然后想恢复这些数据,直接导入就行

因为要遍历,所以我们需要知道人物坐标结构体的大小。(这里默认存人物坐标的是一个结构体数组)

通过CE附加去找到哪里修改了这个地址的值,然后就可以推出结构体的大小

1723019779624

欸我日,想上传一个视频的,但是发现视频太大了传不上去

那就简单提一下:

通过CE会找到一个修改人物坐标的汇编代码,懒的人可以直接找到汇编代码后,拉到IDA进行反汇编

1723036174263

可以看到,定位到结构体的地址应该是this+0x38,所以我们需要找出来这个this + 0x38究竟是咋算出来的

1723036246552

因为在x86汇编下,this就是ecx,所以我们需要一步步耐心地去追ecx的来源,一直执行到返回,耐心溯源

1723036539569

最终找到ecx的来源,This指针的值就为0xFB5690

然后我们在地址为 0xFB5690+0x38的位置下一个硬件写入断点

发现是这个函数的返回值写入了 0xFB5690+0x38,跟进去看看

1723036752885

这个函数很明显就是根据下标去计算结构体的地址,很容易计算出结构体的大小为0x250,结构体数组的及地址为0x5E3FEA8

1723036785529

如果你以为结构体数组基地址就是固定0x5E3FEA8,那么就大错特错了,因为Dll加载会重定位,会导致基地址变化,因此我们需要记下来的是Dll基地址 + 偏移

1
*(DWORD*)(hw_dll的基地址 + 0x9E409 + 0x1);

这样去取出机器码里面的基地址才是对的

找阵营,找死亡标志

其中一个人物死亡标志

1
hw.dll+746A64

其实我一开始找的是死亡标志,阵营是顺便找出来的

老方法,费老大劲了,终于找到其中一个人的死亡标志

1723042441287

根据CE谁更改了这个地址的值,找到汇编代码:
1723042698791

一顿分析,知道存这个结构体数组的基地址是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