![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
kakawkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.6.2010 Репутация: нет Всего: нет |
Собственно для начала пытаюсь считать данные: ник из игры World of Warcraft. По программе Cheat Engine надо считать: WoW.exe+E3CB40
Считываю вот так:
В итоге в Edit4 выходит: 쫐�ᶪ搘䛲艹鈭ā杋콠䪙⼰㿋ꃗ蠀) Не подскажите где ошибка данного кода |
|||
|
||||
Illusion Dolphin |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 5 Всего: 63 |
http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
$00E3CB40 это RVA, а ReadProcessMemory требует нормальный указатель, то есть VA
его можно получить как базу WoW.exe + RVA. можно искать базу в чужом процессе например функцией Module32Next, а можно расчитывать на то что база загруженного экзешника (почти) всегда совпадает с "предпочитаемой" базой экзешника на диске. -------------------- Обижено школьников: 8 |
|||
|
||||
kakawkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.6.2010 Репутация: нет Всего: нет |
Т.е. мне сейчас надо узнать адрес процесса Wow.exe а делее ipBase:=ptr([Wow.exe]+$00E3CB40); ? |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
не процесса, а базовый адрес модуля wow.exe в адресном пространстве процесса hProc
-------------------- Обижено школьников: 8 |
|||
|
||||
kakawkin |
|
||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.6.2010 Репутация: нет Всего: нет |
Что-то вообще не пойму. Вывел данные и вот что получилось:
|
||||
|
|||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
во-первых у тебя в CreateToolHelp32Snapshot(TH32CS_SNAPMODULE, 0) идет 0, а надо ид процесса в котором ищешь (то есть твоя переменная PID)
во-вторых перечисление строй как-то так
-------------------- Обижено школьников: 8 |
|||
|
||||
kakawkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.6.2010 Репутация: нет Всего: нет |
Сделал как ты сказал.
Как понял нужные мне строчки это: D:\Game\WoW 4.3\Wow.exe D:\Game\WoW 4.3\dbghelp.dll Вот ихние базовые адреса: Wow.exe - базовый адресс 2752512 dbghelp.dll - базовый адресс 1730281472 Базовые адреса модулей узнал коммандой inttostr(DWORD(Module32.modBaseAddr)); Это сообщение отредактировал(а) kakawkin - 25.6.2013, 19:48 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
kakawkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.6.2010 Репутация: нет Всего: нет |
Т.е. данные теперь получаются так:
ReadProcessMemory(hProc, Pointer($2A0000+$00E3CB40), ipBuf, len, numberRead); или же ReadProcessMemory(hProc, Pointer($2A0000), @ipBuf, len, numberRead); ReadProcessMemory(hProc, Pointer(ipBuf+$00E3CB40), ipBuf, len, numberRead); Верно ? |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
первый вариант
ну только я бы получал 2A0000 в рантайм, а не забивал число в код -------------------- Обижено школьников: 8 |
|||
|
||||
kakawkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.6.2010 Репутация: нет Всего: нет |
Сделал пока вот так: ReadProcessMemory(hProc, Pointer($FD0000+$E3CB40), @ipBuf, len, numberRead); Адрес изменился при перезапуске клиента но не беда, поулчаю в рантайме данные. Только что выкидывает теперь: ![]() |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
@ipBuf это адрес указателя
-------------------- Обижено школьников: 8 |
|||
|
||||
kakawkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.6.2010 Репутация: нет Всего: нет |
Сделал так:
возвращает пустоту |
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 18 Всего: 191 |
Скорее всего ник лежит по адресу, не являющимся фиксированным, и работать ничего не будет. Если это так, а проверить можно тем же Cheat Engine, запустив WoW несколько раз, создав разные условия, то правильный выход - искать адрес строки с ником через адрес объекта, в методах которого этот ник фигурирует. Как правило, во всех играх Blizzard для объектов зарезервированы ячейки в сегменте данных. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |