PwRuf3dn.ru
| Меню сайта |
| Категории раздела |
| Гайды [4] |
| Полезное для PW [4] |
| Создание ботов [1] |
| Разное [0] |
| Баги/Хаки [38] |
| Новости игрового мира [0] |
| Мини-чат |
| Наш опрос |
| Поиск |
| Последние файлы |
| Последние статьи |
| [06.04.2013] | [Гайды] |
| Гайд по PwRuf – Точер (76) | |
| [23.03.2013] | [Гайды] |
| Регистрация бота PwRuf-Crafter (492) | |
| [19.03.2013] | [Баги/Хаки] |
| x2 фишки в кубе (0) | |
| [19.03.2013] | [Баги/Хаки] |
| Как сохранить модель внешности без свитка перемен (0) | |
| Наша группа |
| Главная » Статьи » Полезное для PW |
| PParams = ^TParams; TParams = packed record WID: DWord; Packet: array [0..256] of byte; Param1,Param2,Param3: DWord; Param5:DWord; Param6: DWord; Param4: array [1..256] of widechar; BASE_ADD,Ofs,SendPacket:Pointer; end; //////////////////////////////////////////////////// procedure InjectFunc(ProcessID: Cardinal; Func: Pointer; aParams: Pointer; aParamsSize: DWORD); var hThread: THandle; lpNumberOfBytes: DWORD; ThreadAddr, ParamAddr: Pointer; begin if ProcessID<>0 then begin // ---- Write function address ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE); WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes); // ---- Address to write parameters ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE); WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes); // ---- Create a remote thread hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes); // ---- Thread to wait for the end of WaitForSingleObject(hThread, INFINITE); VirtualFreeEx(ProcessID,ThreadAddr,0,MEM_RELEASE); VirtualFreeEx(ProcessID,ParamAddr,0,MEM_RELEASE); CloseHandle(hThread); end end; ////////////////////////////////////////////////////////////// procedure PacketCall(aPParams:PParams); stdcall; var CallAddress,pPacket,_BASE_ADD_,_Ofs,_SendPacket:Pointer; Len:DWord; begin _SendPacket:=aPParams^.SendPacket; CallAddress:=Pointer(_SendPacket); //адрес был устаревший Len:=aPParams^.Param1; _BASE_ADD_:=aPParams^.BASE_ADD; _Ofs:=aPParams^.Ofs; pPacket:=@aPParams^.Packet; asm pushad mov ecx, _BASE_ADD_ mov ecx, dword ptr [ecx] mov esi, _Ofs mov ecx, dword ptr [ecx+esi] //20 push Len push pPacket call CallAddress popad end; end; procedure StrToByte(Packet:String; var aParams:TParams); var i:integer; begin try i:=(length(Packet) div 2)-1; aParams.Param1:=i+1; for i:=0 to i do aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]); except showmessage ('проблема в байтах'); end; end; procedure Packet(Packet: String); var aParams: TParams; PID, hProcess: DWord; begin aParams.BASE_ADD := Pointer(BASE_ADD); aParams.Ofs :=Pointer(OffSets_Uchastvuelvotpravkepaketa); aParams.SendPacket:= Pointer(OffSets_SendPacket); GetWindowThreadProcessId(WID, @PID); hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID); StrToByte(Packet,aParams); InjectFunc(hProcess,@PacketCall,@aParams,sizeof(aParams)); CloseHandle(hProcess); //забыл дописать end; procedure TForm1.Button40Click(Sender: TObject); begin packet('2A00'); end; | |
| Просмотров: 1676 | Теги: | Рейтинг: 0.0/0 |
| Всего комментариев: 0 | |