Перейти к содержанию

Assassin's Creed 1 Trayner


Рекомендуемые сообщения

Сделал свой трейнер на AS1.

Версия игры: 1.02

Таблетка: R.G. Meханики

Опции:

1) Бессмертие

2) Бесконечное метательное оружие (заморозка)

 

Дополнительно:

1) Окно консоли с выводом действий (вкл-выкл функций)

2) Горячая клавиша = F1 (она и вкл и выкл)

Функционал скромный, но это лучше чем ничего :)

Прикладываю так же исходный код. Малоли, кому-то захочется свои функции добавить.

 

Скачать без регистрации и смс

Вирус тотал не выкладываю, т.к. это .dll и все соурсы в архиве имеются.

offtopic.gif Тем не менее, после инжекта ваш кампутер трансформируется, поднимет восстание, скажет речь и вдохновит всех на восстание роботов! Мультиварки, микроволновки, фен и даже чайник будут сражаться с людьми, захватят планету, провозгласят себя конституционной монархией и будут строить города на спинах людей и создавать армию из пылесосов! И всё это из-за дллки.
Изменено пользователем RockHammer
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

релиз билд надо делать, MSVCR120D.dll никто не юз. +ентри измени = не будет црт мусора, может 5кб станет..

кст смотри (код без модиф). MinGW 5.1.0 +ulink = 3.08кб Lulz +юзает стандартную msvcrt.dll

http://rghost.ru/private/6kB8p8TlM/fdde481e3405cabfba9ffec661f0681c

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

релиз билд надо делать, MSVCR120D.dll никто не юз. +ентри измени = не будет црт мусора, может 5кб станет..

кст смотри (код без модиф). MinGW 5.1.0 +ulink = 3.08кб Lulz +юзает стандартную msvcrt.dll

http://rghost.ru/private/6kB8p8TlM/fdde481e3405cabfba9ffec661f0681c

можно по-русски?

Ссылка на комментарий
Поделиться на другие сайты

можно по-русски?

Ты выложил отладочную версию своего проекта. Что не понятного? Он тебе говорит в релизе собери.

И то что возможно ты сможешь подобрать более оптимальные флаги для компиляции, чтобы уменьшить размер программы

Ссылка на комментарий
Поделиться на другие сайты

Ты выложил отладочную версию своего проекта. Что не понятного? Он тебе говорит в релизе собери.

И то что возможно ты сможешь подобрать более оптимальные флаги для компиляции, чтобы уменьшить размер программы

У него использованы сокращения. А когда и без того непонятные слова сокращают - остается только на кофейной гуще гадать, что тебе хотели сказать.

Да, и можно ссылку на тот компилятор, что ты говоришь?

Вот release версия с некоторыми исправлениями в коде. Соурсы по прежнему прилагаются.

Изменено пользователем RockHammer
Ссылка на комментарий
Поделиться на другие сайты

Да, и можно ссылку на тот компилятор, что ты говоришь?

 

для х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\lib

ps убери #include <iostream>

ps2 для -municode надо многое исправить в исходнике. так что исправь или убери ключ

Изменено пользователем gmz
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

для х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\lib

ps убери #include <iostream>

ps2 для -municode надо многое исправить в исходнике. так что исправь или убери ключ

вау... звучит заумно... останусь-ка я на visual studio)

Ссылка на комментарий
Поделиться на другие сайты

вау... звучит заумно... останусь-ка я на visual studio)

 

вс2013.4 генерит меньше мусора - 2.10кб но код не настолько "крут" Lol

http://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
Ссылка на комментарий
Поделиться на другие сайты

Мой код настолько крут, что он сам себя компилит.

ога. зачем setvbuf(stdout, NULL, _IONBF, 0); и DWORD pID = GetCurrentProcessId(); нужны?

давай из этой длл сделаем cpl? типа будет инжектить саму себя в игру. на С еще такого не делал

добавил еще пару опций для mingw примера, теперь без мусора

Ссылка на комментарий
Поделиться на другие сайты

такс... затести. самоинжекторная длка. после сборки переименуй 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") < тут понятно

Изменено пользователем gmz
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

Окей, когда я добавил это и скомпилил - как это использовать?

Да и... Прокатит ли такой метод, если хукаешь онлайн игру? Всмысле, не спалит ли античит такого финта?

Ссылка на комментарий
Поделиться на другие сайты

Окей, когда я добавил это и скомпилил - как это использовать?

Да и... Прокатит ли такой метод, если хукаешь онлайн игру? Всмысле, не спалит ли античит такого финта?

даешь длке расширение 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
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

 

даешь длке расширение 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");

Пасиб) будет альтернатива)

Ссылка на комментарий
Поделиться на другие сайты

прикрути пародию на меню:

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;}}

забавно выглядит lulz

NullAlex: Большой код принято оборачивать в тег спойлера. Почитай FAQ по тегу.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Я вот только не понял, зачем всю консоль перерисовывать? Не судьба просто сдвинуть курсор на нужную позицию перед выводом нужного текста? В этом случае старые текст затрется и перезапишется новым )

Ссылка на комментарий
Поделиться на другие сайты

Я вот только не понял, зачем всю консоль перерисовывать? Не судьба просто сдвинуть курсор на нужную позицию перед выводом нужного текста? В этом случае старые текст затрется и перезапишется новым )

а если там 20 опций.. как их размер норм способом рассчитать без бредокода?

по моему как на пародию GDI сойдет.. вот только я бы юзал WriteConsole вместо printf - быстрее и не нужно инициализ. "CreateConsole"

 

Тут просто уйма полезной инфы!

лови момент пока я подтягиваю кодинг на С++ до норм уровня :D

кст тот блок статусов можешь на стек закинуть. будет меньше статик даных (статика нужна когда клавиши например в 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
Ссылка на комментарий
Поделиться на другие сайты

хмм нашел еще один вариант инициализ. 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);
Изменено пользователем gmz
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.