-
Постов
83 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Chucky
-
-
garik66, а так же все остальные, кто принимал участие в диалоге, большое спасибо!
-
Спасибо, парни. Взял инструкцию чуть выше:
http://radikal.ru/fp/d86c7fdf3be144739325af6808d64eda
сделал такой скрипт:
[ENABLE]alloc(newmem,2048)newmem:fmul dword ptr [esi+000000E4]mov dword ptr [eax+6C],(float)100ret"Amnesia.exe"+D9FBB:call newmemnop[DISABLE]dealloc(newmem)"Amnesia.exe"+D9FBB:fmul dword ptr [esi+000000E4]
Все правильно?
-
Первый скрипт точно работает!!! Число - #1120403456 = (float)100
-
Нет, garik66, тоже не пашет!
-
Не работает тоже. Попробовал поработать с другой инструкцией. Все работает. Вот скрипт:
[ENABLE]alloc(newmem,2048)newmem:mov dword ptr [eax+6C],#1120404556ret"Amnesia.exe"+D9F16:call newmemnopnopnopnop[DISABLE]dealloc(newmem)"Amnesia.exe"+D9F16:fld dword ptr [eax+6C]fcom dword ptr [esi+000000E8]
Просто странно. Мой первый скрипт с использованием JMP тоже работает!
-
garik66, проверил твой скрипт. Так же как и у меня, масло в фонаре равно 0.
-
Посмотри внимательно мой второй скрипт. exit: Ошибка не в этом.
-
Всем привет! Имеется скрипт:
[ENABLE]alloc(newmem,2048) //2kb should be enoughlabel(returnhere)label(originalcode)label(exit)newmem:mov dword ptr [eax+6C],#1120403456originalcode:fsubr dword ptr [eax+6C]fst dword ptr [esp+08]exit:jmp returnhere"Amnesia.exe"+D9FC1:jmp newmemnopnopreturnhere:[DISABLE]dealloc(newmem)"Amnesia.exe"+D9FC1:fsubr dword ptr [eax+6C]fst dword ptr [esp+08]
Все работает отлично. Но вот если использовать инструкции CALL и RET:[ENABLE]alloc(newmem,2048) //2kb should be enoughlabel(originalcode)label(exit)newmem:mov dword ptr [eax+6C],#1120403456originalcode:fsubr dword ptr [eax+6C]fst dword ptr [esp+08]exit:ret"Amnesia.exe"+D9FC1:call newmemnopnop[DISABLE]dealloc(newmem)"Amnesia.exe"+D9FC1:fsubr dword ptr [eax+6C]fst dword ptr [esp+08]
то масло в фонаре почему-то 0. Как правильно писать скрипт при использовании CALL и RET???
-
Привет всем! Подскажите, как в примере, который выложил keng (https://github.com/remizovm/keng_trn_asm). Вместо бегущих звезд сделать фон из картинки формата *.jpg и кнопку из двух картинок (обычное состояние и, когда она нажата).
-
Выскочила такая же ошибка, как в 159 (http://forum.gamehacklab.ru/topic/121-bagi-foruma-i-sajta/?p=23870) сообщении у RockHamer'a.
-
Блин, парни, я под словом исходник имел ввиду этот код. Код на чистом WinApI. Компилируется без проблем.
-
Видео по-моему не "битое", а с ограниченным допуском. Ему нужно разрешить смотреть видео.
Точно, garik66, уже увидел.
-
Я еще могу понять, когда делают чит "Антиотдача" и тому подобные.. Но какой интерес становится у игры, с использованием подобных LOL читов??
P.S.: Уберите, пожалуйста, ваши видео под спойлер. К тому же "битые" можно удалить...
-
я хорошие читы создаю
Ваши работы в студию..
-
gmz, сделай свою версию трейнера в GTS. И мы посмотрим как он схож с трейнером от CuBiC'a! Посмотрим на дизайн, функционал и тогда, может быть, будем рассуждать! А так, порочить некогда существовавшую команду Team-X, не в твоей компетенции!!!
-
Может кому пригодится.. В свое время наткнулся на данный исходник. Название Code Cave Finder (2CFinder). Автор: NC22.
Программа ищет пустые области памяти конкретного приложения и проверяет их на доступность для записи. Приложение задается по названию окна.
Команды для патчера памяти (Кнопка "Инъекция")
[WriteTest|0] - выключить проверку , доступна ли память для записи ( не рекомендуется выключать )
[Path|00401433|90FF90D0D0D0FF] - второй параметр - оффсет памяти от которого запишется 90FF90D0D0D0FF
(т.е. 00401433 - 90 00401434 - FF и т.д.)
[About] - связь с автором
program finder;uses windows, messages, commctrl, SysUtils; //Используемые модули// Иконка//{$R 'icon.res'}var WinClass : TWndClass; //переменная класса TWndClass для создания главного окна hInst : HWND; //хандлер приложения Handle : HWND; //локальный хандлер Msg : TMSG; //сообщение hFont : HWND; //хандлер шрифта game : HWND; //TEdit buff : array[0.. 127] of Char; List : HWND; //TListBox Button1 : HWND; //TButton Button2 : HWND; //TButton Edit1 : HWND; //TEdit Edit2 : HWND; //TEdit Syze : HWND; //TEdit//форма инжектора Inj : HWND; SMenu:HWND; Label2 : HWND; //TLabel code : HWND; //TMemo inject : HWND; //TButton WriteMemTest : byte;// adress : HWND; //TEdit function GetLen(source: String): integer; begin result:=Length(source); end; (*function StrToHex(source: String): String;var i:integer; c:Char; s:String;begin s := ''; for i:=1 to Length(source) do begin c := source[i]; s := s + IntToHex(Integer(c),2)+' '; end; result := s;end;function StrToInt(const S: string): Integer;var E: Integer;begin Val(S, Result, E);end; *)function Err(msg: PChar): byte;begin MessageBox(Handle,msg,'Error',MB_OK or MB_ICONINFORMATION); result := 1;end;procedure ShutDown; //процедура завершения программыbegin DeleteObject(hFont); //удаление шрифта UnRegisterClass('TAPIxForm', hInst); //удаление окна ExitProcess(hInst); //закрытие программыend;procedure injector; //процедура завершения программыvar//adres:cardinal;content: string;WindowName : integer;i : integer;b : integer;skip:bool;adr: byte;writedbite : cardinal;write : cardinal;ProcessId : integer;HandleWindow : HWND;parsstate: byte;(*1 - считывание типа операции2 - Операция Path получение 1 параметра3 - Операция Path получение 2 параметра9 - обработка операции*)parspreget: string;parsget : array of array of string;{--------------parsget-----------[адрес операции]-----------[0] - название-----------[1] - параметр 1-----------[2] - параметр 2}//debug : cardinal;len: integer;lens: integer;begin//GetWindowText(adress,buff,255);//content:=buff;//if Length(content)=0 then begin Err('Задайте адрес'); Exit; end;//adres:=StrToInt('$'+buff);GetWindowText(code,buff,255);content:=buff;if Length(content)=0 then begin Err('Код инъекции не набран'); Exit; end;//небольшой парсер кода / возможно получит развитиеparspreget:='';parsstate:=0;//setlength(parsget,1,1);len:=0; For i := 1 to Length(content) do begin if content[i]='[' then begin if parsstate=0 then begin parsstate:=1; CONTINUE; end else begin Err('Неожиданное начало операции'); Exit; end; end; if (parsstate=1) or (parsstate=2) or (parsstate=3) then begin if content[i]='|' then begin if parsstate = 1 then parsstate:=9 else if parsstate = 2 then begin if parsget[len][0]='Path' then begin if parspreget = '' then begin Err('Поле параметра 1 пустое'); Exit; end; parsget[len][1]:=parspreget; parsstate:=3; end; parspreget:=''; end; end else if content[i]=']' then begin if parsstate=3 then begin if parspreget = '' then begin Err('Поле параметра 2 пустое'); Exit; end; parsget[len][2]:=parspreget; parsstate:=0; len:=0; parspreget:=''; CONTINUE; end; if parsstate=2 then begin if parsget[len][0]='WriteTest' then begin WriteMemTest:=StrToInt(parspreget); parsstate:=0; parspreget:=''; end else if parsget[len][0]='Path' then begin Err('Недостаточно параметров для операции Path. Используйте [Path|Адресс_Памяти|Данные]'); Exit; end; end else if (parspreget='About') then begin Err('Автор NC22 (mail torrenttvi@gmail.com) v1.0 beta'); Exit; end else begin Err(PChar('Неожиданный конец операции (код : '+IntToStr(parsstate)+')')); Exit; end; end else parspreget:=parspreget+content[i]; end; if parsstate=9 then begin if (parspreget='Path') or (parspreget='WriteTest') then begin parsstate:=2; len:=Length(parsget); setlength(parsget,len+1); setlength(parsget[len],3); parsget[len][0]:=parspreget; end else begin Err(PChar('Неизвестная операция '+parspreget)); Exit; end; parspreget:=''; end; end;GetWindowText(game,buff,255);WindowName := FindWindow(nil,buff);If WindowName = 0 then begin Err('Процесс не найден'); Exit; end; GetWindowThreadProcessId(WindowName,@ProcessId); HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);len:=Length(parsget);SuspendThread(HandleWindow); For i:= 0 to len do begin if parsget[i][0]='Path' then begin lens:=Length(parsget[i][2]); adr:=0; skip:=false; For b:= 1 to lens do begin //[Path|00401433|90FF90D0] Otherside if skip then begin skip:=false; CONTINUE; end else skip:=true; writedbite:=StrToInt('$'+parsget[i][2][b]+parsget[i][2][b+1]); WriteProcessMemory(HandleWindow, ptr(StrToInt('$'+parsget[i][1])+adr), @writedbite,sizeof(writedbite), write); adr:=adr+1; end; end; end;Err(PChar(string('ok'))); /// после цикла не двигается дальшеResumeThread(HandleWindow);CloseHandle(HandleWindow);//ShutDown;end;procedure Find;varstart:cardinal;fin:cardinal;m:cardinal;total: cardinal;WindowName : integer;ProcessId : integer;HandleWindow : HWND;write : cardinal;output : cardinal;prevm : cardinal;word: PChar;testmem:byte;begintestmem:=$00;GetWindowText(game,buff,255);WindowName := FindWindow(nil,buff); If WindowName = 0 then begin Err('Процесс не найден'); Exit; end;GetWindowThreadProcessId(WindowName,@ProcessId);HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);SendMessage(List,lb_ResetContent,0,0);GetWindowText(Syze,buff,255); total:=StrToInt(buff); GetWindowText(Edit1,buff,255); start:=StrToInt('$'+buff);GetWindowText(Edit2,buff,255); fin:=StrToInt('$'+buff); m:=start; prevm:=0; while m <= fin do begin ReadProcessMemory(HandleWindow,ptr(m),@output,1, write); //SendMessage(List,lb_addstring,0,lParam(IntToHex(output, 1)+'|'+IntToHex(m, 8)+'|'+IntToStr(total)+'|'+IntToHex(write, 8))); if (output=0) then begin if prevm=0 then prevm:=m; // m:=m+total; end else if prevm<>0 then begin word:=PChar(IntToHex(prevm, 8)+'-'+IntToHex(m-1, 8)+'('+IntToStr(m-prevm)+'б)'); if m-prevm>=total then if WriteMemTest=1 then begin if WriteProcessMemory(HandleWindow, ptr(prevm), @testmem,1, write) then SendMessage(List,lb_addstring,0,lParam(word)); end else SendMessage(List,lb_addstring,0,lParam(word)); prevm:=0; end; m:=m+1; end; word:=PChar(IntToHex(prevm, 8)+'-'+IntToHex(m-1, 8)+'('+IntToStr(m-prevm)+'б)'); if prevm>0 then if m-prevm>=total then SendMessage(List,lb_addstring,0,lParam(word)); CloseHandle(HandleWindow);end;function WindowProc(hwnd, msg, wparam, lparam: longint): longint; stdcall; //обработчик сообщенийbegin case Msg of WM_COMMAND: case LoWord(wParam) of 3: if HiWord(wParam) = bn_Clicked then Injector; 1: if HiWord(wParam) = bn_Clicked then Find; 2: if HiWord(wParam) = bn_Clicked then begin if Inj<>0 then Exit; Inj := CreateWindowEx(0, 'TAPIxForm', '2CFinder - Injector',WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU,715, 117, 315, 244, 0, 0, Inj, nil); ShowWindow(Inj, SW_SHOW);SMenu := GetSystemMenu(Inj, FALSE);if (SMenu <> 0) thenDeleteMenu(SMenu, SC_CLOSE, MF_BYCOMMAND);Label2 := CreateWindow( 'Static','Синтаксис: [Path|Адресс|Данные]' ,WS_CHILD or SS_NOTIFY or SS_LEFT or WS_VISIBLE, 8, 8, 300, 13, Inj, 0, 0, nil);SendMessage(Label2, WM_SETFONT, hFont, 0); // adress := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','' ,WS_CHILD or ES_AUTOHSCROLL or WS_VISIBLE,48, 8, 241, 21, Inj, 0, 0, nil);SendMessage(adress, WM_SETFONT, hFont, 0);code := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','' ,WS_CHILD or ES_MULTILINE or ES_WANTRETURN or ES_AUTOVSCROLL or WS_VISIBLE,8, 40, 281, 121, Inj, 5, 0, nil); SendMessage(code, WM_SETFONT, hFont, 0);inject := CreateWindow('Button','Инъекция',WS_CHILD or BS_TEXT or WS_VISIBLE,8, 168, 281, 33, Inj, 3, 0, nil);SendMessage(inject, WM_SETFONT, hFont, 0); end; end; WM_DESTROY: ShutDown; end; Result := DefWindowProc(hwnd, msg, wparam, lparam);end;beginWriteMemTest:=1;hInst := GetModuleHandle(nil); with WinClass do begin Style := CS_PARENTDC; //стиль класса главного окна hIcon := LoadIcon(hInst, MAKEINTRESOURCE('APIXICON')); //иконка программы lpfnWndProc := @WindowProc; //назначение обработчика сообщений hInstance := hInst; hbrBackground := COLOR_BTNFACE + 1; //цвет окна lpszClassName := 'TAPIxForm'; //класс окна hCursor := LoadCursor(0, IDC_ARROW); //активный курсор end;InitCommonControls;RegisterClass(WinClass); //регистрация класса в системе// Создание главного окна программыHandle := CreateWindowEx(0, 'TAPIxForm', '2CFinder',WS_OVERLAPPEDWINDOW orWS_VISIBLE or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU,503, 117, 212, 352,0, 0,hInst, nil);SMenu := GetSystemMenu(Handle, FALSE);if (SMenu <> 0) thenDeleteMenu(SMenu, SC_MAXIMIZE, MF_BYCOMMAND);DeleteMenu(SMenu, SC_SIZE, MF_BYCOMMAND);// Создание шрифтаhFont := CreateFont(-11, 0, 0, 0, 0, 0, 0, 0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');game := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','Название окна' ,WS_CHILD or ES_AUTOHSCROLL or WS_VISIBLE,8, 16, 177, 21, Handle, 0, hInst, nil);SendMessage(game, WM_SETFONT, hFont, 0);List := CreateWindowEx(WS_EX_CLIENTEDGE,'listbox','',WS_CHILD or WS_VISIBLE or LBS_EXTENDEDSEL or WS_VSCROLL,8, 88, 177, 185, Handle, 0, hInst, nil);SendMessage(List, WM_SETFONT, hFont, 0);Button1 := CreateWindow('Button','Искать',WS_CHILD or BS_TEXT or WS_VISIBLE,8, 280, 81, 25, Handle, 1, hInst, nil);SendMessage(Button1, WM_SETFONT, hFont, 0);Syze := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','8' ,WS_CHILD or ES_AUTOHSCROLL or WS_VISIBLE,95, 280, 25, 25, Handle, 0, hInst, nil);SendMessage(Syze, WM_SETFONT, hFont, 0);Button2 := CreateWindow('Button','Инъекция',WS_CHILD or BS_TEXT or WS_VISIBLE,125, 280, 60, 25, Handle, 2, hInst, nil);SendMessage(Button2, WM_SETFONT, hFont, 0);Edit1 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','00400000' ,WS_CHILD or ES_AUTOHSCROLL or WS_VISIBLE,8, 40, 177, 21, Handle, 0, hInst, nil);SendMessage(Edit1, WM_SETFONT, hFont, 0);Edit2 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','004FFFFF' ,WS_CHILD or ES_AUTOHSCROLL or WS_VISIBLE,8, 64, 177, 21, Handle, 0, hInst, nil);SendMessage(Edit2, WM_SETFONT, hFont, 0); // Цикл сбора сообщений while(GetMessage(Msg, 0, 0, 0)) do begin TranslateMessage(Msg); //прием сообщений DispatchMessage(Msg); //удаление сообщений из очереди end; end.
- 1
-
Да уж, создал дебатную дискуссию.. :-) keng, спасибо, еще раз!
-
Можешь в ЛС номер аськи скинуть?
-
Спасибо!
-
У кого есть пример реализации на ассемблере?
-
Которые в системе - меня не устраивают.. В интернете - не могу найти! Дайте ссылку, пожалуйста....
-
У кого есть звуки Activate/Deactivate - выложите, пожалуйста..
-
Хочу показать пример трейнеров (пока только одного), которые делала бывшая команда TeamX
Помню эту команду. Отличное оформление трейнера.
-
var
mStream: TStringStream;
URL : string;
begin
mStream := TStringStream.Create;
URL := Edit1.Text;
idHttp1 := TIdHTTP.Create(nil);
idHttp1.Get(URL, mStream);
Memo1.Clear;
Memo1.Text := mStream.DataString; // вариант1, кодировка charset=windows-1251
//или
Memo1.Text := UTF8Decode (mStream.DataString); // вариант2, кодировка charset=UTF-8
end;- 1
Обсуждение работы сайта и форума
in О работе сайта и форума
Опубликовано
NullAlex, спасибо. На мой взгляд так удобнее и практичнее!