简洁、美观、强大 的第三方网易我的世界客户端
- 简洁:去除无用功能,仅保留进入服务器所必须的核心功能
- 美观:精心设计UI,拥有细腻的动效与整洁有序的规划
- 强大:完整的客户端依赖补全,角色管理,账户管理等功能
- 加载DLL模块 api-ms-win-crt-utility-l1-1-1.dll1
- Patch上述模块的进程文件校验2
- 根据逆向得到的通信协议动态调用上述DLL模块的加解密函数
- 完成通信,使用返回的令牌登录服务器
1: 主要功能是负责通信的加解密,文件名起混淆作用
2: 核心模块内存Patch
public static int FindAddr(IntPtr PHandle, int ProcAddr, uint findSize)
{
//开始寻找的函数地址 寻找范围 注意:未关闭句柄!!!!
byte[] mem = new byte[findSize + 1];
int readBytes = 0;
bool result = Api.ReadProcessMemory(PHandle, (IntPtr)ProcAddr, mem, findSize, out readBytes);
Console.WriteLine("ReadResult:" + result.ToString());
Console.WriteLine("Mem:" + Others.byteToHexStr(mem));
Console.WriteLine("Lenth:" + readBytes.ToString());
int time = 0, Offset = 0, Addr = ProcAddr;
for (int i = 0; i < mem.Length; i++)
{
if (mem[i] == 232)//E8 内部Call
time++;
if (time == 2)
{
Addr = Addr + (i + 5);
Offset = (mem[i + 4] << 24) + (mem[i + 3] << 16) + (mem[i + 2] << 8) + mem[i + 1];
break;
}
}
Addr += Offset;
Console.WriteLine("Addr:" + Addr.ToString());
Console.WriteLine("Offset:" + (Addr - m_hDLL).ToString());
return Addr;
}
public static void crack()
{
IntPtr PinballHandle = Api.GetCurrentProcess();
bool result = Api.WriteProcessMemory(PinballHandle, (IntPtr)FindAddr(PinballHandle, FindBeginAddr, 150), new uint[] { Convert.ToUInt32("B001C3", 16) }, 3, (IntPtr)0);
//mov al, 1
//ret
Console.WriteLine("CrackResult:" + result.ToString());
}
- UI
- Res:导出资源
- ui.psd:主界面UI
- about.psd:关于界面UI
- role.psd:角色选择UI
- input.psd:输入框UI
- msg:msgboxUI
- main.e:UI,调用neteaselogin.dll实现功能
- C#
- neteaselogin:提供全部流程所需接口供E调用