Перейти к содержимому


Фотография

Инструкцию по применению SMDPointers

SMDPointers Инструкцию по применению SMD Pointers Поиск указателей Поиск поинтеров Ромхакинг SMD

  • Закрытая тема Тема закрыта
Сообщений в теме: 7

#1 admin

admin

    Администратор

  • Администраторы
  • 1 381 сообщений

Отправлено 16 Апрель 2015 - 11:48

post-1-0-34171800-1429174285.png

 

Программа для поиска пойнтеров SMDPointers

 

post-1-0-03172800-1429177490.png

В строке «Адрес в файле:» нужно ввести адрес, на который нужно найти пойнтер. (Число должно указываться в шестнадцатеричной системе.)

Например: 1419B2

 

post-1-0-26216400-1429177490.png

Выбрать нужный файл можно при помощи кнопки «Выбор файла».

 

Снизу по центру имеется прогрессбар, который будет заполняться по мере выполнения поиска.

 

post-1-0-79786800-1429177489.png

Так же имеется кнопка «Сохранить». Данная кнопка сохраняет результат поиска в текстовый файл под названием «Point». Данный текстовый файл появится там же, где хранится файл, в котором мы ищем указатели. Данный текстовый файл Point.txt будет содержать в себе все данные о пойнтерах, включая те, которые не поместятся в окне программы SMDPointers.

 

Ниже читайте о принципе работы каждой из кнопок расположенных в правой части программы. 

Прикрепленные изображения

  • save.png
  • adres.png
  • fileselect.png

  • 2

#2 admin

admin

    Администратор

  • Администраторы
  • 1 381 сообщений

Отправлено 16 Апрель 2015 - 12:45

post-1-0-69367700-1429180794.png

 

Для начала рассмотрим самый простой вариант. Это кнопка «0x6100FFFF». Если данным способом будет найден указатель, то почти со 100 процентной уверенностью можно заявить, что это именно тот пойнтер, который нам нужен.

Данный способ ищет одну из вариаций относительного 2-х байтного пойнтера.

 

Пример использования:

Для теста возьмём ром: Disney's Aladdin (U) [!].gen.

Будем искать указатель на 0x1B3064 ($1B3064 / 1B3064h)

 

После нажатия на кнопку мы получим результат:

post-1-0-25717300-1429180794.png

$ 001B2C64  (61 00 03 FE)

Где

$001B2C64 – адрес, по которому расположен наш указатель.

61 00 03 FE – пойнтер

 

Так же как и в большинстве случаев указателей может быть несколько.

Прикрепленные изображения

  • point.png
  • button1.png

  • 2

#3 admin

admin

    Администратор

  • Администраторы
  • 1 381 сообщений

Отправлено 16 Апрель 2015 - 13:50

post-1-0-60621000-1429184779.png

 

Переходим к рассмотрению второй кнопки в правом нижнем углу. Эта кнопка 0xFFFF.

Данная кнопка активирует функцию, которая ищет относительный 2-х байтный пойнтер. За точку отсчёта принимается местонахождение пойнтера.

 

 

Пример использования 1:

Для теста возьмём ром: Disney's Aladdin (U) [!].gen.

Будем искать указатель на 0x1B3064

 

После нажатия на кнопку мы получим результат:

post-1-0-87228000-1429184779.png

$ 001B2C66  (03 FE)

Где

$001B2C66 – адрес, по которому расположен наш указатель.

03 FE – пойнтер

 

Вот мы и нашли указатель из предыдущего примера, только другим способом. Ниже будет приведён более наглядный пример использования данной функции (кнопки).

 

 

Пример использования 2:

Для теста возьмём игру Heimdall для Sega CD

Нам понадобится файл из неё SUBCPU.DAT

Будем искать указатель на 0x1315E

 

Будем искать поинтер на фразу "Do you wish to sail to this island?".

 

После нажатия на кнопку мы получим результат:

post-1-0-36678100-1429184779.png

$ 00012E38  (03 26)

Где

$00012E38 – адрес, по которому расположен наш указатель.

03 26 – пойнтер

 

Если мы попробуем найти указатель на следующею фразу "The journey to this island is too far or too treacherous." (0x131A1)  тем же способом, то у нас ничего не выйдет. Для его поиска нужно использовать другую кнопку. Но об этом чуть позже.

Прикрепленные изображения

  • point2.png
  • but2.png
  • point.png

  • 2

#4 admin

admin

    Администратор

  • Администраторы
  • 1 381 сообщений

Отправлено 16 Апрель 2015 - 14:17

post-1-0-41203900-1429186610.png

 

Кнопка 0x00FFFFFF работает аналогично предыдущий. Ищет относительные 4-х байтные указатели. За точку отсчёта, как и в предыдущем случае, берётся местонахождение пойнтера.

 

К сожалению, в качестве примера мне нечего привести.

 

Дальше всё будет не так просто. 

Прикрепленные изображения

  • but2.png

  • 2

#5 admin

admin

    Администратор

  • Администраторы
  • 1 381 сообщений

Отправлено 16 Апрель 2015 - 15:51

post-1-0-68431100-1429192019.png

 

Теперь рассмотрим кнопку 0xFFFF под надписью «Относительный поиск (Вверх)».

Принцип работы данной функции заключается в том, что мы не знаем первоначальную точку отсчёта и она находится автоматически.

Тут так же появляется новая строка «Глубина просчёта вниз». Эта строка использует десятичную систему счисления. Данная переменная является своеобразным допуском. По сути это то, насколько байт (переменная*2) мы допускаем, что пойнтер будет отдалён от точки отсчёта.

 

Картинка для наглядности.

post-1-0-50567600-1429192019.png

 

Из картинки видно, что пойнтер отдалён от точки отсчёта на 24 байта. То есть, чтобы его найти, в строке «Глубина просчёта вниз» нужно указать значение, как минимум, 13 (24/2+1).

 

 

Пример использования:

Для теста возьмём игру Heimdall для Sega CD

Нам понадобится файл из неё SUBCPU.DAT

Будем искать указатель на 0x131A1

 

Будем искать пойнтер на фразу "The journey to this island is too far or too treacherous.".

 

Установим значение «Глубина просчёта вниз» равное 20. То есть мы допускаем, что указатель отдалён  от точки отсчёта примерно на 40 байт.

После нажатия на кнопку мы получим результат:

post-1-0-85046700-1429192019.png

$ 00012E38  =>  $ 00012E3A  (03 69)
$ 0000EFA8  =>  $ 0000EFBC  (41 F9)
$ 0000EF74  =>  $ 0000EF7A  (42 2D)
$ 0000EF75  =>  $ 0000EF8C  (42 2D)
$ 0000BD88  =>  $ 0000BD90  (74 19)
$ 00006134  =>  $ 00006136  (D0 6D)
$ 00006135  =>  $ 00006148  (D0 6D)
$ 0000329C  =>  $ 000032C2  (FF 05)

Где

$00012E38 – точка отсчёта

$00012E3A – адрес, по которому расположен наш указатель.

03 69 – пойнтер

 

Правильный пойнтер устанавливается экспериментальным путём. Если нужно пойнтера нет, то вполне возможно, что нужно увеличить глубину просчёта. Но вмести с ним увеличится и количество найденных указателей, которые нужно будет проверять вручную.

Прикрепленные изображения

  • princip.png
  • but4.png
  • points.png

  • 2

#6 admin

admin

    Администратор

  • Администраторы
  • 1 381 сообщений

Отправлено 16 Апрель 2015 - 16:14

post-1-0-45520700-1429193549.png

 

Кнопка 0x00FFFFFF под надписью «Относительный поиск (Вверх)». Работает примерно по тому же принципу, что и предыдущая кнопка. Только эта функция ищет относительные 4-х байтные указатели.

 

К сожалению, в качестве примера мне нечего привести.

 

Дальше будет ещё сложнее ;)

 

 

Прикрепленные изображения

  • but5.png

  • 2

#7 admin

admin

    Администратор

  • Администраторы
  • 1 381 сообщений

Отправлено 16 Апрель 2015 - 19:42

post-1-0-70061500-1429205857.png

 

Рассмотрим кнопку 0x00FFFFFF под надписью «Относительный поиск (Вниз)».

Данная функция помогает искать (отрицательные) относительные 4-х байтные пойнтеры.

В отличие от функций просчёта вверх, здесь ведётся поиск пойнтеров ниже «адреса в файле» на который мы и ищем указатель.

Здесь появляется новое значение «Глубина просчёта вверх». Это то значение, до какого мы хотим сдвигать точку отсчёта. (Число должно указываться в шестнадцатеричной системе.)

 

Рисунок для большей наглядности.

post-1-0-53190600-1429205857.png

 

Пример использования:

Для теста возьмём ром Scooby Doo Mystery (U) [!].gen

Будем искать указатель на 0x1419B2

 

Будем искать пойнтер на фразу "I made you a sandwich, but you were gone, so I ate it.".

 

Предположим что мы не знаем первоначальную точку отсчёта. Поэтому в строке «Глубина просчёта вверх» введём значение 2A

 

Установим значение «Глубина просчёта вниз» равное 20000.

 

Нам выдаст сообщение «Найдено указателей: 681». И где-то среди этих результатов нужный нам пойнтер. Не лучший пример, и не лучший способ отыскать указатели подобного типа, но, тем не менее, он работает.

…
$ 0014199E  =>  $ 00150D56  (00 00 00 14)
$ 0014199E  =>  $ 00150D64  (00 00 00 14)
$ 0014199C  =>  $ 00146A78  (00 00 00 16)
$ 0014199C  =>  $ 0014A9E6  (00 00 00 16)
$ 0014199C  =>  $ 0014B578  (00 00 00 16)
$ 0014199C  =>  $ 0014C30A  (00 00 00 16)
$ 0014199C  =>  $ 0014CC36  (00 00 00 16)
$ 0014199C  =>  $ 00150716  (00 00 00 16)
$ 0014199C  =>  $ 00150CCA  (00 00 00 16)
$ 0014199C  =>  $ 00150CD8  (00 00 00 16)
$ 0014199C  =>  $ 00150DC6  (00 00 00 16)
$ 0014199A  =>  $ 00145EC0  (00 00 00 18)
$ 0014199A  =>  $ 00148116  (00 00 00 18)
…

Где

$0014199C – точка отсчёта

$00146A78 – адрес, по которому расположен наш указатель.

00 00 00 16 – пойнтер

Прикрепленные изображения

  • kartinka.png
  • but6.png

  • 2

#8 admin

admin

    Администратор

  • Администраторы
  • 1 381 сообщений

Отправлено 16 Апрель 2015 - 19:58

post-1-0-60636700-1429206942.png

 

Кнопка 0xFFFF работает аналогично предыдущей, только она ищет  (отрицательные) относительные 2-х байтные пойнтеры.

 

К сожалению, в качестве примера мне нечего привести.

Прикрепленные изображения

  • but7.png

  • 2





Темы с аналогичным тегами SMDPointers, Инструкцию по применению, SMD Pointers, Поиск указателей, Поиск поинтеров, Ромхакинг, SMD

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Рейтинг@Mail.ru Яндекс.Метрика