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

Injection Codes - Delphi/C++/AutoIt

-

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

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

Ответ
 
Опции темы
Старый 16.02.2010, 13:10   #1
 Рыцарь
Аватар для Sirioga
 
Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(
Регистрация: 19.11.2008
Сообщений: 385
Популярность: 13343
Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
 
По умолчанию Injection Codes - Delphi/C++/AutoIt

Injection Codes - Delphi/C++/AutoIt
Все адреса в функциях устарели!
[Ссылки могут видеть только зарегистрированные пользователи. ]

По скольку большенство умных сдесь людей несколько эгоистичны, я решил написать свой гайд и поделится им с форумом!
Ну начнем, во перых Injecting это лучший способ написания своего бота или чего нибудь другого, а во вторых, давайте перестанем быть нубами и просто менять адреса, давайте играть жестко!

Вся информация здесь основана на Perfect World International

Для начала:
Давайте разберёмся кое в чем. Все люди здесь говорят о изменении адресов, офсетах и указателях...Вы понимаете о чем я говорю? (идите в google и поищите парочку гайдов)

Я нашел 4 типа адресов:

1. Базовый адрес (0x0096d1dc)
--> [Ссылки могут видеть только зарегистрированные пользователи. ] (EN)
--> Мы начнём отсюда. Все Inject функции нужно начинать с указателя от правильного адреса!
--> Используйте гайд как найти базовый адрес...Когда вы нашли базовый адрес, вычтите 0x1C и выполните еще один поиск в Hex значении для того что бы узнать РЕАЛЬНЫЙ базовый адрес.
--> Все Inject функции начинаются отсюда. Попробуйте найти ассемблерный код [0096d1dc] в отладчике [Ссылки могут видеть только зарегистрированные пользователи. ] и вы будите иметь все возможные адреса для Injecting`а

2. Динамический адрес (0x0096d1dc + 0x1C -> указывает на 0x0096d87c)
--> Это адрес начала блока игровой сесии, называется по ошибке большинством как тот самый base address. Используется для ботов таких как MHS.
--> Its the Load-in-Time allocator... in other words, its a memory redirector.

3. Окружающая среда Адреса (0x0096d87c + 0x8 -> указывает на динамический адрес)
--> Указатель, который выделяет динамической адресации для петель и охраняемые блоки.

4. Роль Адреса (0x0096d87c + 0x20 -> указывает на динамический адрес)
--> Указатель, который выделяет динамический адрес как глобальные переменные, константы и типы.

Разъяснение:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Функции для Injecting`а

Delphi: (by asgborges)
Код:
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, 3000);

    GetExitCodeThread(hThread,lpExitCode);
    TerminateThread(hThread,lpExitCode);

    VirtualFreeEx(ProcessID,ThreadAddr,0,MEM_RELEASE);
    VirtualFreeEx(ProcessID,ParamAddr,0,MEM_RELEASE);
    VirtualFreeEx(ProcessID,Func,0,MEM_RELEASE);
    VirtualFreeEx(ProcessID,aParams,0,MEM_RELEASE);

    CloseHandle(hThread);
  end
end;
C++ Builder: (найдено в инете)
Код:
#include <tlhelp32.h>
...
typedef  tagPROCESSENTRY32W pGameProcess;
...
bool CallRemoteFunction(pGameProcess pProcess)
{
	//Remote Thread Handle
	HANDLE hProcess=NULL;
	//Inject Thread handle
	HANDLE hThread=NULL;
	//Inject Fuction Address after allocate
	LPVOID ThreadCodeAddr=NULL;
	//Inject Function
	LPVOID Func=SelectMonster;
	//Inject Fuction Stack Address after allocate
	LPVOID ThreadDataAddr=NULL;
	//Inject Fuction Stack Data
	LPCVOID lpParam = NULL;
	DWORD Value = 0;
	lpParam = &Value;

	hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pProcess.th32ProcessID);
	if (!hProcess)
	{
		//Do your Error message (OpenProcess);
		return false;
	}
	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, lpParam, 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;
}
AutoIt (нет библиотеки с опкодами)
Код:
Func INJECTCODE($PID)
If $PID <> 0 And $OPCODE <> "" Then
Local $DATA = DllStructCreate("byte[" & StringLen($OPCODE) / 2 & "]")
For $I = 1 To DllStructGetSize($DATA)
DllStructSetData($DATA, 1, Dec(StringMid($OPCODE, ($I - 1) * 2 + 1, 2)), $I)
Next
Local $RESULT, $PROCESS, $ADD, $THREAD
$RESULT = DllCall("Kernel32.Dll", "int", "OpenProcess", "int", 2035711, "int", 0, "int", $PID)
$PROCESS = $RESULT[0]
$RESULT = DllCall("Kernel32.dll", "ptr", "VirtualAllocEx", "int", $PROCESS, "ptr", 0, "int", DllStructGetSize($DATA), "int", 4096, "int", 64)
$ADD = $RESULT[0]
$RESULT = DllCall("kernel32.dll", "int", "WriteProcessMemory", "int", $PROCESS, "ptr", $ADD, "ptr", DllStructGetPtr($DATA), "int", DllStructGetSize($DATA), "int", 0)
$RESULT = DllCall("kernel32.dll", "int", "CreateRemoteThread", "int", $PROCESS, "ptr", 0, "int", 0, "int", $ADD, "ptr", 0, "int", 0, "int", 0)
$THREAD = $RESULT[0]
Do
$RESULT = DllCall("kernel32.dll", "int", "WaitForSingleObject", "int", $THREAD, "int", 50)
Until $RESULT[0] <> 258
DllCall("Kernel32.dll", "int", "CloseHandle", "int", $THREAD)
$RESULT = DllCall("Kernel32.dll", "ptr", "VirtualFreeEx", "hwnd", $PROCESS, "ptr", DllStructGetPtr($DATA), "int", DllStructGetSize($DATA), "int", 32768)
DllCall("Kernel32.dll", "int", "CloseHandle", "int", $PROCESS)
$OPCODE = ""
$DATA = 0
EndIf
EndFunc
Примеры Injecting`а

Delphi: (by asgborges)

Код:
//*************************************************************//
// Select the Moster (Full Target HP)
// OBS: Working well
//*************************************************************//
procedure SelectMonster(MonID: PParams); stdcall;
(*
004596AD - a1 dc d1 96 00             - mov eax,[0096d1dc] : 0096D860
004596B2 - 57                         - push edi
004596B3 - 8b 48 20                   - mov ecx,[eax+20]
004596B6 - 81 c1 ec 00 00 00          - add ecx,000000ec
004596BC - e8 8f c7 14 00             - call 005a5e50
*)
var
  P1: DWORD;
begin
  P1:=MonID^.Param1;
  asm
    mov edx, DWORD PTR [$0096d1dc]
    push     P1
    mov ecx, DWORD PTR [edx+$20]
    add ecx, $EC
    mov edx, $005a5e50
    call     edx
  end;
end;

//*************************************************************//
// Fly command
// OBS: Working well
//*************************************************************
procedure Fly(aPParams: PParams); stdcall;
(*
0044A926 - 8b 15 dc d1 96 00          - mov edx,[0096d1dc] : 0096D860
0044A92C - 6a 01                      - push 01
0044A92E - 51                         - push ecx
0044A92F - 8b 4a 20                   - mov ecx,[edx+20]
0044A932 - 6a 0c                      - push 0c
0044A934 - 6a 01                      - push 01
0044A936 - 81 c1 ec 00 00 00          - add ecx,000000ec
0044A93C - e8 bf b2 15 00             - call 005a5c00
*)
begin
    asm
       mov  edx, DWORD PTR [$0096d1dc]
       push $01
       push $31f7
       mov  ecx, DWORD PTR [edx+$20]
       push $0C
       push $01
       add ecx, $EC
       mov  edx, $005a5c00
       call edx
    end;
end;

//*************************************************************//
// Pick Items on ground
// OBS: Working... need to stay close of the Item
//*************************************************************//
procedure PickItem(aPParams: PParams); stdcall;
(*
00467693 - 8b 15 dc d1 96 00          - mov edx,[0096d1dc] : 0096D860
00467699 - 50                         - push eax
0046769A - 51                         - push ecx
0046769B - 8b 4a 20                   - mov ecx,[edx+20]
0046769E - 81 c1 ec 00 00 00          - add ecx,000000ec
004676A4 - e8 37 e7 13 00             - call 005a5de0
*)
var
  Address: pointer;
  Pa1,pa2: cardinal;
begin
  Pa1:=aPParams^.Param1;
  pa2:=aPParams^.Param2;
  asm
    mov  edx, DWORD PTR [$0096d1dc]
    push Pa1                  // Item SN
    push Pa2                  // Item ID
    mov  ecx, DWORD PTR [edx+$20]
    add  ecx, $EC
    mov  edx, $005a5de0
    call edx
  end;
end;
C++ Builder: (adapted to work with PWI)
Код:
static DWORD WINAPI SelectMonster(LPCVOID lpParam)
{
	//004596AD - a1 dc d1 96 00             - mov eax,[0096d1dc] : 0096D860
	//004596B2 - 57                         - push edi
	//004596B3 - 8b 48 20                   - mov ecx,[eax+20]
	//004596B6 - 81 c1 ec 00 00 00          - add ecx,000000ec
	//004596BC - e8 8f c7 14 00             - call 005a5e50
	DWORD BaseAddress= 0x0096d1dc;
	DWORD CallAddress= 0x005a5e50;
	DWORD MonsterID = (DWORD)lpParam;
	__try
	{
		_asm
		{
		  mov edx, DWORD PTR [BaseAddress]
		  push     MonsterID
		  mov ecx, DWORD PTR [edx+0x20]
		  add ecx, 0xEC
		  mov edx, CallAddress
		  call     edx
		}
	}
	__except(1)
	{
	}
	return 0;
}
AutoIt (Неверное так как "шприц" указан не полностью)
Код:
Func SETCURENTMOBID($ID)
  _MEMORYWRITE($MOB_ID_ADD, $MEMID, $ID)
  If $ID <> 0 Then
    $OPCODE = ""
    PUSHAD()
    MOV_EDX_DWORD_PTR(9875524)
    PUSH($ID)
    MOV_ECX_DWORD_PTR_EAX_ADD(32)
    $OPCODE &= "81c1ec000000"
    MOV_EDX(5916464)
    CALL_EDX()
    POPAD()
    RET()
    INJECTCODE($PID)
  EndIf
EndFunc
________________

Переведено для Zhyk.Ru, по возможности будет исправлятся и дополнятся.
Кооректоры: TBX1n

Последний раз редактировалось Sirioga; 28.05.2012 в 20:08. Причина: Исправил ошибки, перевод
  Ответить с цитированием
12 пользователя(ей) сказали cпасибо:
Бени (16.02.2010), BioDread (14.03.2012), BlayD (15.01.2011), Dinmaite (16.02.2010), DoctorWho (16.02.2010), Ликвид (17.02.2010), I_FISHER (04.09.2011), KloneB@DGuY (17.02.2010), konstantinqq (16.02.2010), Njkzy80 (08.02.2011), Saphire (16.02.2010), Wallace_Breen (03.01.2011)
Старый 16.02.2010, 13:25   #2
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Sirioga, уважаемый, вы переводили чем? гуглом? перевод очень разниться с тем, что написано в оригинале. Если вы не владеете технической стороной вопроса, то не надо такие статьи переводить. Сначала надо понять что такое указатели, как хранятся данные в памяти и т.д.

Вот мои дополнения/корректировке к програмной части:
[BA] - базовый адрес

[BA + 1C] - это адрес начала блока игровой сесии, называется по ошибке большинством как тот самый base address. Используется для ботов таких как MHS.
[BA + 1C + 20] - это адрес начала блока информации о персонаже, отсюда находят все основные значения параметров игрока, такие как ману, жизни, таргет и т.д.

Таким образом, в терминах адрес значения HP будет :
[BA] + 0x1C + 0x20 + 0x454, где 0x454 оффсет для моей версии ПВ, в ваших клиентах он может быть другим.
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.

Последний раз редактировалось Kitsune; 16.02.2010 в 13:33.
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
BioDread (14.03.2012), Njkzy80 (08.02.2011)
Старый 16.02.2010, 13:42   #3
 Рыцарь
Аватар для Sirioga
 
Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(
Регистрация: 19.11.2008
Сообщений: 385
Популярность: 13343
Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Цитата:
Сообщение от TBX1nПосмотреть сообщение
Sirioga, уважаемый, вы переводили чем? гуглом? перевод очень разниться с тем, что написано в оригинале.ваших клиентах он может быть другим.

Переведено пол часа назад ручками, технической стороной вопроса владею, но вот к терминам принятым в русской ветке epvp не привык. Буду рад в помощи устранения ошибок перевода и приведения перевода в более читабельный вид.
  Ответить с цитированием
Старый 17.02.2010, 09:38   #4
 Разведчик
Аватар для АпАпАпчих
 
АпАпАпчих никому не известный тип
Регистрация: 14.02.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Тема стоящая внимания) А нужные оффсеты ковырять через CE? Я читал на форумах взлома pwi про CE, и то что через этот движок можно получить оффсеты. Так ли это и как можно это сделать?

Да и еще вопросик, как допустим ntKid получает базовый адрес? Вероятно ищет окно, получает путь к файлу, лезет в него по какому-нибудь указателю (а значит он статический?), который указывает на Base Adress. Если я ошибаюсь - поправьте, если не ошибаюсь - дайте адрес этого указателя.

За помощь тыкну спасибку =)
  Ответить с цитированием
Старый 17.02.2010, 19:58   #5
 Рыцарь
Аватар для Sirioga
 
Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(
Регистрация: 19.11.2008
Сообщений: 385
Популярность: 13343
Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Цитата:
Сообщение от АпАпАпчихПосмотреть сообщение
Тема стоящая внимания) А нужные оффсеты ковырять через CE? Я читал на форумах взлома pwi про CE, и то что через этот движок можно получить оффсеты. Так ли это и как можно это сделать?

Да и еще вопросик, как допустим ntKid получает базовый адрес? Вероятно ищет окно, получает путь к файлу, лезет в него по какому-нибудь указателю (а значит он статический?), который указывает на Base Adress. Если я ошибаюсь - поправьте, если не ошибаюсь - дайте адрес этого указателя.

Нет такого указателя, там используется несколько другой метод)
а насчёт офсетов...знаешь где More Information находится в СЕ?
  Ответить с цитированием
Старый 17.02.2010, 20:29   #6
 Разведчик
Аватар для АпАпАпчих
 
АпАпАпчих никому не известный тип
Регистрация: 14.02.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Да я уже разобрался, спасибо)

Кстати забыл вопросик один задать.

получится ли использовать следующее:
- Ищем игру
- Открываем память
- Используем процедуру readprocessmemory для получения значения по адресу (базовый адрес + офсет)
- Обрабатывать значение
?

Просто писать не охото если оно не работает.. Если ты знаешь, получится или нет напиши либо тут либо в личку)

Последний раз редактировалось АпАпАпчих; 17.02.2010 в 20:37. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 17.02.2010, 20:47   #7
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Цитата:
Сообщение от АпАпАпчихПосмотреть сообщение
Да я уже разобрался, спасибо)

Кстати забыл вопросик один задать.

получится ли использовать следующее:
- Ищем игру
- Открываем память
- Используем процедуру readprocessmemory для получения значения по адресу (базовый адрес + офсет)
- Обрабатывать значение
?

Просто писать не охото если оно не работает.. Если ты знаешь, получится или нет напиши либо тут либо в личку)

Ну базовый+цепочка офсетов скорее. А вообще получится. Боты так и читают инфу о чаре.
  Ответить с цитированием
Старый 17.02.2010, 21:02   #8
 Разведчик
Аватар для АпАпАпчих
 
АпАпАпчих никому не известный тип
Регистрация: 14.02.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Очень интересно..

ну допустим - базовый адрес 0x000AAAAA
офсет на хп допустим 400 (да и кстати, представление офсета должно быть в какой именно СС? 16 или 10? или не имеет значение?)

Значит надо написать 0x000AAAAA+400? только это больше смахивает на мой предложенный вариант. Если я ошибаюсь, то... как должна выглядеть цепочка офсетов?

Я просто не особо знаком с офсетами, раньше баловался со статическими, с динамикой памятью не баловался, пора уже научиться =)

(пы. сы. Спасибка почему-то недоступна )
пы. сы язык Delphi.
С++ не установлен у меня.
  Ответить с цитированием
Старый 17.02.2010, 21:14   #9
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

СС не имеет значения, цепочка адресов потому что показатели чара находятся через 2 офсета от базового адреса.
[ba]+1c+20+45C - лвл для руофа
код писать лень, поэтому псевдокод)

buf - буфер.
readprocessmemory(дескриптор процесса,[ba],buf,количество байт для чтения, число прочитанных байт)
readprocessmemory(дескриптор процесса,buf+1c,buf,количество байт для чтения, число прочитанных байт)
readprocessmemory(дескриптор процесса,buf+20,buf,количество байт для чтения, число прочитанных байт)
readprocessmemory(дескриптор процесса,buf+45c,buf,количество байт для чтения, число прочитанных байт)
ХП перса := buf.


Спасибка не доступна потому что нет 10 постов.
  Ответить с цитированием
Пользователь сказал cпасибо:
BioDread (14.03.2012)
Старый 17.02.2010, 21:18   #10
 Разведчик
Аватар для АпАпАпчих
 
АпАпАпчих никому не известный тип
Регистрация: 14.02.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
Question Re: Injection Codes - Delphi/C++/AutoIt

Супер, спасибо, сейчас попробую написать, о результатах сообщу чуть позже)

Добавлено через 59 минут
Код:
var
  buf, ba, process, pid: integer;
  wr: cardinal;

  Begin
    if th<>0 then
    begin
      EnableDebugPrivilege(true);

      GetWindowThreadProcessId(th, @pid);
      process:=OpenProcess(PROCESS_ALL_ACCESS, false, pid);

      ba:=10007676;  {базовый адрес в 10СС, получил при помощи [MHS-RETRIEVER].exe}
      if process<>0 then
      begin
        readprocessmemory(process, ptr(ba), @buf, sizeof(buf), wr);
        readprocessmemory(process, ptr(buf+$1c), @buf, sizeof(buf), wr);
        readprocessmemory(process, ptr(buf+$20), @buf, sizeof(buf), wr);
        readprocessmemory(process, ptr(buf+$45c), @buf, sizeof(buf), wr);
        p_lvl_inf.Caption := 'Уровень: ' + inttostr(buf);
        CloseHandle(process);
      end;
    end;
end;
Написал кодик, странно, но выдает не лвл, а число 70386754. Причем постоянно это число. Где я мог напортачить?

th - хендл окна

Последний раз редактировалось АпАпАпчих; 17.02.2010 в 22:18. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 19.02.2010, 11:32   #11
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Цитата:
Сообщение от АпАпАпчихПосмотреть сообщение
Написал кодик, странно, но выдает не лвл, а число 70386754. Причем постоянно это число. Где я мог напортачить?
th - хендл окна

Мы с тобой говорим о разных "базовых" адресах, [MHS-RETRIEVER] находит
[BA + 1C] - начало блока игровой сесии, Реальный базовый адрес для офа на данный момент времени 98addc.
Поэтому для того что бы найти уровень верно, нужно либо задавать реальный базовый либо убрать из кода строку
Код:
readprocessmemory(process, ptr(buf+$1c), @buf, sizeof(buf), wr);
  Ответить с цитированием
Пользователь сказал cпасибо:
АпАпАпчих (19.02.2010)
Старый 19.02.2010, 12:48   #12
 Разведчик
Аватар для АпАпАпчих
 
АпАпАпчих никому не известный тип
Регистрация: 14.02.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

ах вот оно как) теперь всё работает)
  Ответить с цитированием
Старый 12.06.2010, 17:35   #13
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Так что же это такое - Injection Codes ? Способ получить информацию о персе?
В последних настройках MHS-Bot появилась строка Base_Inject=10005980 - можете пояснить что это за параметр?
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 12.06.2010, 17:43   #14
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

krukovis,
1. Injection Codes - инъекция своего года в запущенный процес и непосредственно выполнение его там.
2. Адрес инжекта функции простой атаки.
3. Вопросы связанные с ботом задавайте в соответствующей теме.
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Старый 09.08.2010, 22:27   #15
 Разведчик
Аватар для Maty
 
Maty никому не известный тип
Регистрация: 09.08.2010
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Injection Codes - Delphi/C++/AutoIt

Последний код работает на чтение. И путем несложных манипуляций можно основные числовые параметры достать. А где найти Имя себя и свой клан? по каким адресам?
  Ответить с цитированием
Ответ

Метки
инжектинг, inject, тини, perfect, world

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi для начинающих Leo_ня Треп 28 18.07.2011 04:48
[Программа] ФлудБот написанный на Delphi Saphire Боты, скрипты и прочий софт для Perfect World 57 06.10.2010 23:47
Видео Уроки Delphi wagan Pascal/Delphi 2 26.04.2010 09:34
[Руководство] Dll-Injecting on Delphi shagart Pascal/Delphi 1 02.12.2008 13:45

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

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

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