外挂思路很简单,就是在CE里找有关数据和代码地址,通过修改进程数据和代码实现相关功能,这里简单记录一下我的外挂实现方法
效果图:
小富一手(阳光加1000)
在CE中找到阳光的地址,进行读取和写入操作即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| BOOL GetRich(HANDLE hProcess) { static int count = 0; uint32_t addr = getAddr(hProcess, SunBaseAddr, OFFSET_NUM1, sunOffset); if (addr) { int NowSun = 0; if (ReadProcessMemory(hProcess, (LPVOID)addr, &NowSun, 4, NULL)) { int Buffer = AddSun + NowSun; if (WriteProcessMemory(hProcess, (LPVOID)addr, &Buffer, 4, NULL)) { return true; } } } return false; }
|
免费种植
根据阳光地址,在CE中找到改写该地址的代码,分析汇编代码找到扣除阳光的逻辑,nop掉即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
BOOL Unlimited_SunShine(HANDLE hProcess) { uint8_t shellcode[] = { 0x90, 0x90 }; size_t size = sizeof(shellcode) / sizeof(shellcode[0]); VirtualProtectEx(hProcess, (LPVOID)TextSubSun, size, PAGE_EXECUTE_READWRITE, NULL); if (WriteProcessMemory(hProcess, (LPVOID)TextSubSun, (LPCVOID)shellcode, size, NULL)) {
return true; } return false; }
|
零冷却
同理,找到CD的内存地址,在CE中寻找改写该地址的汇编代码,里面含有CD是否冷却完成的条件跳转,转成绝对跳转即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
BOOL zeroCD(HANDLE hProcess) { uint8_t shellcode[] = { 0x8B, 0x47, 0x28, 0x90, 0x83, 0xC0, 0x01, 0x3B, 0x47, 0x28 }; size_t size = sizeof(shellcode) / sizeof(shellcode[0]); VirtualProtectEx(hProcess, (LPVOID)TextZeroCD, size, PAGE_EXECUTE_READWRITE, NULL); if (WriteProcessMemory(hProcess, (LPVOID)TextZeroCD, (LPCVOID)shellcode, size, NULL)) { return true; } return false; }
|