Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

[Руоф] Код для инжекта в память.

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 27.10.2011, 04:30   #61
 Разведчик
Аватар для Allein
 
Allein никому не известный тип
Регистрация: 12.04.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

HellD, угу, опечаточка
Исправил
  Ответить с цитированием
Старый 31.10.2011, 00:20   #62
 Разведчик
Аватар для Sanych89
 
Sanych89 на правильном пути
Регистрация: 09.09.2010
Сообщений: 32
Популярность: 82
Сказал(а) спасибо: 16
Поблагодарили 37 раз(а) в 12 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

то ли лыжи не едут, то ли со мной что-то не так.

Код:
  PParams = ^TParams;
  TParams = packed record
    Packet: array [0..100] of byte;
    Param1,Param2,Param3: DWord;
    Param4: array [1..100] of widechar;
    Param5: word;
  end;
  Base_Addr = $B27A04;
  host_player = $34;

procedure InjectFunc(WH: THandle; Func: Pointer; aParams: Pointer; aParamsSize: DWORD);
var
  hThread: THandle;
  lpNumberOfBytes: DWORD;
  ThreadAddr, ParamAddr: Pointer;
  hProcess, PID : dword;
begin
  if WH<>0 then
  begin
    GetWindowThreadProcessId(WH, @PID);
    hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
    ThreadAddr:=VirtualAllocEx(hProcess,nil,256,MEM_COMMIT,PAGE_READWRITE);
    WriteProcessMemory(hProcess, ThreadAddr, Func, 256, lpNumberOfBytes);
    ParamAddr := VirtualAllocEx(hProcess, 0, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(hProcess, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);
    hThread := CreateRemoteThread(hProcess, 0, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
  end;
end;

procedure PacketCall(aPParams:PParams); stdcall;
var
  CallAddress,pPacket:pointer;
  Len:DWord;
begin
  CallAddress:=Pointer($006737B0);
  Len:=aPParams^.Param1;
  pPacket:=@aPParams^.Packet;
  asm
    pushad
    mov ecx, dword ptr [base_addr]
    mov ecx, dword ptr [ecx+host_player]
    push Len
    push pPacket
    call CallAddress
    popad
  end;
end;
procedure StrToByte(bytecode:string; var aParams:TParams);
var
  i:integer;
begin
  i:=(length(bytecode) div 2)-1;
  aParams.Param1:=i+1;
  for i:=0 to i do
    aParams.Packet[i]:=strtoint('$'+bytecode[i*2+1]+bytecode[i*2+2]);
end;

procedure Packet(Packet: string;wh:THandle);
var
  aParams: TParams;
begin
  StrToByte(Packet,aParams);
  InjectFunc(wh,@PacketCall,@aParams,sizeof(aParams));
end;
в общем, копипаста из начала топика. пакеты, вроде, отправляются. клиент не валится с ошибкой.
и даже PacketListener думает, что я их посылаю. но эффекта (в конкретном случае - поедания банки) не наблюдается.
где я удак?)

Последний раз редактировалось Sanych89; 31.10.2011 в 00:24.
  Ответить с цитированием
Старый 31.10.2011, 19:35   #63
 Разведчик
Аватар для Krio K.Th
 
Krio K.Th никому не известный тип
Регистрация: 24.10.2011
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
Arrow Re: [Руоф] Код для инжекта в память.

mov ecx, dword ptr [base_addr]
mov ecx, dword ptr [ecx+$20] <-- вот так, а не $34
  Ответить с цитированием
Пользователь сказал cпасибо:
Sanych89 (01.11.2011)
Старый 31.10.2011, 20:14   #64
-= Илитный Мастер =-
 Главнокомандующий
Аватар для AEBus
 
AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(AEBus сломал счётчик популярности :(
Регистрация: 28.03.2009
Сообщений: 1,666
Популярность: 67466
Сказал(а) спасибо: 246
Поблагодарили 1,560 раз(а) в 691 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Krio K.Th, к твоему сведению уже $34 хост плеер структ а не $20
  Ответить с цитированием
Старый 01.11.2011, 00:32   #65
 Разведчик
Аватар для Sanych89
 
Sanych89 на правильном пути
Регистрация: 09.09.2010
Сообщений: 32
Популярность: 82
Сказал(а) спасибо: 16
Поблагодарили 37 раз(а) в 12 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

нет, там к host_player не имеет отношения. спасибо)
  Ответить с цитированием
Старый 04.11.2011, 21:37   #66
 Разведчик
Аватар для imeninnik
 
imeninnik никому не известный тип
Регистрация: 29.05.2010
Сообщений: 6
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

подскажите на какой изменился адрес инжекта SkillCall
Цитата:
procedure SkillCall(aPParams:PParams); stdcall;
var CallAddress: pointer;
P1: DWord;
begin
CallAddress:=Pointer($00463630);
P1: =aPParams^.Param1;
asm
pushad
mov ecx, dword ptr [PW_BASE_ADDRESS]
mov ecx, dword ptr [ecx+$1C]
mov ecx, dword ptr [ecx+ $34 ]
push $FFFFFFFF
push $00
push $00
mov edx, P1
push edx
call CallAddress
popad
end;
end;

спс нашел в соседней теме http://zhyk.ru/forum/showthread.php?t=287321 , но не успел проверить =) ну и спс VeTaL_UA за оперативный ответ. отметил сразу зеленым что изменилось

Последний раз редактировалось imeninnik; 04.11.2011 в 21:52.
  Ответить с цитированием
Старый 04.11.2011, 21:46   #67
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от imeninnikПосмотреть сообщение
подскажите на какой изменился адрес инжекта SkillCall

$00463630
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 06.11.2011, 05:14   #68
 Разведчик
Аватар для sin(alpha)
 
sin(alpha) никому не известный тип
Регистрация: 31.10.2011
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Люди будте добры, дайте подсказку. Пытаюсь подружить с инжектами C# столкнулся с одной проблемой - язык плохо понимает ссылки на функции, или я не понимаю как передать в качестве параметра ссылку на функцию в инжектор. Пытался передать через dll выдает ошибки записи в память. С помощью IDA извлек тело функции в виде опкодов оформил как массив байт, что-то запускается и клиент ПВ падает со светофором.
В то же время пакетная передача работает нормально, но пакетами не реализовать алгоритм "поди сюда".
  Ответить с цитированием
Старый 06.11.2011, 10:39   #69
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от sin(alpha)Посмотреть сообщение
но пакетами не реализовать алгоритм "поди сюда".

Кто тебе это сказал?
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 06.11.2011, 12:41   #70
 Разведчик
Аватар для sin(alpha)
 
sin(alpha) никому не известный тип
Регистрация: 31.10.2011
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Прослушка пакетов сказала. Поскольку при повторной пересылке пакета пришедшего на действие "иду вперед" никаких действий персонаж не совершает, то предполагаю любым видом перемещений заведует клиент, и серверу отсылается только информативный пакет типо "персонаж двигался и теперь находится тут". Или у тебя есть инфа как выглядит пакет "идти в (X, Y, Z)" за одно может еще и подскажешь "следовать за кем-либо" на это действие вообще никакого отклика от прослушки не поступает, приходят только стандартные пакеты информации о местоположении если оно менялось.
  Ответить с цитированием
Старый 06.11.2011, 13:21   #71
 Разведчик
Аватар для trixicus
 
trixicus никому не известный тип
Регистрация: 30.10.2011
Сообщений: 1
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от sin(alpha)Посмотреть сообщение
персонаж двигался и теперь находится тут

Так это можно хороший телепорт написать =) Нажал, и ты уже "тут".
PS: Пакет на перемещение посмотри внимательней
  Ответить с цитированием
Старый 06.11.2011, 15:24   #72
 Разведчик
Аватар для sin(alpha)
 
sin(alpha) никому не известный тип
Регистрация: 31.10.2011
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

07 00 C2 3A 1B C5 F1 48 07 43 00 36 39 C5 7B 04 21 21 32 00 E5 00

Коричневый желтый оранжевый - X Z Y координаты конечной точки
07 00 - опкод
а белым не понятно что, может вектор ориентации персонажа ну типо данные о повороте модели
и этот пакет единственный появляющийся при перемещении в конце перемещения.

при дальних переходах еще добавляются промежуточные данные ХЗ может сигнализируют о проходе по координатам сетки:
00 00 44 16 1B C5 64 74 07 43 D1 47 39 C5 44 16 1B C5 64 74 07 43 D1 47 39 C5 14 02 C8 04 21 33 00

но вот пакета отвечающего за начало движения не нахожу.

Если вы знаете будьте добры уж подскажите пакеты на движение по координатам и следования за другим игроком.

Последний раз редактировалось sin(alpha); 06.11.2011 в 16:21.
  Ответить с цитированием
Старый 13.11.2011, 10:52   #73
 Разведчик
Аватар для imeninnik
 
imeninnik никому не известный тип
Регистрация: 29.05.2010
Сообщений: 6
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от sin(alpha)Посмотреть сообщение
07 00 C2 3A 1B C5 F1 48 07 43 00 36 39 C5 7B 04 21 21 32 00 E5 00

Коричневый желтый оранжевый - X Z Y координаты конечной точки
07 00 - опкод
а белым не понятно что, может вектор ориентации персонажа ну типо данные о повороте модели
и этот пакет единственный появляющийся при перемещении в конце перемещения.

при дальних переходах еще добавляются промежуточные данные ХЗ может сигнализируют о проходе по координатам сетки:
00 00 44 16 1B C5 64 74 07 43 D1 47 39 C5 44 16 1B C5 64 74 07 43 D1 47 39 C5 14 02 C8 04 21 33 00

но вот пакета отвечающего за начало движения не нахожу.

Если вы знаете будьте добры уж подскажите пакеты на движение по координатам и следования за другим игроком.

как было замечено в других темах много чего можно узнать из кода FlyWQ.
Цитата:
Сообщение от rsamПосмотреть сообщение
Исходники FlyWQ выложены автором [Ссылки могут видеть только зарегистрированные пользователи. ], включаемый файл [Ссылки могут видеть только зарегистрированные пользователи. ]

там же найдеш такой кусок в коде
Код:
flyUp(client, times)
{

	global

	local loopn := times - 1
	local time := 0.5 ;s
	local baseAddress := ReadMemory(realBaseAddress,client) ;00986c00
	local pointer1 := ReadMemory(baseAddress+baseOffset,client) ;04c88408
	local player := ReadMemory(pointer1+playerOffset,client)
	
	SetFormat, IntegerFast, hex	
	
	local yCoord := readmemory(player+playerYposOffset, client, 4)
	local yCoordFloat := hextofloat(yCoord)

	if(yCoordFloat < 700)
	{

		loop %times%
		{
			sleep 500
			local packet := "0700"
			local counter := readmemory(player+playerCounterOffset, client, 2)
			local interval := readmemory(player+playerIntervalOffset, client, 2) ;0x01F4
			local xCoord := readmemory(player+playerXposOffset, client, 4)
			local zCoord := readmemory(player+playerZposOffset, client, 4)
			local speed := readmemory(player+playerFlySpdOffset, client, 4)
			local moveType := 0x61

			local speedFloat := hextofloat(speed)

			local yCoordFloat := yCoordFloat + speedFloat * time
			local sendSpeedFloat := speedFloat * 256 + 0.5
			local sendSpeedHex := floor(sendSpeedFloat)
			local sendYcoordHex := floattohex(yCoordFloat)
			revHex(value, xCoord)
			packet := packet . value
			revHex(value, sendYcoordHex)
			packet := packet . value
			revHex(value, zCoord)
			packet := packet . value
			revHex(value, sendSpeedHex, 4)
			packet := packet . value
			packet := packet . "00"		;direction
			revHex(value, moveType, 2)
			packet := packet . value
			revHex(value, counter, 4)
			packet := packet . value
			packet := packet . "F401"	;unknown value

			writeMemory(counter + 1,player+playerCounterOffset, client, 2)
			writeMemory(sendYcoordHex,player+playerYposOffset, client)
			sendPacket(packet, "16", 0x16, client)	

		}
		;Send an invalid packet so the server updates your location properly :P:P
		
		local packet := "0700"
		local counter := readmemory(player+playerCounterOffset, client, 2)
		local speedFloat := hextofloat(speed)

		local yCoordFloat := yCoordFloat + speedFloat * time
		local sendSpeedFloat := speedFloat * 256 + 0.5
		local sendSpeedHex := floor(sendSpeedFloat)
		local sendYcoordHex := floattohex(yCoordFloat)
		revHex(value, xCoord)
		packet := packet . value
		revHex(value, sendYcoordHex)
		packet := packet . value
		revHex(value, zCoord)
		packet := packet . value
		revHex(value, sendSpeedHex, 4)
		packet := packet . value
		packet := packet . "00"		;direction
		revHex(value, moveType, 2)
		packet := packet . value
		revHex(value, counter, 4)
		packet := packet . value
		packet := packet . "0000"	;unknown value

		writeMemory(counter + 1,player+playerCounterOffset, client, 2)
		writeMemory(sendYcoordHex,player+playerYposOffset, client)
		sendPacket(packet, "16", 0x16, client)	
	

		sleep 2000
	}
		SetFormat, IntegerFast, d
}
В данном куске кода реализован взлет без использования инжектов,а так же нужное тебе формирование пакета. Но не запутайся, обрати внимание на выделение красным цветом (в коде идет формирование так сказать не правильного пакета в начале) Все константы всегда выносятся в файл WQing.ini, прилагаемый к программе. Свежий гео бот найдешь тут

Последний раз редактировалось imeninnik; 13.11.2011 в 10:58.
  Ответить с цитированием
Старый 19.11.2011, 11:09   #74
 Разведчик
Аватар для sin(alpha)
 
sin(alpha) никому не известный тип
Регистрация: 31.10.2011
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Заморочился попробовать инжекты. Клиент вылетает со светофором, по описанию проблема в стеке код кривой тестовый Visual C++, консоль, не допераю как передать аргументы в функцию в потоке:

Код:
#include "stdafx.h"

const DWORD BaseAddress = 0x000b27a04;
const DWORD PW_GAMERUN_ADDR = 0x00B280C4;
DWORD PlayerStruct = 0;
void Walk(float x, float y, float z, Client c);
locale rus("rus_rus.866");
struct Param
{
    DWORD Param1,Param2,Param3;
    DWORD Param4;
};

int wmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(rus);
    wcin.imbue(rus);
    wchar_t *name = L"ElementClient Window";
    Client c(name);
    DWORD b = c.ReadInt32(BaseAddress);
    printf("%8.0X",b);    cout<<"\n\r";
    b = c.ReadInt32(b+0x1C);
    printf("%8.0X",b);    cout<<"\n\r";
    b = c.ReadInt32(b+0x34);
    PlayerStruct = b;
    printf("%8.0X",b);    cout<<"\n\r";
    b = c.ReadInt32(b+0x638);
    printf("%8.0X",b);    cout<<"\n\r";
    BYTE buffer[66];
    WCHAR *persName; 
    for(int i=0; i<33;i++)
    {
        buffer[i] = c.ReadByte(b+i);
    }
    persName = (WCHAR*)buffer;
    wcout<<persName;
    int i;
    cin>>i;
    Sleep(2000);
    Walk(10,0,0,c);
    cin>>i;
    return 0;
}
    bool CallRemoteFunction(HANDLE pProcess, LPVOID func, LPVOID param)
{
    //Remote Thread Handle
    HANDLE hProcess=pProcess;
    //Inject Thread handle
    HANDLE hThread=NULL;
    //Inject Fuction Address after allocate
    LPVOID ThreadCodeAddr=NULL;
    //Inject Function
    LPVOID ThreadDataAddr=NULL;
    //Inject Fuction Stack Data
    LPCVOID lpParam = NULL;
    DWORD Value = 0;
    lpParam = &Value;

    
    ThreadCodeAddr=VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_READWRITE);
    ThreadDataAddr=VirtualAllocEx(hProcess, NULL, 256, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory (hProcess, ThreadCodeAddr, func, 4096, NULL);
    WriteProcessMemory (hProcess, ThreadDataAddr, param, 256, NULL);
    hThread = CreateRemoteThread(hProcess, NULL, NULL,(LPTHREAD_START_ROUTINE)ThreadCodeAddr, ThreadDataAddr, NULL, NULL);
    if (!hThread)
     {
        //Do your Error message (CreateRemoteThread);
     }
    else
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    VirtualFreeEx(hProcess, ThreadCodeAddr, 4096, MEM_RELEASE);
    VirtualFreeEx(hProcess, ThreadDataAddr, 256, MEM_RELEASE);
    CloseHandle(hProcess);
    return false;
}

    void _stdcall WalkCall(Param* params)
    {
    LPVOID CallAddress1,CallAddress2,CallAddress3;
    float x,y,z;
    DWORD flying;
    CallAddress1 = reinterpret_cast<LPVOID>(0x0046E410);
    CallAddress2 = reinterpret_cast<LPVOID>(0x004728E0);
    CallAddress3 = reinterpret_cast<LPVOID>(0x0046E880);
    x = *((float*)(byte*)params->Param1);
    y = *((float*)(byte*)params->Param2);
    z = *((float*)(byte*)params->Param3);
    flying = params->Param4;
 _asm
 {
  pushad
  mov eax, dword ptr [PW_GAMERUN_ADDR]
  mov esi, dword ptr [eax+34h]
  mov ecx, dword ptr [esi+1050h]
  push 1
  call CallAddress1
  mov edi, eax
  lea eax, dword ptr [esp+0Ch]
  push eax
  push flying
  mov ecx, edi
  call CallAddress2
  mov ecx, dword ptr [esi+1050h]
  push 0
  push 1
  push edi
  push 1
  call CallAddress3
  mov eax, dword ptr [PW_GAMERUN_ADDR]
  mov eax, dword ptr [eax+34h]
  mov eax, dword ptr [eax+1050h]
  mov eax, dword ptr [eax+30h]
  mov ecx, dword ptr [eax+4h]
  mov eax, x
  mov dword ptr[ecx+20h], eax
  mov eax, z
  mov dword ptr[ecx+24h], eax
  mov eax, y
  mov dword ptr[ecx+28h], eax
  popad
 }
 }

void Walk(float x, float y, float z, Client c)
{
    byte WalkMode;
Param params;
ReadProcessMemory(c.Process(),reinterpret_cast<DWORD*>(PlayerStruct+0x64c),&WalkMode,1,NULL); //BaseWalkMode = GA +34 +64C
if (WalkMode == 0) params.Param4 = 0; else params.Param4 =1;
params.Param1=*((DWORD*)(byte*)&x)+c.ReadInt32(PlayerStruct+0x3c);
params.Param2=*((DWORD*)(byte*)&y)+c.ReadInt32(PlayerStruct+0x44);
params.Param3=*((DWORD*)(byte*)&z)+c.ReadInt32(PlayerStruct+0x40);
CallRemoteFunction(c.Process(),WalkCall,&params);
}

stdafx.h:

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <locale>
#include <string.h>
#include <strsafe.h>
#include <iostream>


using namespace std;

class Client
{
    HWND hwnd;
    DWORD pID;
    HANDLE process;
    DWORD pointer;
public:

    Client(wchar_t *name)
    {
        hwnd = NULL;
        wprintf_s(L"Window searching...");
        wprintf_s(L"\n\r");
        hwnd = FindWindowExW(NULL,hwnd,name,NULL);
        if (hwnd != NULL)
        {
            wprintf (L"Window founded. Handler HWND: "); cout<<hwnd<<'\n'<<'\r';
            wprintf_s(L"Taking process ID...");wprintf_s(L"\n\r");
            GetWindowThreadProcessId(hwnd,&pID);
        if (pID != 0)
        {
            wprintf (L"Process ID is are DWORD: "); cout<<pID<<'\n'<<'\r';
            wprintf_s(L"Opening process...");
            wprintf_s(L"\n\r");
            IAmaDebugger(false);
            process = OpenProcess(PROCESS_ALL_ACCESS,0,pID);
            wprintf (L"ERR CODE: "); cout<<GetLastError()<<'\n'<<'\r';
            if (process == NULL) {wprintf (L"Cannot open process");Sleep(2000);exit(-1);}
            wprintf (L"Full access process opened. HANDLE: "); cout<<process<<'\n'<<'\r';
        }
        else wprintf (L"ID not taken");
        }
        else {wprintf_s(L"Window not found.");wprintf_s(L"\n\r");}
        wprintf(L"******************************************************************");cout<<'\n'<<'\r';
        cout<<'\n'<<'\r';
        cout<<'\n'<<'\r';
        pointer = 0;
    }

    ~Client(void)
    {
    }

    HWND HWnd() {return hwnd;}
    DWORD PID() {return pID;}
    HANDLE Process() {return process;}
    LPVOID Pointer() {return reinterpret_cast<LPVOID>(pointer);}
    BYTE ReadByte (DWORD addr)
    {
        SIZE_T readed;
        BYTE buf = 0;
        ReadProcessMemory(process,reinterpret_cast<DWORD*>(addr),&buf,1,&readed);
        return buf;
    }
    DWORD ReadInt32 (DWORD addr)
    {
        SIZE_T readed;
        BYTE buf[4] = {0,0,0,0};
        ReadProcessMemory(process,reinterpret_cast<DWORD*>(addr),buf,4,&readed);
        pointer = *((DWORD*)buf);
        return *((DWORD*)buf);
    }

    void IAmaDebugger(bool debug)
    {
   HANDLE hCp;
   if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hCp))
   {
      TOKEN_PRIVILEGES tp;
      tp.PrivilegeCount = 1;
      LookupPrivilegeValue(0, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
      tp.Privileges[0].Attributes = debug ? SE_PRIVILEGE_ENABLED : 0;
      AdjustTokenPrivileges(hCp, 0, &tp, sizeof(tp), 0, 0);
      CloseHandle(hCp);
   }
   
    }
};
    class MemPtr
    {
        DWORD adr;
        DWORD pointer;
    public:
        LPVOID Value;
        MemPtr(DWORD address)
        {
            adr = address;
            Value = reinterpret_cast<LPVOID>(adr);
        }
        ~MemPtr()
        {
            
        }

        LPVOID operator + (DWORD offset)
        {
            LPVOID out;
            adr += offset;
            out = reinterpret_cast<LPVOID>(adr);
            return out;
        }

};
CreateRemoteThread выдает ошибку 998 "Неправильный доступ к памяти" почему ХЗ.

Последний раз редактировалось sin(alpha); 19.11.2011 в 17:35.
  Ответить с цитированием
Старый 05.12.2011, 22:51   #75
 Разведчик
Аватар для heh
 
heh никому не известный тип
Регистрация: 08.08.2009
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

простите за наглость но случайно ни у кого нет кусочка кода(в идеале делфи) который творит инжект - тагрет ID поломал мозг совсем
________________
придворный ПРОстигоспадиГРАММИСТ
NO[IMG]
Код:
http://s47.radikal.ru/i115/1006/06/71c662f8fbae.gif
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Читерим в CrossFire или методы инжекта Hummel Cross Fire 6 10.11.2010 21:36
[Программа] Память о базе Chipito Базы серверов и брут 2 30.08.2010 18:23
Оперативная память для ПВ. NikelR Общение и обсуждение Perfect World 4 25.05.2010 23:30

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 02:14.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net