RockHammer Опубликовано 19 июня, 2015 Поделиться Опубликовано 19 июня, 2015 (изменено) Сделал свой трейнер на AS1.Версия игры: 1.02Таблетка: R.G. MeханикиОпции:1) Бессмертие2) Бесконечное метательное оружие (заморозка) Дополнительно:1) Окно консоли с выводом действий (вкл-выкл функций)2) Горячая клавиша = F1 (она и вкл и выкл)Функционал скромный, но это лучше чем ничего Прикладываю так же исходный код. Малоли, кому-то захочется свои функции добавить. Скачать без регистрации и смсВирус тотал не выкладываю, т.к. это .dll и все соурсы в архиве имеются. Тем не менее, после инжекта ваш кампутер трансформируется, поднимет восстание, скажет речь и вдохновит всех на восстание роботов! Мультиварки, микроволновки, фен и даже чайник будут сражаться с людьми, захватят планету, провозгласят себя конституционной монархией и будут строить города на спинах людей и создавать армию из пылесосов! И всё это из-за дллки. Изменено 19 июня, 2015 пользователем RockHammer 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 20 июня, 2015 Поделиться Опубликовано 20 июня, 2015 релиз билд надо делать, MSVCR120D.dll никто не юз. +ентри измени = не будет црт мусора, может 5кб станет..кст смотри (код без модиф). MinGW 5.1.0 +ulink = 3.08кб Lulz +юзает стандартную msvcrt.dllhttp://rghost.ru/private/6kB8p8TlM/fdde481e3405cabfba9ffec661f0681c 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 20 июня, 2015 Автор Поделиться Опубликовано 20 июня, 2015 релиз билд надо делать, MSVCR120D.dll никто не юз. +ентри измени = не будет црт мусора, может 5кб станет..кст смотри (код без модиф). MinGW 5.1.0 +ulink = 3.08кб Lulz +юзает стандартную msvcrt.dllhttp://rghost.ru/private/6kB8p8TlM/fdde481e3405cabfba9ffec661f0681cможно по-русски? Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 20 июня, 2015 Поделиться Опубликовано 20 июня, 2015 можно по-русски?Ты выложил отладочную версию своего проекта. Что не понятного? Он тебе говорит в релизе собери.И то что возможно ты сможешь подобрать более оптимальные флаги для компиляции, чтобы уменьшить размер программы Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 20 июня, 2015 Поделиться Опубликовано 20 июня, 2015 Или воспользоваться другим компилятором (MinGW) Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 20 июня, 2015 Автор Поделиться Опубликовано 20 июня, 2015 (изменено) Ты выложил отладочную версию своего проекта. Что не понятного? Он тебе говорит в релизе собери.И то что возможно ты сможешь подобрать более оптимальные флаги для компиляции, чтобы уменьшить размер программыУ него использованы сокращения. А когда и без того непонятные слова сокращают - остается только на кофейной гуще гадать, что тебе хотели сказать.Да, и можно ссылку на тот компилятор, что ты говоришь?Вот release версия с некоторыми исправлениями в коде. Соурсы по прежнему прилагаются. Изменено 20 июня, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 20 июня, 2015 Поделиться Опубликовано 20 июня, 2015 (изменено) Да, и можно ссылку на тот компилятор, что ты говоришь? для х64 винды (может собирать х32 и х64):http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/5.1.0/threads-win32/sjlj/ спец линкер (нужен только ulink.exe):ftp://ftp.styx.cabel.net/pub/UniLink/ потом распак папку mingw64 в папку, бросаешь туда ulink.exe, создаешь там папку например acHack, бросаешь туда исходники. создаешь там make.cmd в make.cmd:@echo off..\mingw64\bin\g++.exe -c main.cpp -m32 -municode -s -Os -O3 -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections..\ulink.exe -q -Z- -ZX- -W6.0 -U0.0 -V6.0 -S:0x1000 -Sc:0x1000 -H:0x10000 -Hc:0x0 -GF:NXCOMPAT -Gh -Gz -Ge -GS:*=* --gcc -ap -Tpd -e_DllMain@12 main.o -ZOmain.dll -L..\mingw64\x86_64-w64-mingw32\lib32 -zkernel32;user32;msvcrt;psapidel *.opauseиии получишь 2.58кб файл.. для х64: -m32 -> -m64 -Tpd -> -Tpd+ -L..\mingw64\x86_64-w64-mingw32\lib32 -> -L..\mingw64\x86_64-w64-mingw32\libps убери #include <iostream>ps2 для -municode надо многое исправить в исходнике. так что исправь или убери ключ Изменено 22 июня, 2015 пользователем gmz 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 20 июня, 2015 Автор Поделиться Опубликовано 20 июня, 2015 для х64 винды (может собирать х32 и х64):http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/5.1.0/threads-win32/sjlj/ спец линкер (нужен только ulink.exe):ftp://ftp.styx.cabel.net/pub/UniLink/ потом распак папку mingw64 в папку, бросаешь туда ulink.exe, создаешь там папку например acHack, бросаешь туда исходники. создаешь там make.cmd в make.cmd:@echo off..\mingw64\bin\g++.exe -c main.cpp -m32 -municode -s -Os -O3..\ulink.exe -q -Z- -ZX- -W6.0 -U0.0 -V6.0 -S:0x1000 -Sc:0x1000 -H:0x10000 -Hc:0x0 -GF:NXCOMPAT -Gh -Gz -Ge -GS:*=* --gcc -ap -Tpd -e_DllMain@12 main.o -ZOmain -L..\mingw64\x86_64-w64-mingw32\lib32 -zkernel32;user32;msvcrt;psapidel *.opauseиии получишь 3кб файл.. для х64: -m32 -> -m64 -Tpd -> -Tpd+ -L..\mingw64\x86_64-w64-mingw32\lib32 -> -L..\mingw64\x86_64-w64-mingw32\libps убери #include <iostream>ps2 для -municode надо многое исправить в исходнике. так что исправь или убери ключвау... звучит заумно... останусь-ка я на visual studio) Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 20 июня, 2015 Поделиться Опубликовано 20 июня, 2015 вау... звучит заумно... останусь-ка я на visual studio) вс2013.4 генерит меньше мусора - 2.10кб но код не настолько "крут" Lolhttp://rghost.ru/private/7WHmvnKyS/dd6c03a7ee3882081fcbae64bb0c5a03@echo off..\vc2013.4\vc\bin\cl.exe main.cpp /nologo /c /W1 /GS- /analyze- /Gy /Gm- /O2 /Gd /Oy- /Oi /MD /EHsc /I"..\vc2013.4\vc\include" /I"..\vc2013.4\Windows Kits\8.1\Include\um" /I"..\vc2013.4\Windows Kits\8.1\Include\shared"..\vc2013.4\ulink.exe -q -Z- -ZX- -W6.0 -U0.0 -V6.0 -S:0x1000 -Sc:0x1000 -H:0x10000 -Hc:0x0 -GF:NXCOMPAT -Gh -Gz -Ge -GS:*=* -ap -Tpd -e_DllMain@12 main.obj -ZOmain -L"..\vc2013.4\Windows Kits\8.1\Lib\winv6.3\um\x86" -L"..\vc2013.4\VC\lib" -zkernel32;user32;msvcrt;psapidel *.objpause Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 21 июня, 2015 Автор Поделиться Опубликовано 21 июня, 2015 вс2013.4 генерит меньше мусора - 2.10кб но код не настолько "крут" LolМой код настолько крут, что он сам себя компилит. Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 21 июня, 2015 Поделиться Опубликовано 21 июня, 2015 Мой код настолько крут, что он сам себя компилит.ога. зачем setvbuf(stdout, NULL, _IONBF, 0); и DWORD pID = GetCurrentProcessId(); нужны?давай из этой длл сделаем cpl? типа будет инжектить саму себя в игру. на С еще такого не делалдобавил еще пару опций для mingw примера, теперь без мусора Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 21 июня, 2015 Поделиться Опубликовано 21 июня, 2015 (изменено) такс... затести. самоинжекторная длка. после сборки переименуй main.dll в main.cpl в Memory.h исправь баг: после инициализ PROCESSENTRY32 pe32;добавь:pe32.dwSize = sizeof(PROCESSENTRY32); Main.cpp DllMain будет такой:DWORD WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved){HANDLE hProcess;HANDLE hRemoteBuffer;HANDLE hRemoteThread;int pId;char ModulePath[MAX_PATH];if (fdwReason == DLL_PROCESS_ATTACH){DisableThreadLibraryCalls(hinstDLL);if (GetModuleHandle("calc.exe")){CloseHandle(CreateThread(0,4096,AS_thread,0,0,0));} else {if (pId = FindProcessByName("calc.exe")){if (hProcess = OpenProcess(PROCESS_CREATE_THREAD+PROCESS_QUERY_INFORMATION+PROCESS_VM_OPERATION+PROCESS_VM_READ+PROCESS_VM_WRITE,0,pId)){hRemoteBuffer = VirtualAllocEx(hProcess,0,4096,MEM_COMMIT,PAGE_READWRITE);WriteProcessMemory(hProcess,hRemoteBuffer,ModulePath,GetModuleFileName(hinstDLL,ModulePath,MAX_PATH),0);hRemoteThread = CreateRemoteThread(hProcess,0,4096,(LPTHREAD_START_ROUTINE)LoadLibrary,hRemoteBuffer,0,0);WaitForSingleObject(hRemoteThread,INFINITE);CloseHandle(hRemoteThread);VirtualFreeEx(hProcess,hRemoteBuffer,4096,MEM_DECOMMIT);CloseHandle(hProcess);}}}return 1;}}GetModuleHandle("calc.exe") < заменишь на ехе игры или на d3d11.dll (какой там игра использ.). оно нужно для детекта когда длка в rundll32.exe или игреFindProcessByName("calc.exe") < тут понятно Изменено 22 июня, 2015 пользователем gmz 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 22 июня, 2015 Автор Поделиться Опубликовано 22 июня, 2015 Окей, когда я добавил это и скомпилил - как это использовать? Да и... Прокатит ли такой метод, если хукаешь онлайн игру? Всмысле, не спалит ли античит такого финта? Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 23 июня, 2015 Поделиться Опубликовано 23 июня, 2015 (изменено) Окей, когда я добавил это и скомпилил - как это использовать?Да и... Прокатит ли такой метод, если хукаешь онлайн игру? Всмысле, не спалит ли античит такого финта?даешь длке расширение cpl или настрой компиль чтобы ставил не .dll а .cpl - и можешь инжектить ее в игру 2 кликом как будто это .ехедля онлайна как минимум надо добавить заморозку процесcа например NtSuspendProcess/NtResumeProcess и когда процесс заморожен - скрыть модуль в PEB +ставить все хуки/патчи перед созданием потока. +вариант 2 получения размера модуля (напрямую):PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandle(0);PIMAGE_FILE_HEADER pFileHeader = (PIMAGE_FILE_HEADER)((DWORD)pDosHeader+pDosHeader->e_lfanew+sizeof(IMAGE_NT_SIGNATURE));PIMAGE_OPTIONAL_HEADER pOptionalHeader = (PIMAGE_OPTIONAL_HEADER)((DWORD)pFileHeader+IMAGE_SIZEOF_FILE_HEADER);DWORD health = FindPattern((DWORD)pDosHeader,pOptionalHeader->SizeOfImage, (PBYTE)"\x89\x46\x14\x7D\x33", "xxxxx");DWORD knife = FindPattern((DWORD)pDosHeader,pOptionalHeader->SizeOfImage, (PBYTE)"\x89\xBE\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x5F\x5D", "xx????x????xx"); Изменено 23 июня, 2015 пользователем gmz 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 23 июня, 2015 Автор Поделиться Опубликовано 23 июня, 2015 даешь длке расширение cpl или настрой компиль чтобы ставил не .dll а .cpl - и можешь инжектить ее в игру 2 кликом как будто это .ехедля онлайна как минимум надо добавить заморозку процесcа например NtSuspendProcess/NtResumeProcess и когда процесс заморожен - скрыть модуль в PEB +ставить все хуки/патчи перед созданием потока. +вариант 2 получения размера модуля (напрямую):PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandle(0);PIMAGE_FILE_HEADER pFileHeader = (PIMAGE_FILE_HEADER)((DWORD)pDosHeader+pDosHeader->e_lfanew+sizeof(IMAGE_NT_SIGNATURE));PIMAGE_OPTIONAL_HEADER pOptionalHeader = (PIMAGE_OPTIONAL_HEADER)((DWORD)pFileHeader+IMAGE_SIZEOF_FILE_HEADER);DWORD health = FindPattern((DWORD)pDosHeader,pOptionalHeader->SizeOfImage, (PBYTE)"\x89\x46\x14\x7D\x33", "xxxxx");DWORD knife = FindPattern((DWORD)pDosHeader,pOptionalHeader->SizeOfImage, (PBYTE)"\x89\xBE\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x5F\x5D", "xx????x????xx");Пасиб) будет альтернатива) Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 29 июня, 2015 Поделиться Опубликовано 29 июня, 2015 прикрути пародию на меню:char KeySwitch01;char KeyStatus01;char KeySwitch02;char KeyStatus02;char RedrawConsole = 1;for (;;Sleep(50)){char Key;Key = (GetAsyncKeyState(VK_F1) >> 8);if (KeySwitch01 != Key){KeySwitch01 = Key;if (Key){RedrawConsole = Key;if (!KeyStatus01){VirtualProtect((LPVOID)health, (size_t)5, PAGE_EXECUTE_READWRITE, &oldProtect);memcpy((void*)health, (PBYTE)"\x90\x90\x90", 3);VirtualProtect((LPVOID)health, 5, oldProtect, &oldProtect);KeyStatus01 = 1;} else {VirtualProtect((LPVOID)health, (size_t)5, PAGE_EXECUTE_READWRITE, &oldProtect);memcpy((void*)health, (PBYTE)"\x89\x46\x14", 3);VirtualProtect((LPVOID)health, 5, oldProtect, &oldProtect);KeyStatus01 = 0;}}}Key = (GetAsyncKeyState(VK_F2) >> 8);if (KeySwitch02 != Key){KeySwitch02 = Key;if (Key){RedrawConsole = Key;if (!KeyStatus02){VirtualProtect((LPVOID)knife, (size_t)13, PAGE_EXECUTE_READWRITE, &oldProtect);memcpy((void*)knife, (PBYTE)"\x90\x90\x90\x90\x90\x90", 6);VirtualProtect((LPVOID)knife, (size_t)13, oldProtect, &oldProtect);KeyStatus02 = 1;} else {VirtualProtect((LPVOID)knife, (size_t)13, PAGE_EXECUTE_READWRITE, &oldProtect);memcpy((void*)knife, (PBYTE)"\x89\xBE\x00\x00\x00\x00", 6);VirtualProtect((LPVOID)knife, (size_t)13, oldProtect, &oldProtect);KeyStatus02 = 0;}}}if (RedrawConsole){system("cls");if (KeyStatus01){printf("F1 Health [ON]\n");} else {printf("F1 Health [OFF]\n");}if (KeyStatus02){printf("F2 Knife [ON]\n");} else {printf("F2 Knife [OFF]\n");}printf("\nTrainer made: blah\n");RedrawConsole = 0;}}забавно выглядит lulzNullAlex: Большой код принято оборачивать в тег спойлера. Почитай FAQ по тегу. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 30 июня, 2015 Поделиться Опубликовано 30 июня, 2015 Я вот только не понял, зачем всю консоль перерисовывать? Не судьба просто сдвинуть курсор на нужную позицию перед выводом нужного текста? В этом случае старые текст затрется и перезапишется новым ) Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 30 июня, 2015 Автор Поделиться Опубликовано 30 июня, 2015 Добавляю эту тему в "избранное" Тут просто уйма полезной инфы!Спасибо всем, кто помогал! 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 30 июня, 2015 Поделиться Опубликовано 30 июня, 2015 Я вот только не понял, зачем всю консоль перерисовывать? Не судьба просто сдвинуть курсор на нужную позицию перед выводом нужного текста? В этом случае старые текст затрется и перезапишется новым )а если там 20 опций.. как их размер норм способом рассчитать без бредокода?по моему как на пародию GDI сойдет.. вот только я бы юзал WriteConsole вместо printf - быстрее и не нужно инициализ. "CreateConsole" Тут просто уйма полезной инфы!лови момент пока я подтягиваю кодинг на С++ до норм уровня кст тот блок статусов можешь на стек закинуть. будет меньше статик даных (статика нужна когда клавиши например в WndProc)под MODULEINFO ModuleInfo;char KeySwitch01 = 0;char KeyStatus01 = 0;char KeySwitch02 = 0;char KeyStatus02 = 0;char RedrawConsole = 1;+ DWORD oldProtect; его не нужно нулить. как и hConHandle lStdHandle fp pID - их никто не читает ДО заполнения..+ переведи уже на уникод. инжектор может быть не совместим на некоторых виндах изза ника юзера (если он на раб. столе) или других символов в пути.. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 3 июля, 2015 Поделиться Опубликовано 3 июля, 2015 (изменено) хмм нашел еще один вариант инициализ. printf в дллhttp://www.codeproject.com/Tips/227809/Good-Old-Dirty-printf-Debugging-in-a-Non-console-C можешь выбросить CreateConsole...AllocConsole();SetConsoleTitle("Assassin's Creed Cheat");freopen("CONOUT$","w",stdout);+блок ХDeleteMenu(GetSystemMenu(GetConsoleWindow(),0),SC_CLOSE,MF_BYCOMMAND); Изменено 3 июля, 2015 пользователем gmz Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения