аллах велик
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Итак блина гайд будет долгим ну да похуй...
Вступление:
вы должны скачать 2 плагина на IDA PRO
это Sigmaker и IDA Class informer
после того как скачали установите плагины (если у вас есть мозги)
-----------------------------------------------------------------------------------------------
переходим к самому гайду как искать индексы
Сначала вы должны узнать старый индекс. Давайте возьмем IsPlayer в качестве примера:
Старый индекс был допустим 153. Но как вы собираетесь найти эту функцию? Легко. Запустите IDA и откройте старую client.dll с момента до обновления. Теперь вы должны добраться до vtable, где она берет свое начало, в случае IsPlayer это CBaseEntity. Вы можете добраться до него, установив плагин "ClassInformer" и просто выполнив поиск C_BaseEntity
Или идем в VIEW - >OPEN SUBVIEWS - >NAMES и ищете C_BaseEntity::'vftable'.но лучше установить ClassInformer. В любом случае, как только вы окажетесь в vtable, вам нужно будет добраться до нужной функции. Для этого вы сначала получаете адрес vtable
Теперь, чтобы получить функцию, вам нужно будет добавить оффсет к базе vtable. Для этого вы просто делаете vtable_base + function_index * 4. Причина этого заключается в том, что функции, которые вы можете видеть, просто ссылаются на реальные функции и имеют размер всего 4 байта. Вы также можете заметить, глядя на то, насколько смещение изменилось с каждой функцией
xor al, al может быть "переведен", чтобы вернуть false, что имеет смысл, так как он находится в таблице c_baseentity vtable. Если вы сейчас сделаете то же самое с таблицей c_baseplayer vtable, то увидите следующее
она возвратит True, который является логичным, так как это в C_BasePlayer таблицы vtable. Так что можно с уверенностью сказать, что это функция IsPlayer. Но как теперь найти индекс в новой версии? Просто sig функция, нажав на sub_XXXXXX и нажав CTRL+ALT+S и нажав кнопку "Auto create ida pattern". В моем случае это такой код
посмотрев на первые 5 байт, вы можете заметить, что это не прямой сигнал функции, а скорее оффсет, которое вызывает функцию. Если вы хотите вызвать сигнатуру, а не Индекс, вам придется следовать относительному вызову, но поскольку в этом случае вы просто хотите получить индекс, вам не нужно беспокоиться об этом. Поэтому теперь, когда у вас есть сигнатура, вы можете перейти к новому двоичному файлу и найти подпись, перейдя в поиск->последовательность байтов и введя подпись. Вот результат
Как я уже говорил раньше это сигнатура к оффсету которое вызывает функцию
Вход в функцию также подтвердит, что это действительно IsPlayer
Теперь последним шагом будет получение индекса, но это тот же процесс, что и получение функции vtable с индексом, только в обратном порядке. Таким образом, вы можете еще раз перейти в таблицу c_baseentity vtable и добавить старый индекс, а затем выполнить поиск функции оттуда. В этом случае это 2 ниже ( В случае такой простой функции, как IsPlayer, могут быть дубликаты, но этого не произойдет с более сложной функцией, такой как GetInaccuracy. Однако отфильтровать дубликаты не так уж сложно и довольно просто )
Таким образом, вы уже можете сделать +2 к старому смещению, но если вы не знаете старого смещения, вы также можете получить смещение, вычитая базу vtable из адреса функции и деля ее на 4. Вот так:
впринципе всё эта тема является адаптацией с этой темы
незнаю почему этой темы не было
Вступление:
вы должны скачать 2 плагина на IDA PRO
это Sigmaker и IDA Class informer
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
после того как скачали установите плагины (если у вас есть мозги)
-----------------------------------------------------------------------------------------------
переходим к самому гайду как искать индексы
Сначала вы должны узнать старый индекс. Давайте возьмем IsPlayer в качестве примера:
Старый индекс был допустим 153. Но как вы собираетесь найти эту функцию? Легко. Запустите IDA и откройте старую client.dll с момента до обновления. Теперь вы должны добраться до vtable, где она берет свое начало, в случае IsPlayer это CBaseEntity. Вы можете добраться до него, установив плагин "ClassInformer" и просто выполнив поиск C_BaseEntity
Или идем в VIEW - >OPEN SUBVIEWS - >NAMES и ищете C_BaseEntity::'vftable'.но лучше установить ClassInformer. В любом случае, как только вы окажетесь в vtable, вам нужно будет добраться до нужной функции. Для этого вы сначала получаете адрес vtable
Теперь, чтобы получить функцию, вам нужно будет добавить оффсет к базе vtable. Для этого вы просто делаете vtable_base + function_index * 4. Причина этого заключается в том, что функции, которые вы можете видеть, просто ссылаются на реальные функции и имеют размер всего 4 байта. Вы также можете заметить, глядя на то, насколько смещение изменилось с каждой функцией
Пожалуйста, авторизуйтесь для просмотра ссылки.
Если вы используете python pro, как и я, вы также можете использовать панель команд IDA и ввести шестнадцатеричный код(vtable_address + function_index * 4). Затем IDA выведет вам точный адрес, и вы можете просто дважды кликнуть по нему.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Теперь, когда вы находитесь по нужному адресу, нажмите на sub_XXXXXXX, который находится там.
Пожалуйста, авторизуйтесь для просмотра ссылки.
xor al, al может быть "переведен", чтобы вернуть false, что имеет смысл, так как он находится в таблице c_baseentity vtable. Если вы сейчас сделаете то же самое с таблицей c_baseplayer vtable, то увидите следующее
Пожалуйста, авторизуйтесь для просмотра ссылки.
она возвратит True, который является логичным, так как это в C_BasePlayer таблицы vtable. Так что можно с уверенностью сказать, что это функция IsPlayer. Но как теперь найти индекс в новой версии? Просто sig функция, нажав на sub_XXXXXX и нажав CTRL+ALT+S и нажав кнопку "Auto create ida pattern". В моем случае это такой код
Код:
direct reference: [actual address in first opcode] E8 ? ? ? ? 84 C0 74 7E
Пожалуйста, авторизуйтесь для просмотра ссылки.
Как я уже говорил раньше это сигнатура к оффсету которое вызывает функцию
Пожалуйста, авторизуйтесь для просмотра ссылки.
Вход в функцию также подтвердит, что это действительно IsPlayer
Пожалуйста, авторизуйтесь для просмотра ссылки.
Теперь последним шагом будет получение индекса, но это тот же процесс, что и получение функции vtable с индексом, только в обратном порядке. Таким образом, вы можете еще раз перейти в таблицу c_baseentity vtable и добавить старый индекс, а затем выполнить поиск функции оттуда. В этом случае это 2 ниже ( В случае такой простой функции, как IsPlayer, могут быть дубликаты, но этого не произойдет с более сложной функцией, такой как GetInaccuracy. Однако отфильтровать дубликаты не так уж сложно и довольно просто )
Пожалуйста, авторизуйтесь для просмотра ссылки.
Таким образом, вы уже можете сделать +2 к старому смещению, но если вы не знаете старого смещения, вы также можете получить смещение, вычитая базу vtable из адреса функции и деля ее на 4. Вот так:
Пожалуйста, авторизуйтесь для просмотра ссылки.
впринципе всё эта тема является адаптацией с этой темы
Пожалуйста, авторизуйтесь для просмотра ссылки.
незнаю почему этой темы не было