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


Фотография

Reverse engineering и IDA Pro


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 35

#1 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 26 July 2009 - 12:20

В моддинге (особенно при отсутствии SDK) существует много вещей (алгоритмы, форматы данных, назначение тех или иных ресурсов и т.д.) , которые нельзя получить иначе как с помощью reverse engineering-а. К сожалению, внятная информация по разбору бинарного кода в больших объемах, отсуствует, как явление. Я готов поделиться опытом и покассказывать, как правильно и эффективно пользоваться дизассемблером. Если есть вопросы - задавайте.
You think your day was surreal? Try mine.

#2 mass

mass

    Участник

  • Пользователи
  • PipPip
  • 10 сообщений

Отправлено 26 July 2009 - 12:55

А что, вообще, хочется сделать? (И что именно не удобно редактировать?)

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

#3 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 26 July 2009 - 13:14

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


Изготовление тренера (в большинстве случаев) делается скриптовыми средствами.
Для этого практически не требуется копаться в коде, если только не требуется слишком глубоко залезать в структуру объектов.

Вообще, исходя из уровня вопроса и того, что требуется - я бы сказал, что если требуется выйти за рамки скриптовых возможностей - задача нерешаема за разумное время.

Для серьезной модификации структур в памяти, во-первых нужны эти структуры, во-вторых - адреса, по которым их можно найти.

Подо что хоть тренер? (IV/SA/VC/III/что-то еще?)
You think your day was surreal? Try mine.

#4 mass

mass

    Участник

  • Пользователи
  • PipPip
  • 10 сообщений

Отправлено 26 July 2009 - 13:48

четвёрка 1030 патч

#5 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 26 July 2009 - 15:25

Если у кого-то возникнет желание покопаться в ехе-файлах при помощи IDA Pro (а по личному опыту знаю, что освоить это можно с нуля за несколько недель), то рекомендую почитать некоторые темы на форуме SB
http://sannybuilder....topic.php?id=41
http://sannybuilder....topic.php?id=32
http://sannybuilder....opic.php?id=433
и другие темы из раздела Справочная информация

На public.sannybuilder.com можно найти готовые базы для SA и IV под IDA 5, в которых уже расписано множество адресов и структур.
Информацию по адресам памяти и структурам кроме того можно найти в нашей энциклопедии, на gtamodding.com и gtaforums.com

#6 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 26 July 2009 - 15:40

Там еще есть база от GTA III (на которую нет ссылок)
http://public.sannyb...db_20080610.rar

А вообще, хотелось бы, чтобы в этой теме было не дублирование раздела "Справочная информация", а набор howto по пользованию IDA и подобными инструментами (с большими философскими прогонами про философию reverse engineering), с минимумом конкретных адресов и структур.
You think your day was surreal? Try mine.

#7 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 26 July 2009 - 15:49

Я только за ^_^

Совет начинающим: IDA может подписывать краткие комментарии к каждой команде ассемблера (на английском). На первых порах очень помогает. Выглядит это так:

.text:00495D03 sub esp, 0Ch ; Integer Subtraction


По комментарию можно судить, что команда sub отнимает из целого числа другое целое число.

Включить комментарии можно в меню Options->General->Disassembly->Auto comments

#8 Alien

Alien

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений

Отправлено 20 August 2009 - 16:14

А можно вопрос по idc? Как-нибудь можно свернуть все функции, как при нажатии "Num -", шоб красяво было :ph34r: ? Может как-нибудь через SetFunctionAttr? Мне просто лень читать описания всех этих функций. И еще. Почему-то IDA не понимает, что набор байтов CCh между сабрутинами - это align 10h. Так и оставляет db 0CCh. Как с этим бороться?

#9 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 20 August 2009 - 16:34

Свернуть - View->Hide all кнопка 'L' - создать align. (Если ломает тыкать Alt-U, L, Enter - можно написать макрос)
You think your day was surreal? Try mine.

#10 Alien

Alien

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений

Отправлено 20 August 2009 - 16:42

View->Hide all

o_O спасибоА я-то думал. :lol:

кнопка 'L' - создать align. (Если ломает тыкать Alt-U, L, Enter - можно написать макрос)

А? что? как макрос написать?

#11 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 20 August 2009 - 17:14

Либо как отдельный .idc, либо через Shift-F2.
Если все функции обозначены, то все просто:
(создать align между функций под курсором и следующей)
auto next;
auto end;
end = GetFunctionAttr (ScreenEA(), FUNCATTR_END);
next = NextFunction (ScreenEA());
MakeAlign (end, next-end, 0);

Если обозначены не все функции, нужно проверять что там за байты (через Byte(ea) ) и считать их количество. Как пройтись по всем функциям в диапазоне - можно посмотреть у меня в fwalk.idc или recolor.idc
You think your day was surreal? Try mine.

#12 Alien

Alien

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений

Отправлено 20 August 2009 - 17:47

да, я тоже с запозданием допер до этой MakeAlign. Взял recolor.idc и немного переделал. Вроде работает...
#include <idc.idc>

static main (void) {
	auto fend, next;

	fend = GetFunctionAttr (0x401000, FUNCATTR_END);

	while (fend >= 0) {
	next = NextFunction (fend);
	if (Byte(fend) == 0xCC)
		MakeAlign(fend, next - fend,0);
		next = NextFunction (fend);
	fend = GetFunctionAttr (next, FUNCATTR_END);
	}
}


#13 San'OG

San'OG

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Город:Беларусь

Отправлено 29 December 2009 - 14:16

А как с помощью IDA отладить программу? Я пытался отладить GTAIV.exe, но IDA пишет Rebasing ... и зависает

#14 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 29 December 2009 - 17:53

Она не зависает. Она очень надолго задумывается (минут на пятнадцать на C2D 2.6GHz) Чтобы этого не происходило - нужно выставить флаг RELOCATAIONS_STRIPPED (поставить 0x2F вместо 0x22 по смещению 0x14E), но это будет работать только с xliveless
You think your day was surreal? Try mine.

#15 San'OG

San'OG

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Город:Беларусь

Отправлено 30 December 2009 - 10:28

А где этот флаг - RELOCATAIONS_STRIPPED ? :rolleyes: И ещё, IDA может автоматически находить стандартные функции CRT, MFC и т. п. и давать им адекватные имена? Если да, то как мне это сделать?

#16 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 30 December 2009 - 19:50

В заголовке exe (рекомендуемое чтиво - Microsoft Portable Executable Format Specification, pedoc8.doc, находится без особого труда в недрах MSDN). Применительно к GTAIV.exe - два дайта по смещению 0x14E. Чтобы искать стандартные функции автоматически, нужно подгрузить файл сигнатур MSVC. (Находится достаточно мало, во-первых они занимают ~100К из девяти мегабайтов кода, во-вторых, последнее время, используется link-time code generation, которая делает традиционный сигнатурный анализ малопригодным).
You think your day was surreal? Try mine.

#17 Sweet

Sweet

    Активный участник

  • Пользователи
  • PipPipPip
  • 418 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород


Отправлено 17 February 2011 - 17:03

1 вопрос.
Допустим, есть структура, с количеством элементов равным 65 (количество иконок, включая empty1 и empty2).
Как можно увеличить размер этой структуры и добавить туда ещё n элементов? Желательно из дельфи :)
2 вопрос.
Опять же, допустим есть в пример строка
.rdata:0086694C	 aRadar_centre   db 'radar_centre',0	; String 'radar_centre'
Можно сразу после неё, добавить что-то своё по такому же шаблону?
Типа,
.rdata:0086694D	 aRadar_something db 'radar_something',0
Буду весьма благодарен за подробное объяснение.

#18 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 18 February 2011 - 17:12

Похожий вопрос поднимался здесь: http://sannybuilder....opic.php?id=634
Начать стоит с внимательного прочтения. Если останутся вопросы - расскажу, еще раз, как это делается.
You think your day was surreal? Try mine.

#19 Sweet

Sweet

    Активный участник

  • Пользователи
  • PipPipPip
  • 418 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород


Отправлено 18 February 2011 - 18:06

Из прочитанного там я понял что нужно создавать свою ASI (можно-ли обойтись DLLкой ибо я плохого начитался про эти ASI'шки). А так, перечитаю ещё раз всё это завтра ибо после тренировки руки ничего не печатают и мало чего позволяют сделать :)

#20 Sweet

Sweet

    Активный участник

  • Пользователи
  • PipPipPip
  • 418 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород


Отправлено 19 February 2011 - 13:26

Мда, лучше ещё раз объяснить. Немного трудновато написано, мало информации к отдельным простым шагам. Типа где этот код расположить и ссылки на туториалы по созданию своих ASIшек.




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

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