 |
РУОФФ Адреса и оффсеты - Разработка ПО для Perfect World - Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World |
07.07.2013, 21:29
|
#946
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Цитата:
Сообщение от BritishColonist
есть функция, которая, принимая WID игрока/моба/NPC, возвращает адрес начала его структуры (а если не находит, возвращает 0)
поделитесь у кого есть
|
|
 |
|
 |
|
Да без проблем. Функция поиска адреса структуры (персонажа/монстра/NPC) по WId:
Код:
MOV ECX,DWORD PTR DS:[0B8FBCC] // BA
PUSH 0
PUSH EDI // WId цели
MOV EDX,DWORD PTR DS:[ECX+1C]
MOV ECX,DWORD PTR DS:[EDX+1C]
CALL 004337A0
TEST EAX,EAX // результат в EAX, если 0, то адрес не найден
Просто выдрал это из клиента игры. Думаю, с составлением инжекта проблем не будет.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
|
|
|
08.07.2013, 13:48
|
#947
|
|
|
|
Разведчик
|
 Регистрация: 24.07.2011
 Сообщений: 17
 Популярность: 140
 Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: РУОФФ Адреса и оффсеты
1.4.7 +12E4 - количество голда в шопе
|
|
|
08.07.2013, 19:46
|
#948
|
|
|
|
Разведчик
|
 Регистрация: 23.02.2011
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
люди нужен оффсет на офф версию для FlyWQ
|
|
|
10.07.2013, 23:49
|
#949
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: РУОФФ Адреса и оффсеты
чее то не идет... крашится клиент..
procedure TargetCall(aPParams:PParams);Stdcall; //StdCall - îáÿçàòåëüíî, óêàçûâàåò ÷òî àðãóìåíòû ïîïàäàþò â ñòåê â îáðàòíîì (ñòàíäàðòíîì) ïîðÿäêå
var //
P1,P2: DWord;
CallAddress1:Pointer; //
begin //
P1:=aPParams^.WID; //
P2 := 1;
CallAddress1:=Pointer($004337A0);
asm
pushad
MOV EDI, P1 // Âíîñèì WID ìîáà/÷àðà â ðåãèñòð EDI
mov ecx, dword ptr [$0B8FBCC] //
PUSH 0
PUSH EDI // ; /Arg1
mov edx, dword ptr [ECX+$1C]
mov ecx, dword ptr [EDX+$1C] // ; |
CALL CallAddress1
TEST EAX,EAX
MOV P2, EDI
popad
end;
ShowMessage(string(P2));
end;
procedure TForm1.btn1Click(Sender: TObject);
var aParams: TParams;
begin
aParams.Param1 := 8273745;
InjectFunc(hProcess,@TargetCall,@aParams,sizeof(aP arams));
end;
не в той теме конешно нужно в инжект переехать...
|
|
|
11.07.2013, 16:40
|
#950
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: РУОФФ Адреса и оффсеты
tianddu, я уверен на 146% в том, что причина краша - ShowMessage.
Адрес функции берётся из основного приложения, а вызов происходит из клиента игры. Соответственно, в клиенте игры по этому адресу функции ShowMessage нет.
И ещё. test eax,eax служит для проверки. Если вы проверку осуществляете после инжекта, то её надо делать в самой программе, а не в ассемблерной вставке.
И ещё. Как возвратить результат из заинжектенного кода - я не знаю. Возможно, с помощью GetExitCodeThread (функция возвращает 4-байтовое значение, которое по идее означает результат выполнения функции-потока). Однако, насчёт данного случая я не уверен.
И вообще, если хотите стопроцентно правильно выполнить этот код с получением результата, то гораздо проще будет просто внедрить DLL, откуда и выполнить код (без инжекта кода).
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
Последний раз редактировалось BritishColonist; 11.07.2013 в 16:44.
|
|
|
12.07.2013, 22:07
|
#951
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: РУОФФ Адреса и оффсеты
BritishColonist, ну я с асемблером не знаком особо...по этому не знаю как считывать данные из асемблера.. DLL для меня вообще лес дремучий(
|
|
|
20.07.2013, 11:09
|
#952
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 14.06.2012
 Сообщений: 511
 Популярность: 7566
 Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: РУОФФ Адреса и оффсеты
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
|
|
|
20.07.2013, 11:37
|
#953
|
|
|
|
Разведчик
|
 Регистрация: 03.10.2012
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Тут упоминался FlySpeedStart/Быстрый взлет. Подскажите пжлста, в какую сторону копать, чтобы понять принцип работы.
|
|
|
20.07.2013, 16:46
|
#954
|
|
|
|
Разведчик
|
 Регистрация: 23.06.2012
 Сообщений: 43
 Популярность: 427
 Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
|
Re: РУОФФ Адреса и оффсеты
sumikot, подредактируй немного:
...
+1154 ActiveSkillArray /Массив умений/
+1158 ActiveSkillCnt
+116С PassiveSkillArray
+1170 PassiveSkillCnt
...
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
20.07.2013, 17:25
|
#955
|
|
|
|
Рыцарь-лейтенант
|
 Регистрация: 31.01.2011
 Сообщений: 413
 Популярность: 14489
 Золото Zhyk.Ru: 300
 Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Тут упоминался FlySpeedStart/Быстрый взлет. Подскажите пжлста, в какую сторону копать, чтобы понять принцип работы.
|
|
 |
|
 |
|
Могу помочь только оффсетом скорости перса на земле и в полете (правда на версию 1.3.6)
Код:
+86С, float (в метрах/с)
Аналогично можно найти для 1.4.4-1.4.6+.
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
|
|
|
06.08.2013, 06:32
|
#956
|
|
|
|
Разведчик
|
 Регистрация: 01.08.2013
 Сообщений: 6
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
ReadProcessMemory(Local_hProc,ptr($00B9029C),@data ,sizeof(data),rw);
ReadProcessMemory(Local_hProc,ptr(data+$34),@data, sizeof(data),rw);
ReadProcessMemory(Local_hProc,ptr(data+$0670),@dat a,sizeof(data),rw);
ReadProcessMemory(Local_hProc,ptr(data),@str,32,rw );
Result:=str;
Label2.Caption := String(str);
Подскажите в чем ошибка сделала согласно ответа на стр6 но выводится моментально меняющиеся знаение из цифр.
|
|
|
06.08.2013, 12:22
|
#957
|
|
|
|
Лейтенант-командор
|
 Регистрация: 12.08.2010
 Сообщений: 727
 Популярность: 30569
 Золото Zhyk.Ru: 1
 Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: РУОФФ Адреса и оффсеты
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кошельки: 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.
|
|
|
08.08.2013, 00:09
|
#958
|
|
|
|
Разведчик
|
 Регистрация: 02.10.2009
 Сообщений: 10
 Популярность: 28
 Сказал(а) спасибо: 22
Поблагодарили 9 раз(а) в 5 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Пробую на C++ написать, получить ХП, что не так? Выводит бред, а не ХП. Base адресс и смещение HP правильные, а вот насчет остальных смещений я не уверен, запутался маленько.
Код:
#include <iostream>
#include <Windows.h>
#pragma comment(lib, "user32.lib")
using namespace std;
int main()
{
HWND hwnd = FindWindow(0, L"Free-PW");
DWORD proc_id;
GetWindowThreadProcessId(hwnd, &proc_id);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);
DWORD base = 0x00B8FBCC;
DWORD hpoffset = 0x494;
int hp = 0;
ReadProcessMemory(handle, (LPCVOID)(base + 0x1C + 0x34 + hpoffset), &hp, 4, NULL);
cout << "HP = " << hp;
cin.get();
}
________________
Подпись нарушает п.28 правил.
Последний раз редактировалось Alekill; 08.08.2013 в 01:12.
|
|
|
08.08.2013, 01:18
|
#959
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Alekill, лучше писать по таким вопросам в разделе "обсуждения".
А если по существу: вы по ходу дела совершенно не в курсе, как обстоят дела с динамической памятью.
У нас есть базовый адрес BA, мы читаем из него значение. К значению добавляем смещение, читаем из нового значения. К новому - добавляем следующее смещение и так вплоть до конечного значения.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
|
|
|
08.08.2013, 01:32
|
#960
|
|
|
|
Разведчик
|
 Регистрация: 02.10.2009
 Сообщений: 10
 Популярность: 28
 Сказал(а) спасибо: 22
Поблагодарили 9 раз(а) в 5 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Разобрался. Получение ХП и координат на C++, если кому-то нужно:
Код:
#include <iostream>
#include <Windows.h>
#pragma comment(lib, "user32.lib")
using namespace std;
int main()
{
HWND hwnd = FindWindow(0, L"Perfect World); // Название окна
DWORD proc_id;
GetWindowThreadProcessId(hwnd, &proc_id);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);
DWORD base = 0x00B8FBCC;
DWORD pointed;
DWORD pointer = 0;
DWORD hpoffset = 0x494;
DWORD xoffset = 0x03C;
DWORD yoffset = 0x044;
DWORD zoffset = 0x040;
int hp = 0;
float x = 0;
float y = 0;
float z = 0;
ReadProcessMemory(handle, (LPCVOID)(base), &pointed, 4, NULL);
pointed+= 0x1C;
ReadProcessMemory(handle, (LPCVOID)(pointed), &pointed, 4, NULL);
pointed += 0x34;
ReadProcessMemory(handle, (LPCVOID)(pointed), &pointer, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + hpoffset), &hp, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + xoffset), &x, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + yoffset), &y, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + zoffset), &z, 4, NULL);
cout << "HP = " << hp << endl;
cout << "X = " << x << endl;
cout << "Y = " << y << endl;
cout << "Z = " << z << endl;
cin.get();
}
Только моба выделенного не могу прочитать, что-то с смещениям не-то наверно. Подскажите, если кто найдет ошибку. Пытаюсь получить его уровень.
Код:
#include <iostream>
#include <Windows.h>
#pragma comment(lib, "user32.lib")
using namespace std;
int main()
{
HWND hwnd = FindWindow(0, L"Perfect World"); // Название окна
DWORD proc_id;
GetWindowThreadProcessId(hwnd, &proc_id);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);
DWORD base = 0x00B8FBCC;
DWORD pointed;
DWORD pointer = 0;
DWORD mobpointed;
DWORD mobpointer = 0;
DWORD hpoffset = 0x494;
DWORD xoffset = 0x03C;
DWORD yoffset = 0x044;
DWORD zoffset = 0x040;
DWORD lvloffset = 0x48C;
DWORD moneyoffset = 0x560;
DWORD moblvloffset = 0x128;
// character
int hp = 0;
float x = 0;
float y = 0;
float z = 0;
int lvl = 0;
int money = 0;
// mob
int moblvl = 0;
// character
ReadProcessMemory(handle, (LPCVOID)(base), &pointed, 4, NULL);
pointed+= 0x1C;
ReadProcessMemory(handle, (LPCVOID)(pointed), &pointed, 4, NULL);
pointed += 0x34;
ReadProcessMemory(handle, (LPCVOID)(pointed), &pointer, 4, NULL);
// mob
ReadProcessMemory(handle, (LPCVOID)(base), &mobpointed, 4, NULL);
mobpointed+= 0x1C;
ReadProcessMemory(handle, (LPCVOID)(mobpointed), &mobpointed, 4, NULL);
mobpointed += 0x1C;
ReadProcessMemory(handle, (LPCVOID)(mobpointed), &mobpointed, 4, NULL);
mobpointed += 0x24;
ReadProcessMemory(handle, (LPCVOID)(mobpointed), &mobpointed, 4, NULL);
mobpointed += 0x14;
ReadProcessMemory(handle, (LPCVOID)(mobpointed), &mobpointer, 4, NULL);
while(true) // Цикл, чтобы постоянно выводить новые значения
{
// character
ReadProcessMemory(handle, (LPCVOID)(pointer + hpoffset), &hp, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + xoffset), &x, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + yoffset), &y, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + zoffset), &z, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + lvloffset), &lvl, 4, NULL);
ReadProcessMemory(handle, (LPCVOID)(pointer + moneyoffset), &money, 4, NULL);
cout << "Character: \n";
cout << "HP = " << hp << endl;
cout << "X = " << x << endl;
cout << "Y = " << y << endl;
cout << "Z = " << z << endl;
cout << "Lvl = " << lvl << endl;
cout << "Money = " << money << endl;
// mob
ReadProcessMemory(handle, (LPCVOID)(mobpointer + moblvloffset), &moblvl, 4, NULL);
cout << "\nMob: \n";
cout << "Mob lvl = " << moblvl << endl;
//money = 999999; // Эксперименты
//WriteProcessMemory(handle, (LPVOID)(pointer + moneyoffset), &money, 4, NULL); // Эксперименты
Sleep(100);
system("cls");
}
cin.get();
}
________________
Подпись нарушает п.28 правил.
Последний раз редактировалось Alekill; 08.08.2013 в 16:55.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 08:09.
|
 |