sanae

从零开始编写自己的Apex辅(wai)助(gua)
从零开始编写自己的Apex辅(wai)助(gua)注意:本文仅供研究学习使用
扫描右侧二维码阅读全文
06
2019/04

从零开始编写自己的Apex辅(wai)助(gua)

从零开始编写自己的Apex辅(wai)助(gua)

注意:本文仅供研究学习使用


本文将简述以下部分来叫你编写一个简单的Apex辅助:

  • 开始,准备工作
  • 编写
  • 测试

本文将使用C#作为编程语言,编写一个External类型辅助(Internal与External的区别将不再赘述)。

为什么使用CSharp?

  • 相比C/C++,无需手动管理内存,节省大量掉坑时间。
  • 巨硬自家,提供完整的WinAPI支持和DLL引用,方便操作。
  • VS宇宙第一IDE

提前准备

  • 把游戏下好,VS装好(
  • Apex使用了EAC反作弊系统,所以你需要准备任意一种可行方法来bypass
  • 本文中出现的内存偏移地址均为19年4月3日更新版本对应

开始

1.获取游戏内存基址

这个没有什么可说的,当你绕过EAC能够操作游戏进程的时候你应该有办法获得他。

2.获取EntityList内存地址

IntPtr EntityListOffset = 0x1F9AE68;
IntPtr EntityList = BaseAddress + EntityListOffset ;

3.获取具体Entity的内存地址(<<为逻辑左移操作符)

public static IntPtr GetEntityByID(int ID)
{
    return Memory.Read<IntPtr>(EntityList + (ID << 5));
}

4. 获得Entity对应类型(即判断是玩家还是NPC还是道具等)

String Name = Memory.ReadString(Memory.Read<IntPtr>(entity + 0x500));

name的可能性包括player,prop_survival,prop_script,分别对应玩家,道具,NPC

5. 遍历Entity获得所有玩家的内存地址(所有玩家均在前100个Entity中)

for (int i = 0; i < 100; i++)
{
    IntPtr entityPtr = GetEntityByID(i);
    if (entityPtr != IntPtr.Zero)
    {
        Entity entity = new Entity(entityPtr, i);
        if (entity.IsPlayer){ 
            Your code goes here 
        }
    }
}

6. Glow ESP!

咕一会咕一会

最后修改:2019 年 04 月 08 日 07 : 44 AM

发表评论