-
Постов
400 -
Зарегистрирован
-
Посещение
-
Победитель дней
26
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные gmz
-
-
13 минуты назад, helldrg сказал:
Я так делал потому что имя модуля в MODULEENTRY32 хранится вместе с путем, можно было сроку обработать и получить только имя, но я просто воспользовался этой функцией GetModuleBaseName
там есть szModule
-
8 минут назад, keng сказал:
Я хочу посмотреть на твой первый трейнер, нет, серьезно.
6 минут назад, Garik66 сказал:gmz, кстати я тоже бы с удовольствием посмотрел на него (если конечно сохранился), причём с твоими теперешними замечаниями.
он был похож на это только на масм32 +замена линкера +бредооптимиз. весил ~2.7кб (пак) и самый большой косяк - мерцание текста когда вкл/откл
а еще рекордный был на вирьтотал - 47+ детектов
8 минут назад, helldrg сказал:А можно по подробней?
L"blabla"
9 минут назад, helldrg сказал:Вот это я немного не понял
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms684839(v=vs.85).aspx
- 1
-
я бы сделал примерно так
static BYTE bytes[] = {0xE8,0x00,0x00,0x00,0x00,0x90};
DWORD temp = baseAddress-offsetAddress-5;
memcpy(&bytes[1],&temp ,sizeof temp );компиль всеравно memcpy заменит на 1-2 инстр.
- 2
-
1 в DLL было бы круче +желательно когда жмешь Х что бы она зачистила все и выгрузилась xD
2 можешь удалить CRT мусор изменив ентри на.. например _Main (вроде в вс2015.3 исправили) - будет еще меньше по размеру
3 unicode билд обязательно (все равно на вин98 не запустится)
4 форс админ права не нужно (манифест тот)
5 для OpenProcess желательно подбирать права типа PROCESS_VM_OPERATION+PROCESS_VM_READ+PROCESS_VM_WRITE тд тп
6 K32GetModuleBaseName что там делает? в структуре от Module32Next уже есть имя ProcessEntry.szExeFile
7 можно заюзать K32EnumProcesses\K32EnumProcessModules\K32GetModuleBaseNameW - они быстрее (вин7+)
8 шрифт добавь! Lol -
там не прямой адрес. вот например:
Скрытый текст.lulz: lea eax,[.zz] ;адрес для jmp sub eax,0x400000 ;в даном случае база модуля lea ecx,[.kk+5] ;адрес jmp +его размер sub ecx,0x400000 sub eax,ecx ;получаем новый адрес для jmp mov [.kk+1],eax ;пишем .zz: nop .kk: jmp near .lulz
так что у тебя должно быть 0-5=FFFFFFFB типа E9 FBFFFFFF
- 1
-
в моем примере все они фильтр. кроме smss.exe wininet.exe тд тп. там явно надо другой метод
- 1
-
lulz:
Скрытый текст#include "windows.h" #include "wchar.h" #include "tlhelp32.h" LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){ static HWND hProcessList; HFONT hFont; WCHAR Buffer[300]; PROCESSENTRY32 ProcessEntry; HANDLE hSnapshot; SC_HANDLE hSCManager; DWORD BytesNeeded; DWORD ServicesReturned; PBYTE lpServices; BYTE IsService; switch (uMsg){ case WM_CREATE: hFont = CreateFontW(15,6,0,0,FW_MEDIUM,0,0,0,DEFAULT_CHARSET,0,0,PROOF_QUALITY,DEFAULT_PITCH,L"Tahoma"); hProcessList = CreateWindowExW(WS_EX_CLIENTEDGE,L"LISTBOX",0,WS_VISIBLE+WS_CHILD+WS_VSCROLL+LBS_NOTIFY,4,4,276,200,hWnd,(HMENU)1,0,0); SendMessageW(hProcessList,WM_SETFONT,(WPARAM)hFont,1); ProcessEntry.dwSize = sizeof(PROCESSENTRY32); hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); hSCManager = OpenSCManager(0,SERVICES_ACTIVE_DATABASE,SC_MANAGER_CONNECT+SC_MANAGER_ENUMERATE_SERVICE); EnumServicesStatusEx(hSCManager,SC_ENUM_PROCESS_INFO,SERVICE_WIN32,SERVICE_STATE_ALL,0,0,&BytesNeeded,&ServicesReturned,0,0); lpServices = (PBYTE)malloc(BytesNeeded); EnumServicesStatusEx(hSCManager,SC_ENUM_PROCESS_INFO,SERVICE_WIN32,SERVICE_STATE_ALL,lpServices,BytesNeeded,&BytesNeeded,&ServicesReturned,0,0); while (Process32NextW(hSnapshot,&ProcessEntry)){ ENUM_SERVICE_STATUS_PROCESS* serv = (ENUM_SERVICE_STATUS_PROCESS*)lpServices; IsService = 0; for (DWORD i = 0; i < ServicesReturned; i++){ if (ProcessEntry.th32ProcessID == serv[i].ServiceStatusProcess.dwProcessId){ IsService = 1; break; }} if (!IsService){ swprintf(Buffer,L"Id: %d %s",ProcessEntry.th32ProcessID,ProcessEntry.szExeFile); SendMessageW(hProcessList,LB_ADDSTRING,0,(LPARAM)Buffer); }} free(lpServices); CloseHandle(hSnapshot); CloseServiceHandle(hSCManager); break; case WM_COMMAND: if (LOWORD(wParam) == 1){ if (HIWORD(wParam) == LBN_SELCHANGE){ SendMessageW(hProcessList,LB_GETTEXT,SendMessageW(hProcessList,LB_GETCURSEL,0,0),(LPARAM)Buffer); MessageBoxW(hWnd,Buffer,L"",MB_OK); DWORD Id = _wtoi(Buffer+4); //skip "Id: " }} break; case WM_GETMINMAXINFO: MINMAXINFO *lpMinMaxInfo; lpMinMaxInfo = (MINMAXINFO*)lParam; lpMinMaxInfo->ptMinTrackSize.x = 300; lpMinMaxInfo->ptMinTrackSize.y = 250; break; case WM_LBUTTONDOWN: PostMessageW(hWnd,WM_NCLBUTTONDOWN,MK_RBUTTON,0); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProcW(hWnd,uMsg,wParam,lParam); } return 0; } void wmain(){ WNDCLASSEX wcx; MSG msg; wcx.cbSize = sizeof(WNDCLASSEX); wcx.style = 0; wcx.lpfnWndProc = WndProc; wcx.cbClsExtra = 0; wcx.cbWndExtra = 0; wcx.hInstance = 0; wcx.hIcon = 0; wcx.hCursor = LoadCursorW(0,IDC_ARROW); wcx.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcx.lpszMenuName = 0; wcx.lpszClassName = L"test window"; wcx.hIconSm = 0; RegisterClassExW(&wcx); ShowWindow(CreateWindowExW(0,L"test window",L"test window",WS_SYSMENU+WS_MINIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,0,0,0,0,0,0),SW_SHOW); while (GetMessageW(&msg,0,0,0)){TranslateMessage(&msg);DispatchMessageW(&msg);} ExitProcess(msg.wParam); }
кст зачем такое нужно?
-
1 час назад, Garik66 сказал:
1. У меня же вроде известный размер - это размер exe -ника. Правильно?
обновят игру - облом. потому надо читать из хидера.
+ у тебя и так неправильный размер
1 час назад, Garik66 сказал:2. Что это за инструкции
просто в калькуляторе деление и and...
mov ecx,12 / 4 - получаем количество dword для movsd
mov ecx,12 & 3 - получаем остаток для movsb1 час назад, Garik66 сказал:Обязательно ли пропускать этот хидер или можно тупо копировать весь exe файл, т.е. с самого начала, ну что типа того:
само собой копируй весь а когда подменяешь адрес, веротно тебе будет нужен правильный размер для его пропуска..
- 1
-
Скрытый текст
известный размер: mov rsi,[from] mov rdi,[to] mov ecx,12 / 8 rep movsq mov ecx,12 & 7 rep movsb или mov rsi,[from] mov rdi,[to] mov ecx,12 / 4 rep movsd mov ecx,12 & 3 rep movsb неизвестный размер: mov rsi,[from] mov rdi,[to] mov ecx,12 mov edx,ecx shr ecx,3 and edx,7 rep movsq mov ecx,edx rep movsb или mov rsi,[from] mov rdi,[to] mov ecx,12 mov edx,ecx shr ecx,2 and edx,3 rep movsd mov ecx,edx rep movsb
дальше... [TheCrew.exe+1000] (который для пропуска хидера) надо нормально прочитать для универсальности.. r12 - база модуля
mov eax,[r12+0x3C] ;e_lfanew mov ecx,[r12+rax+0x50] ;SizeOfImage mov edx,[r12+rax+0x54] ;SizeOfHeaders
наверно на СЕ будет так:
mov eax,[TheCrew.exe+0x3C] ;e_lfanew mov ecx,[TheCrew.exe+rax+0x50] ;SizeOfImage mov edx,[TheCrew.exe+rax+0x54] ;SizeOfHeaders
- 2
-
22 часа назад, LIRW сказал:
На машину не пробовал сделать - не разрушаемость ?
делал возможность гонять на взорванных, оно как то бредово смотрится
скорость бега всеравно круче. пока получилось не управ. ускорение всех на карте..
-
1 час назад, LIRW сказал:
А почему именно кликать, а не сразу врубить на клавиши ? ну на горячие как указано в окне трейнера ?
WM_KEYDOWN заюзал
кст скорость бега (которая на шифте) пробовал менять?
-
6 часов назад, LIRW сказал:
На видео же показал - как там по другому то ещо запускать или активировать ?
кликнуть в окно тренера - вкл опцию
-
клавиши работают только когда активно окно "трейнера"
-
17 час назад, LIRW сказал:
Трейнер не повтор,от gmz что то не работает, там не то процесс другой, не то просто не работает - это сиди гадай, хотя версия та же 1.0
инжект не сработал? если не лень - запусти игру (без админ прав) потом закинь хак в x64_dbg (без админ прав) посмотри регистр RAX после всех апи, наприемр:
call qword ptr ds:[<&CreateToolhelp32Snapshot>]
rax = 0x12345
и так дале. их там мало xD
-
30 минуты назад, Garik66 сказал:
ЗЫ: нормальных репаков не нашёл, а парится установкой, плюс активацией и т.д.,
в уплей ее ща нашару раздают, там все еще вмпрот, вероятно интересно будет
-
чтооо...... хочешь заморозить процесс?
-
дааааа качаешь fasm начинаешь примерно:
Скрытый текстformat pe nx gui 5.01 dll at 0x10000000 on 'nul' entry DllMain include '..\fasm\include\win32wx.inc' include '..\fasm\include\encoding\utf8.inc' section '.code' code readable writeable executable proc DllMain uses ebx esi edi,hInstDLL,fdwReason,lpvReserved .if [fdwReason] = DLL_PROCESS_ATTACH invoke DisableThreadLibraryCalls,[hInstDLL] invoke CreateThread,0,4096,Init,0,0,0 invoke CloseHandle,eax mov al,1 .endif ret endp proc Init local OldProtect rd 1 invoke GetModuleHandleW,0 mov esi,eax lea edi,[OldProtect] invoke VirtualProtect,esi,1,PAGE_EXECUTE_READWRITE,edi mov byte[esi+2],0xFF invoke VirtualProtect,esi,1,dword[edi],edi ret endp data import library kernel32,'kernel32.dll' import kernel32,\ DisableThreadLibraryCalls,'DisableThreadLibraryCalls',\ CreateThread,'CreateThread',\ CloseHandle,'CloseHandle',\ GetModuleHandleW,'GetModuleHandleW',\ VirtualProtect,'VirtualProtect' end data data fixups end data
билдишь... и оно уже почти трейнер! в виде x32 dll, уже патчит 3`тий байт в ехе в который ты ее инжект... без интерфейса и кнопок.. какой простор для прокачки! lulz
ps для дебага используй x32_dbg/x64_dbg, если он фейл - ollydbg v2+ -
1 час назад, Garik66 сказал:
У Xipho в уроке примерно всё это и делается.
слишком хардкорд. размер пе хидера надо брать из него же и размер иниц модуля..
обычно модуль на сектора делят например по ~500кб, проще найти структуру где лежат адреса кусков, поставить хук на код который пашет когда детект, когда сканер найдет мод код (хук), он сгенерит другой хеш и сработает наш код, дальше всем адресам сменить базу на новый блок, прыгнуть на рескан и норм.
кст на игре все еще тормозной вмпрот?
-
Sleeping Dogs Definitive Edition
Просмотр файла
F1 health
F2 money
F3 ammo
F4 no reload
F5 perfect aim
F6 no recoil
F7 rapid fire
F8 hyper fire
F9 no heat level
Написан на fasm
-
Добавил
-
Добавлено12.09.2016
-
Категория
- 1
-
-
хмм игра онлайн и есть большая вероятность доп. функционала античита - лучше копирнуть ехе который в памяти в новый блок +перенаправить сканер туда, так он никогда не найдет мод код. даже если там есть спец проверки на откл сканера - они всегда будут возвращать норм результат в телеметрию. +саму телеметрию желательно проверить, возожно там предусмотрена страховка в виде инфы оригинал блока и блока которым занимается сканер...
-
8 часов назад, Xipho сказал:
На самом деле, все достаточно просто. На Си и СиПэПэ можно кодить трейнеры и вполне себе графически красивые демосцены.
дк если пишешь "трейнер" который не dll/exe а кусок кода? недавно писал такой в х64 виде. у него есть окно, он коректно сам себя освобождает из памяти если нажать Х +код пакован до инжекта. а С что? макс dll +какой то лоадер +куча движухи.. короче не то.
-
3 часа назад, Trix сказал:
С чего следует начать системное обучение, чтобы не гов**кодить и не писать костыли.
справки/примеров fasm/nasm должно хватить. на оф сайтах найдешь остальное... тут также есть "уроки", правда редкие годятся для создания чего то МОЩНОГО
3 часа назад, Trix сказал:Какой ассемблер учить и какие существуют вообще, в чем их отличия? Какой материал поможет мне в этой теме?
лучшие fasm/nasm. их дофига, некоторые больше чем на хелловорд не годятся
fasm - х32 модуль, не нужен линкер, не нужен билдер ресурсов, имеет минмум среду для кодинга под винду, также имеет кучу макросов которые помогают нубам и уменьшают количество строк кода в исходнике, иногда макросы мешают и создают невероятный бредокод lulz
nasm - х32/х64 модуль, нужен линкер, нужен билдер ресурсов, нужен редактор, в стиле "сделай все сам", поддерживает выравнивание в структурах, подходит для кодинга сложных шеллкодов, в х32 можно юзать регистр ebp (в fasm он забит стек фреймом), генерит код именно так как написалматериал любой где есть примеры х32/х64 вида. также тебе может понадобится С компиль для получения некой инфы из инклудов - подойдет mingw64. хотя в большинстве случаев хватает msdn...
конечно можно забить и кодить какой то хлам на С, как было сказано выше, кулстори в стиле что круче для кодинга тренеров С или asm всегда ржач lulz
- 1
-
1 час назад, LIRW сказал:
Ну найти то всё нашел, а вот спустя какое то время она просто испарялась и всё.
эт античит
1 час назад, LIRW сказал:Если в первой можно было всё за просто найти, то тут придется наверное не хило посидеть.
шифро там динамик, апи QueryPerformanceCounter - особенно весело там инвентарь заполнять
-
23 часа назад, MoL4uN87 сказал:
Ставь лицензионного Касперского!
2 часа назад, afro228offical сказал:Эт у avira стиль такой
Мой первый трейнер
in Общение
Опубликовано
+A версии постоянно хип юзают/конвертируют..
наверно имели ввиду GetThreadIOPendingFlag, зачем такое нужно в обычном трейнере