Гайд Продолжение. вбе(партикли)

Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Начинающий
Статус
Оффлайн
Регистрация
12 Сен 2020
Сообщения
42
Реакции[?]
3
Поинты[?]
0
а как мы определили 0x90 индекс в партиклях, где мы структуру для ParticleList определяем, чисто перебором или что-то на мысль навело?
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
а как мы определили 0x90 индекс в партиклях, где мы структуру для ParticleList определяем, чисто перебором или что-то на мысль навело?
по инструкции типа mov xxx, [yyy+90] которая взята из вроде SetControlPoint. ты туда из джс передаешь handle, из этого handle потом делается указатель на партикль а потом уже вызывается SetControlPoint из вмт
 
Начинающий
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
146
Реакции[?]
9
Поинты[?]
0
Вроде кроме CreatePanelWithCurrentContext ничего не нашел в дампе
Нашел вот эту, там UserMsg.particlemanager
 

Вложения

Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
CreateParticle тебе нужен хреф. у меня нашло 3 штуки в дебагере. кликаю по всем 4 ищу там инструкцию lea yyy, [xxx] после хрефа, чекаю, вижу что это функция, иду туда, чекаю там каждый mov в dumpе и вижу в реклассе там RTTI CDOTA_ParticleManager : CGameParticleManager : CGameEventListener : IGameEventListener2
в итоге хреф четвертый по счету тебе нужен.там чуть ниже два lea rax, [какая-то_функция], тебе нужен второй lea по счету
1602875447563.png
 
Начинающий
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
146
Реакции[?]
9
Поинты[?]
0
Нашел я эту функу про которую ты писал, по всем mov прошелся почти не нашел там строки с CDOTA_ParticleManager
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Нашел я эту функу про которую ты писал, по всем mov прошелся почти не нашел там строки с CDOTA_ParticleManager
там RTTI в реклассе чекай + чекай еще mov follow in dump->constant, не только value, забыл упомянуть, думал строка там в самом классе лежит а она рядом
 
Начинающий
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
146
Реакции[?]
9
Поинты[?]
0
Как мне ее правильно вызвать? Получил адрес, дальше тайпдеф с функой и вызов ее? Что за оффсет у тебя 0x35? Который
DPMP = particle_pat + 0x35?
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Как мне ее правильно вызвать? Получил адрес, дальше тайпдеф с функой и вызов ее? Что за оффсет у тебя 0x35? Который
DPMP = particle_pat + 0x35?
particle_pat это адрес функции
particle_pat + 0x123456 это адрес инструкции(mov xxx, [CDOTAPARTICLEMANAGERBLABLABLA]) вышеупомянутой функции из которой нужно из относительного адреса сделать абсолютный.
этот абсолютный адрес и будет указателем на указатель на CDOTAPARTICLEMANAGERBLABLABLA.
по входу в матч дереференсишь этот указатель и потом получаешь вмт и вызываешь что надо
вне матча этого класса не существует(указатель равен 0)
 
Начинающий
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
146
Реакции[?]
9
Поинты[?]
0
Как мне ее правильно вызвать?
particle_pat это адрес функции
particle_pat + 0x123456 это адрес инструкции(mov xxx, [CDOTAPARTICLEMANAGERBLABLABLA]) вышеупомянутой функции из которой нужно из относительного адреса сделать абсолютный.
этот абсолютный адрес и будет указателем на указатель на CDOTAPARTICLEMANAGERBLABLABLA.
по входу в матч дереференсишь этот указатель и потом получаешь вмт и вызываешь что надо
вне матча этого класса не существует(указатель равен 0)
Тоесть получается надо просто указатель на класс получить а позже вызвать функу из его вмт? В дилибе ща посмотрю этот класс, спасибо!
 
Начинающий
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
146
Реакции[?]
9
Поинты[?]
0
А где можно еще почитать про реверс дабы свои знания улучшить? Ток одну книжку читал, а именно Вскрытие покажет, да и то там все на x86 машине
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
А где можно еще почитать про реверс дабы свои знания улучшить? Ток одну книжку читал, а именно Вскрытие покажет, да и то там все на x86 машине
хз я ничего не читал просто практика в дебагере
 
Начинающий
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
146
Реакции[?]
9
Поинты[?]
0
класинформер перестал работать лол, в либклиенте орет что работае только с компилятором msbuild, а там gnu++
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
класинформер перестал работать лол, в либклиенте орет что работае только с компилятором msbuild, а там gnu++
это же мак осовские бинарки, там нет msvc компилятора, он только под виндовсом в визуалке/отдельном сдк. а класс информер только под msvc
 
Начинающий
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
146
Реакции[?]
9
Поинты[?]
0
А вот смотри, я пытаюсь класс этот получить, сделал так
unsigned long long CDOTA_ParticleManager = GetAbsoluteAddress(particle_pattern + 0x35, 3, 7);
CMSG("Class : %s\n, n2hex(CDOTA_ParticleManager)");

И когда я адрес сую в реклас, там явно не класс этот
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
А вот смотри, я пытаюсь класс этот получить, сделал так
unsigned long long CDOTA_ParticleManager = GetAbsoluteAddress(particle_pattern + 0x35, 3, 7);
CMSG("Class : %s\n, n2hex(CDOTA_ParticleManager)");

И когда я адрес сую в реклас, там явно не класс этот
ты сначала в дебагер зайди и чекни что находится по оффсету 0x35(а находится там собственно хлам), а потом вычисли новый оффсет(0x74)
 
Сверху Снизу