Автор Тема: мод Gens бряки на запись в память  (Прочитано 6967 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ЯковлевВиктор

  • Пользователь
  • Сообщений: 64
    • Просмотр профиля
мод Gens бряки на запись в память
« : 03 Апрель 2008, 07:55:27 »
Вообщем сделал мод на базе Генса - теперь можно ставить бряки на запись в память! Брать отсюда там же руководство:
http://slil.ru/25647975

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #1 : 03 Апрель 2008, 15:00:52 »
Неплохо бы вообще доработать его до состояния полноценного дебаггера...

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #2 : 03 Апрель 2008, 16:01:22 »
Чем ты его компилишь? У меня вылезает или ошибка с фразой "Assembling sz80.asm" или ещё какая-нибудь :( Пробовал разными Visual Studio разные генсы.

upd: Правильнее спросить, как компилил и какой именно исходник? Смотрю, в эбауте 2.11 написано.
Последний генс 2.14 с оф. сайта скомпилить удалось, это несложно... просто я в первый раз оторвал папку win32 от других и получилось расхождение путей...
Gens+ не получилось, но щас наткнулся на старую тему про Gens Surreal, там ты писал, что и у тебя не получается из-за недокомплекта. Ладно, Gens+ оставим.
А вот с Gens 2.10 от Никодима, что на Шедевре лежит, у которого проект ещё для 6-й версии VS, проблемы: компилирую xxxx68k, а когда пытаюсь сбилдить gens.dsw, вылезает эта ошибка с "Assembling z80.asm". Оказывается, Visual Studio не видит nasm (может, его как-то прикрутить надо?). Самим nasm'ом можно скомпилить .asm-ы в .obj (nasmw -f win32 xxx.asm), но полученные .obj Visual Studio тоже не видит и пытается скомпилить по-своему :(

upd2: nasm прикрутил, правда, файлы .inc находились в той же папке проекта, что и .asm, и он их обрабатывал как .asm. С этим разобрался, но полезли ошибки линковщика. Даю нужные файлы, вылезают новые ошибки. Что за?..  >:(
« Последнее редактирование: 03 Апрель 2008, 19:51:34 от GManiac »

Оффлайн ЯковлевВиктор

  • Пользователь
  • Сообщений: 64
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #3 : 04 Апрель 2008, 05:41:14 »
Компилю Visual Studio 2003, исходники взял с zophar, 2.11!все правильно, что ошибка вылазиет! Я тоже сначало мучался,но потом разобрался! Последовательность такая: Я взял исходники генса, взял все файлы obj относящиеся к асемблерным из исходников Gens32(например z80.asm значит нужен z80.obj)Можешь конечно и сам скомпилить Nasm-ом! выбрал Realese! Debug можешь даже не выбирать, компилятору не хватает какой то фени для сега сд!Нажимаем кнопку run и ждем компиляции и сразу ошибка на  Assembling z80.asm! Теперь лезем в исходники в создавшуюся папку Realese кидаем все объектные файлы готовые или созданные насмом и снова жмешь run!Вот и все все стало компилиться!Ни в коем случае не нажимай Rebuild или Build - иначе все объектные файлы потрет и ошибка вылезит вновь!

Кстате  GManiac дай ссылку на исходники Gens 2.10 от Никодима, а то там только нашел релиз, а исходники не нашел!

Чтоб полноценный дебаггер сделать нужно в в исходниках ассемблера копаться, а это уже другой уровень!Хорошо, что хоть это получилось! Для взлома пока и этого хватит!
« Последнее редактирование: 04 Апрель 2008, 05:46:27 от ЯковлевВиктор »

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #4 : 04 Апрель 2008, 05:44:10 »
1. И главное. Если у автора компилится, то пусть будет ласка и даст бинарник. Ничего в этом зазорного нет и тем, кто не хочет влезать в дебри С++ а просто хочет юзать программу.
2. Запись на адрес - это круто, но не менее нуэная опция и на чтение из адреса. Т.е. в сумме - просто обращение по адресу (но разделение по чтение/запись - это буде ваще финиш!).

Оффлайн ЯковлевВиктор

  • Пользователь
  • Сообщений: 64
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #5 : 04 Апрель 2008, 06:00:50 »
1. так я ж вроде ссылку дал где все это добро лежит?
2. Чтение самое проблематичное как его сделать ума пока не приложу! Единственное, что на ум приходит смотреть по ходу работы весь код, а это вообще финишь - ибо надо не только смотреть все коды команд чтения по адресу, но и смотреть, что в регистрах, т.к. бывает, что адрес как сумма числа в регистре+ константа = адресу откуда читать! С записью все просто- сечешь изменения в озу и все!

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #6 : 04 Апрель 2008, 07:38:44 »
2. Чтение самое проблематичное как его сделать ума пока не приложу! Единственное, что на ум приходит смотреть по ходу работы весь код, а это вообще финишь - ибо надо не только смотреть все коды команд чтения по адресу, но и смотреть, что в регистрах, т.к. бывает, что адрес как сумма числа в регистре+ константа = адресу откуда читать!
А ты как думал? Только перехват функций ReadByte/ReadWord/ReadLong и WriteByte/WriteWord/WriteLong (или как они называются в исходниках Генса).
С записью все просто- сечешь изменения в озу и все!
Тьфу! Это ацтой. А если я запишу число, которое = числу в памяти? Ты не отследишь, а обращение было. Фтопку такой бряк. Лучше напрягись и сделай проверку в соответствующие функции обращения к памяти, тогда это будет труЪ бряк: ведь не важно, когда проц обратился к памяти - при чтении опкода, части операндов или непосредственно за данными - это все попадает под бряк ибо мне как раз это и нужно отследить. Но вешай это толькона М68К, ато обычно все эмулируемое оборудование использует одни и те же подпрограммы эмуляции шины, а обращение DMA нам не нужно.

Оффлайн ЯковлевВиктор

  • Пользователь
  • Сообщений: 64
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #7 : 04 Апрель 2008, 07:57:30 »
ну раз знаешь как это сделать тебе и карты в руки - вперед!

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #8 : 04 Апрель 2008, 09:19:44 »
ну раз знаешь как это сделать тебе и карты в руки - вперед!
Я Дельфятник. Так что в царство С не полезу. Если тока не буду вынужден.

Оффлайн ЯковлевВиктор

  • Пользователь
  • Сообщений: 64
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #9 : 04 Апрель 2008, 10:08:03 »
мож GManiac полезет!
Перехват этих функций можно сделать, но все это будут работать только если бушешь находится в дебаггере и рулить кнопками типа Т! А в не дебаггера пресс- там пофреймовая обработка и отловить только в асм лезть!

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #10 : 04 Апрель 2008, 12:32:19 »
Цитата
Компилю Visual Studio 2003, исходники взял с zophar, 2.11!все правильно, что ошибка вылазиет! Я тоже сначало мучался,но потом разобрался!... и до конца цитаты
Хех, а ведь это неправильно с точки зрения билдинья. Я потом допёр, что надо интегрировать nasm в VS, для этого надо на папке проекта (в самом VS) Asm Sources нажать правой кнопкой -> Settings, поставить галочку "Use Custom setinngs" и в правой вкладке прописать параметры запуска nasm и параметры для аутпута (VS требует). Тот пример, где я прочитал про интеграция, был кривоватый, я взял строку из последнего исходника Генса 2.14 (с оф. сайта), там написано в одном из dsp-файлов (для BeOS):
"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
\nasm\nasmw -i $(InputDir) $(InputDir)\$(InputName).asm -f win32 -o $(OutDir)\$(InputName).obj
Оттуда и вытащил нужные строки.
VS стал компилить асмы, но почему-то компилил .inc-файлы как отдельные файлы, хотя их надо просто включить в те асмы, которые их вызывают. Пришлось тоже повозиться. Потом стал требовать main68k.obj, я их взял из Starscream. А потом он стал гнать про ошибки внутри obj...

Цитата
Кстате  GManiac дай ссылку на исходники Gens 2.10 от Никодима, а то там только нашел релиз, а исходники не нашел!
Там в конце страницы с генсом есть ссылка:
http://shedevr.org.ru/utils/Files/Gens210-mk2-src.zip

Насчёт нормального перехвата: в Gens 2.12 Tracer есть лог по факту чтения/записи. Его вместе с исходниками можно найти на http://www.romhacking.com/ . Может, посмотришь, как они там сделали?

Цитата
мож GManiac полезет!
Ага, щаз, добавлю "Hello, World" в генс :) Я даже на Дельфи такие программы не писал, что про Си говорить.

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #11 : 04 Апрель 2008, 12:37:27 »
Функции чтения-записи сидят в асмовом ядре генса, следовательно из асма необходимо вызывать внешнюю процедуру-хук, сидящую в ГУИ части и отвечающую за обработку бряков. Для человека, знакомого с принципом линковки объектных файлов и формирования имен в вижуалстудио, не составит особого труда. Лично я в свое время не осилил. ;) Собственно, именно так и сделано в генстрейсере.
« Последнее редактирование: 04 Апрель 2008, 12:47:20 от CaH4e3 »

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #12 : 04 Апрель 2008, 15:01:45 »
Функции чтения-записи сидят в асмовом ядре генса, следовательно из асма необходимо вызывать внешнюю процедуру-хук, сидящую в ГУИ части и отвечающую за обработку бряков. Для человека, знакомого с принципом линковки объектных файлов и формирования имен в вижуалстудио, не составит особого труда. Лично я в свое время не осилил. ;) Собственно, именно так и сделано в генстрейсере.
Зачем ГУЁвый калбак? Пусть оно там и будет. Просто оно должно юзать свою БД по брякам и взводить флаг отладчика (или имитация нажатия Menu=>Debugger=>M68K). А вот управление БД да, ГУЁвое и незатейливое (достаточно как БД по GG кодам). Кто сделает это?

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #13 : 04 Апрель 2008, 16:14:05 »
Трейсер и все остальное находятся в ГУИ части. У него с асмовой частью расшарены только функции хуков и несколько переменных, которые как раз и взводятся в ядре генса и оттуда же вызываются хуки. В асме только низкоуровневые функции, перегружать его чем-то лишним нет необходимости, все остальное, включая бд по брякам, прекрасно пишется в сишной части. Тем более, фактически, на уровне кода после линковки нет никакой разницы, где изначально был хук - функции компилируются, линкуются и  вызываются одинаково.

Я попробовал собрать трейсер сам по себе, собираться он, естественно, просто так не хочет, но проблемы не в насме и не в объектах, а уже в коде... Кайлера ругается на отсутствие идентификаторов типов, хотя они прописаны макросами. ;)
« Последнее редактирование: 04 Апрель 2008, 16:19:23 от CaH4e3 »

Оффлайн ЯковлевВиктор

  • Пользователь
  • Сообщений: 64
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #14 : 08 Апрель 2008, 06:21:57 »
Скомпилил Tracer! Разобрался че нового! Теперь буду к хукам свои бряки прикручивать! Как только сделаю....выложу!

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Re: мод Gens бряки на запись в память
« Ответ #15 : 08 Апрель 2008, 07:20:06 »
Вот это уже по-нашему!