HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 14.10.2024, 00:34
kudr_van
Новичок
Регистрация: 15.11.2021
Сообщений: 7
С нами: 2366020

Репутация: 3
По умолчанию

Братва, здарова. Как находить оффсеты для написания хуков ? Вот типо у меня есть samp.dll в IDA Free, что мне дальше делать чтобы получить оффсет ?





 
Ответить с цитированием

  #2  
Старый 14.10.2024, 00:49
XRLM
Познавший АНТИЧАТ
Регистрация: 06.09.2021
Сообщений: 1,646
С нами: 2466635

Репутация: 133


По умолчанию

во-первых, удали иду фри и скачай кряк иды про, во-вторых, скачай готовые базы сампа и гта, и в-третьих, ктхуки
 
Ответить с цитированием

  #3  
Старый 14.10.2024, 00:53
kudr_van
Новичок
Регистрация: 15.11.2021
Сообщений: 7
С нами: 2366020

Репутация: 3
По умолчанию

Цитата:
Сообщение от XRLM  

во-первых, удали иду фри и скачай кряк иды про, во-вторых, скачай готовые базы сампа и гта, и в-третьих, ктхуки
У меня есть и Ида про, суть в том, как вообще их находить, из готовых баз сампа - многие не сходятся
 
Ответить с цитированием

  #4  
Старый 14.10.2024, 01:10
XRLM
Познавший АНТИЧАТ
Регистрация: 06.09.2021
Сообщений: 1,646
С нами: 2466635

Репутация: 133


По умолчанию

Цитата:
Сообщение от VanikMelkin  

из готовых баз сампа - многие не сходятся
потому что существуют разные версии сампа 🤯🤯🤯
 
Ответить с цитированием

  #5  
Старый 21.10.2024, 10:08
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

Поставим хук на добавление сообщений в чат на SAMP 0.3.7 R3 без готовой базы, а на основе только отсканированого samp.dll

1. Найдём место где отправляется любое сообщение в чат, проще всего будет взять какой-то статический текст по типу текста при скриншоте.

Для этого генерируем строки с помощью нажатия Shift + F12, нас перекидывает в окно "Strings"



Тут нажимаем на любую строку после чего Ctrl + F и ищем текст связаный с скриншотом. Нам нужна строка

Цитата:

Screenshot Taken - sa-mp-%03i.png
Нажимаем по ней два раза и нас перекидывает на смещение .rdata:100EA75C

Нажимаем левой кнопкой мыши по выделеному на скриншоте тексту


После чего нажимаем X ( икс ), и смотрим где в samp.dll вызывается данная строка.



Видим что строка вызывается только один раз, это очень сильно облегчает нам задачу. Переходим к месту вызова нажав "OK"

Нас перекидывает на смещение 10074FC7 где мы видим такую картину



Код идёт как всегда сверху в низ и это значит что всё что сверху это параметры для функции sub_100678F0, значит эта функция отправляет сообщение о скриншоте в чат, посмотрим её в псевдокоде C нажав на F5



Тут видим что эта функция вызывается с параметрами ArgList, Текст формата сообщения, и значение для формата, в нашём случае значение формата это номер скриншота, а ArgList это указатель на CChat. Назовём пока что эту функцию SendDebugMessage, и двойным нажатием на её название перейдём в её псевдокод.



Тут мы видим что функция форматирует строку которая передается вторым параметром и потом передает её в другую функцию, с другими параметрами.

Значит эта функция занимается только форматированием, и передачей параметров в другую функцию sub_10067460, переименуем её в AddMessageToChat, перейдём в неё и посмотрим её псевдокод



Тут видим сигнатуру функции

Цитата:

char*(__thiscall*)(int this, int a2, char* Source, const char* a4, int a5, int a6)
из этого уже можно создать хук, но слегка переделаем нашу сигнатуру дабы было более понятно нажав на название функции правой кнопкой мыши и нажав Y



Нас кидает сюда. Первым делом укажем возвращаемый тип данных void ( Потому что если мы перейдем по вызовам функции то увидим что функции которые её вызывают на самом деле не должны ничего возвращать. Дальше изменим int this на void* this, char* Source изменим на const char* szText, int a5 изменим на unsigned int nColor ( Потому что если полазить по вызовам функции то увидим что в функции sub_100679F0 она вызывается с параметром 0xFF000000, что скорее всего может являться цветом сообщения )

На выходе мы получаем сигнатуру

Цитата:

void(__thiscall*)(void* this, int a2, const char* szText, const char* a4, unsigned int nColor, int a6)
Адрес функции это смещение в samp.dll где начинается её пролог. В нашём случае это 0x67460

 
Ответить с цитированием

  #6  
Старый 21.10.2024, 16:26
kudr_van
Новичок
Регистрация: 15.11.2021
Сообщений: 7
С нами: 2366020

Репутация: 3
По умолчанию

Цитата:
Сообщение от ARMOR  

Поставим хук на добавление сообщений в чат на SAMP 0.3.7 R3 без готовой базы, а на основе только отсканированого samp.dll
1. Найдём место где отправляется любое сообщение в чат, проще всего будет взять какой-то статический текст по типу текста при скриншоте.
Для этого генерируем строки с помощью нажатия Shift + F12, нас перекидывает в окно "Strings"

Тут нажимаем на любую строку после чего Ctrl + F и ищем текст связаный с скриншотом. Нам нужна строка

Нажимаем по ней два раза и нас перекидывает на смещение .rdata:100EA75C
Нажимаем левой кнопкой мыши по выделеному на скриншоте тексту

После чего нажимаем X ( икс ), и смотрим где в samp.dll вызывается данная строка.

Видим что строка вызывается только один раз, это очень сильно облегчает нам задачу. Переходим к месту вызова нажав "OK"

Нас перекидывает на смещение 10074FC7 где мы видим такую картину

Код идёт как всегда сверху в низ и это значит что всё что сверху это параметры для функции sub_100678F0, значит эта функция отправляет сообщение о скриншоте в чат, посмотрим её в псевдокоде C нажав на F5

Тут видим что эта функция вызывается с параметрами ArgList, Текст формата сообщения, и значение для формата, в нашём случае значение формата это номер скриншота, а ArgList это указатель на CChat. Назовём пока что эту функцию SendDebugMessage, и двойным нажатием на её название перейдём в её псевдокод.

Тут мы видим что функция форматирует строку которая передается вторым параметром и потом передает её в другую функцию, с другими параметрами.
Значит эта функция занимается только форматированием, и передачей параметров в другую функцию sub_10067460, переименуем её в AddMessageToChat, перейдём в неё и посмотрим её псевдокод

Тут видим сигнатуру функции

из этого уже можно создать хук, но слегка переделаем нашу сигнатуру дабы было более понятно нажав на название функции правой кнопкой мыши и нажав Y

Нас кидает сюда. Первым делом укажем возвращаемый тип данных void ( Потому что если мы перейдем по вызовам функции то увидим что функции которые её вызывают на самом деле не должны ничего возвращать. Дальше изменим int this на void* this, char* Source изменим на const char* szText, int a5 изменим на unsigned int nColor ( Потому что если полазить по вызовам функции то увидим что в функции sub_100679F0 она вызывается с параметром 0xFF000000, что скорее всего может являться цветом сообщения )
На выходе мы получаем сигнатуру

Адрес функции это смещение в samp.dll где начинается её пролог. В нашём случае это 0x67460
лучший, как раз то что мне надо
 
Ответить с цитированием

  #7  
Старый 21.10.2024, 18:51
rqcePeek
Познающий
Регистрация: 04.09.2023
Сообщений: 84
С нами: 1419486

Репутация: 18
По умолчанию

Цитата:
Сообщение от ARMOR  

Поставим хук на добавление сообщений в чат на SAMP 0.3.7 R3 без готовой базы, а на основе только отсканированого samp.dll
1. Найдём место где отправляется любое сообщение в чат, проще всего будет взять какой-то статический текст по типу текста при скриншоте.
Для этого генерируем строки с помощью нажатия Shift + F12, нас перекидывает в окно "Strings"

Тут нажимаем на любую строку после чего Ctrl + F и ищем текст связаный с скриншотом. Нам нужна строка

Нажимаем по ней два раза и нас перекидывает на смещение .rdata:100EA75C
Нажимаем левой кнопкой мыши по выделеному на скриншоте тексту

После чего нажимаем X ( икс ), и смотрим где в samp.dll вызывается данная строка.

Видим что строка вызывается только один раз, это очень сильно облегчает нам задачу. Переходим к месту вызова нажав "OK"

Нас перекидывает на смещение 10074FC7 где мы видим такую картину

Код идёт как всегда сверху в низ и это значит что всё что сверху это параметры для функции sub_100678F0, значит эта функция отправляет сообщение о скриншоте в чат, посмотрим её в псевдокоде C нажав на F5

Тут видим что эта функция вызывается с параметрами ArgList, Текст формата сообщения, и значение для формата, в нашём случае значение формата это номер скриншота, а ArgList это указатель на CChat. Назовём пока что эту функцию SendDebugMessage, и двойным нажатием на её название перейдём в её псевдокод.

Тут мы видим что функция форматирует строку которая передается вторым параметром и потом передает её в другую функцию, с другими параметрами.
Значит эта функция занимается только форматированием, и передачей параметров в другую функцию sub_10067460, переименуем её в AddMessageToChat, перейдём в неё и посмотрим её псевдокод

Тут видим сигнатуру функции

из этого уже можно создать хук, но слегка переделаем нашу сигнатуру дабы было более понятно нажав на название функции правой кнопкой мыши и нажав Y

Нас кидает сюда. Первым делом укажем возвращаемый тип данных void ( Потому что если мы перейдем по вызовам функции то увидим что функции которые её вызывают на самом деле не должны ничего возвращать. Дальше изменим int this на void* this, char* Source изменим на const char* szText, int a5 изменим на unsigned int nColor ( Потому что если полазить по вызовам функции то увидим что в функции sub_100679F0 она вызывается с параметром 0xFF000000, что скорее всего может являться цветом сообщения )
На выходе мы получаем сигнатуру

Адрес функции это смещение в samp.dll где начинается её пролог. В нашём случае это 0x67460
неплохой мини-гайд, что за версия иды?
 
Ответить с цитированием

  #8  
Старый 21.10.2024, 19:04
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

Цитата:
Сообщение от rqcePeek  

неплохой мини-гайд, что за версия иды?
9.0
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT ™ © 2001- Antichat Kft.