kopylov Опубликовано 27 июня, 2015 Поделиться Опубликовано 27 июня, 2015 Если есть у кого исходник простого трейнера на C#, скиньте пож. Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 Возьми любой трейнер решеточный и .NetRelector заюзай) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 (изменено) Если есть у кого исходник простого трейнера на C#, скиньте пож.На вот какой то на простенькие игры http://fastasm.ru/pishem-treyner-na-c.html хотя его можно вполне и под нынешние игры переделать. В поиске набрал бы и само бы выпало... одни лентяи... Вот ещо один - только уже по сложнее первого http://www.mediafire.com/download/46lxenqmteul14a/Files+required+for+C%23+trainer.zip Изменено 28 июня, 2015 пользователем LIRW 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 (изменено) Зачем на с#? Можно же на с++ заюзать.1. Тут на форуме была тема с поиском процесса на плюсах, в ней Xipho написал хорошую функцию, которая возвращает pID процесса, бери её.2. Дальше если пишешь внешний трейнер, то получаешь HANDLE процесса (помоему OpenProcess) и передаешь ему pID полученный пунктом выше3. Дальше подготавливаем почву для записи в память. Вызываем VirtualProtectEx (снимая защиту с региона памяти, куда будем писать. Подробнее в уроках Coder'a и Keng'a)4. Ну и вызываешь WriteProcessMemory передавая ей HANDLE процесса, нужны байты, адреса, и размер буфера, который пишешь.Profit!P.s. если для тебя выглядит сложновато - то посмотри уроки Coder'a, там всё подробно рассказывается: что и откуда. Это как велосипед: один раз научился и навсегда P.s.s. вот мой исходник трейнера для AS1. Полученный выхлоп .dll формата измени на .cpl формат. Дальше, когда входишь в игру просто запускаешь полученную .cpl и оп-ля! Изменено 28 июня, 2015 пользователем RockHammer 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 RockHammer Хоть бы отделил ему опции то, в том смысле - что бы не на одну клавишу сразу 3 активировалось... Вот самый первый на шарпе - ему самое то будет... На простеньких играх прям покатит ток ну... И опции вписывать легче будет - чекбокс поставил и прям в нем прописал... Сделано прям проще простого. Туда бы ещо сканер добавить и вполне можно было бы использовать на современных играх.(В плане современных,я имею введу - где адреса инструкций меняются) Просто человек может хочет дизайн там какой либо сделать свой красивый.. Вот прям для начинающего самый подходящий исходник... Ссылка на комментарий Поделиться на другие сайты Поделиться
kopylov Опубликовано 28 июня, 2015 Автор Поделиться Опубликовано 28 июня, 2015 Благодарю всех за помощь. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 RockHammer Хоть бы отделил ему опции то, в том смысле - что бы не на одну клавишу сразу 3 активировалось... Вот самый первый на шарпе - ему самое то будет... На простеньких играх прям покатит ток ну... И опции вписывать легче будет - чекбокс поставил и прям в нем прописал... Сделано прям проще простого. Туда бы ещо сканер добавить и вполне можно было бы использовать на современных играх.(В плане современных,я имею введу - где адреса инструкций меняются) Просто человек может хочет дизайн там какой либо сделать свой красивый.. Вот прям для начинающего самый подходящий исходник...Главное не то, что с наружи - а то, что внутри. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 Я как раз о внутренностях то и писал - да ну и ладно... Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 Я как раз о внутренностях то и писал - да ну и ладно... А я философию в целом имел ввиду Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 А я философию в целом имел ввидунарисуй там статик меню +одна опции - одна функция +собери в 4кб - будет круче чем его СЕ тренеры Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 нарисуй там статик меню +одна опции - одна функция +собери в 4кб - будет круче чем его СЕ тренеры статик меню? Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 нарисуй там статик меню +одна опции - одна функция +собери в 4кб - будет круче чем его СЕ тренеры Круче в чем ??? тем что он написан на плюсе ??? а ну размер маленький... прибамбасы там всякие и тому подобное. Только кого в нынешнее время этим удивишь а ну если понтануть только - как я могу, ради бога. Не первый раз такое уже тут вижу (думаю намек понятен о чем я ) Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 Круче в чем ??? тем что он написан на плюсе ??? а ну размер маленький... прибамбасы там всякие и тому подобное. Только кого в нынешнее время этим удивишь а ну если понтануть только - как я могу, ради бога. Не первый раз такое уже тут вижу (думаю намек понятен о чем я )А что он вообще имел ввиду? Что такое статик меню? Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 (изменено) А что он вообще имел ввиду? Что такое статик меню?Да поди на подобия вон фар край кто то тут делал или сталкера тени чернобыля - MP Cheats Stalker Hook 1.1 я так подумал... Не когда щас блин ищу смещение и не как не найду... Отладчик ставишь,выпадает инструкция mov ecx,[04051F28] - где вот это [04051F28] сам адрес в котором хранится то что мне нужно... а в регистре ecx уже значение - которое в этом адресе... Но это всё левак какой то - вот реальное смещение не как не найду Изменено 28 июня, 2015 пользователем LIRW Ссылка на комментарий Поделиться на другие сайты Поделиться
Крайслер Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 Вставлю свои пять копеек:Просто класс для минимальной работы с памятью(немного не оптимизирован, но работает на ура):Основа Nt-функции(для разнообразия ) #pragma once#include <Windows.h>#include <tlHelp32.h>#include <subauth.h>typedef struct _CLIENT_ID{ PVOID UniqueProcess; PVOID UniqueThread;} CLIENT_ID, *PCLIENT_ID;typedef struct _OBJECT_ATTRIBUTES{ ULONG Length; HANDLE RootDirectory; PUNICODE_STRING ObjectName; ULONG Attributes; PVOID SecurityDescriptor; PVOID SecurityQualityOfService;} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;typedef NTSTATUS(NTAPI* NTWRITEVIRTUALMEMORY)(HANDLE, PVOID, PVOID, ULONG, PULONG);typedef NTSTATUS(NTAPI* NTOPENPROCESS)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PCLIENT_ID);typedef NTSTATUS(NTAPI* NTCLOSE)(HANDLE);typedef NTSTATUS(NTAPI *NTPROTECTVIRTUALMEMORY)(HANDLE , PVOID *, PULONG , ULONG , PULONG );//NtProtectVirtualMemoryclass cNtMemoryEdit{public: NTOPENPROCESS NtOpenProcess; NTCLOSE NtClose; NTWRITEVIRTUALMEMORY NtWriteVirtualMemory; NTPROTECTVIRTUALMEMORY NtProtectVirtualMemory; template <class cData> void NtWriteMemory(DWORD dwAddress, cData Value) { NtWriteVirtualMemory(m_pHandleProcess, (PVOID)dwAddress, &Value, sizeof(cData), NULL); } void NtWriteMemoryEx(DWORD dwAddress, char *Patch_Bts); cNtMemoryEdit(TCHAR * m_pNameProcess); virtual ~cNtMemoryEdit(); FARPROC newGPA(HMODULE Mod, TCHAR* fName); DWORD ProcessID(); DWORD GetProcessID(){ return this->m_pID; } HANDLE GetHandleProcess(){ return this->m_pHandleProcess; }private: TCHAR * m_pNameProcess; DWORD m_pID; HMODULE m_pNtdll; HANDLE m_pHandleProcess; CLIENT_ID m_pCID; OBJECT_ATTRIBUTES m_pATTRIBUTES; __int32 СharLength(char *chArray);};#define InitializeObjectAttributes(p, n, a, r, s) \{ \ (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ (p)->RootDirectory = r; \ (p)->Attributes = a; \ (p)->ObjectName = n; \ (p)->SecurityDescriptor = s; \ (p)->SecurityQualityOfService = NULL; \}#include "cNtMemoryEdit.h"cNtMemoryEdit::cNtMemoryEdit(TCHAR * m_pNameProcess){ ZeroMemory(this, sizeof(cNtMemoryEdit)); ZeroMemory(&m_pATTRIBUTES, sizeof(m_pATTRIBUTES)); this->m_pNameProcess = m_pNameProcess; this->m_pNtdll = GetModuleHandle(__TEXT("ntdll.dll")); if (!this->m_pNtdll) this->m_pNtdll = LoadLibrary(__TEXT("ntdll.dll")); InitializeObjectAttributes(&m_pATTRIBUTES, NULL, 0, NULL, NULL); NtOpenProcess = (NTOPENPROCESS)newGPA(this->m_pNtdll, "NtOpenProcess"); NtClose = (NTCLOSE)newGPA(this->m_pNtdll, "NtClose"); NtWriteVirtualMemory = (NTWRITEVIRTUALMEMORY)newGPA(this->m_pNtdll, "NtWriteVirtualMemory"); NtProtectVirtualMemory = (NTPROTECTVIRTUALMEMORY)newGPA(this->m_pNtdll, "NtProtectVirtualMemory"); this->m_pID = ProcessID(); m_pCID.UniqueProcess = (HANDLE)this->m_pID; m_pCID.UniqueThread = 0; NtOpenProcess(&this->m_pHandleProcess, PROCESS_ALL_ACCESS, &m_pATTRIBUTES, &m_pCID);}void cNtMemoryEdit::NtWriteMemoryEx(DWORD dwAdress, char *pBYTE){ DWORD OldProtection; __int32 iSize = СharLength(pBYTE); NtProtectVirtualMemory(this->m_pHandleProcess, (PVOID*)dwAdress, (PULONG)iSize, PAGE_EXECUTE_READWRITE, &OldProtection); for (__int32 i = 0; i < iSize; i++) NtWriteMemory<BYTE>(dwAdress + i, pBYTE[i]); NtProtectVirtualMemory(this->m_pHandleProcess, (PVOID*)dwAdress, (PULONG)iSize, OldProtection, &OldProtection);}__int32 cNtMemoryEdit::СharLength(char *chArray){ for (__int32 iLength = 1; iLength < MAX_PATH; iLength++) if (chArray[iLength] == '\0') return iLength; return 0;}DWORD cNtMemoryEdit::ProcessID(){ DWORD pID = 0; HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 process; process.dwSize = sizeof(PROCESSENTRY32); if (Process32First(snapshot, &process)) { while (Process32Next(snapshot, &process)) { if (_stricmp(process.szExeFile, this->m_pNameProcess) == 0) { pID = process.th32ProcessID; break; } } } CloseHandle(snapshot); return pID;}FARPROC cNtMemoryEdit::newGPA(HMODULE Mod, TCHAR* fName){ ULONG Portable_Executable; PIMAGE_EXPORT_DIRECTORY EXPORT_DIRECTORY; PULONG RVAPointer; PUSHORT oTb_RVA; PULONG dwTbRVA; ULONG uReturn = 0; USHORT strTMP = 0; USHORT tmpINDEX; char * tmpName; ULONG Adress; ULONG size_CNT; if ((ULONG)fName <= 0xFFFF) strTMP = (USHORT)fName; if (Mod) { Portable_Executable = *(ULONG*)((ULONG)Mod + 0x3C) + (ULONG)Mod; EXPORT_DIRECTORY = (PIMAGE_EXPORT_DIRECTORY)(*(ULONG*)((ULONG)Portable_Executable + 0x78) + (ULONG)Mod); RVAPointer = (ULONG*)(EXPORT_DIRECTORY->AddressOfNames + (ULONG)Mod); oTb_RVA = (USHORT*)(EXPORT_DIRECTORY->AddressOfNameOrdinals + (ULONG)Mod); dwTbRVA = (ULONG*)(EXPORT_DIRECTORY->AddressOfFunctions + (ULONG)Mod); if (EXPORT_DIRECTORY->NumberOfNames > EXPORT_DIRECTORY->NumberOfFunctions) size_CNT = EXPORT_DIRECTORY->NumberOfNames; else size_CNT = EXPORT_DIRECTORY->NumberOfFunctions; for (USHORT i = 0; i < size_CNT; i++) { if (i < EXPORT_DIRECTORY->NumberOfFunctions) { tmpName = (char*)(RVAPointer[i] + (ULONG)Mod); tmpINDEX = oTb_RVA[i]; } else { tmpName = 0; tmpINDEX = i; } Adress = dwTbRVA[tmpINDEX] + (ULONG)Mod; if ((strTMP == tmpINDEX + EXPORT_DIRECTORY->Base) || (tmpName && !strcmp(tmpName, fName))) // wcscmp { uReturn = Adress; break; } } } return (FARPROC)uReturn;}cNtMemoryEdit::~cNtMemoryEdit(){ ZeroMemory(this, sizeof(cNtMemoryEdit)); NtClose(this->m_pHandleProcess);}#include "cNtMemoryEdit.h"cNtMemoryEdit *NtMemoryEdit = new cNtMemoryEdit("Test.exe");................NtMemoryEdit->NtWriteMemory<int>(0x024B3A40, 379);NtMemoryEdit->NtWriteMemory<float>(0x0000A40, 2.54f);NtMemoryEdit->NtWriteMemoryEx(0x0000000, "\x33\xFF\x84\xC0\x74\x07"); 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 28 июня, 2015 Поделиться Опубликовано 28 июня, 2015 А что он вообще имел ввиду? Что такое статик меню?F1 blaaaaaaaa [ON]F2 blaaaaaahh [OFF]и ON/OFF меняются в консоли как на gdi Вставлю свои пять копеек:LoadLibrary -> ntdll.dll = а че, ядро иногда не грузится? LolcNtMemoryEdit что это за... весь тот кусок где хардкорд 0x3C и 0x78? Ссылка на комментарий Поделиться на другие сайты Поделиться
Крайслер Опубликовано 3 июля, 2015 Поделиться Опубликовано 3 июля, 2015 LoadLibrary -> ntdll.dll = а че, ядро иногда не грузится? Lolбыл прецедент с GetModuleHandle, причину которого я так и не выяснил.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения