Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - DrMefistO

Страницы: [1] 2 3 4 5 ... 44 Далее
1
Сорсы не хочешь выложить на Github в виде форка?) Так может какие умельцы ещё подтянутся.

2
Even if it exists, nobody will start doing that because of somebody's topic:)

3
Nice ideas, thanks! I would like to see that mod too:)

4
Да уж, я даже не предполагал, когда создавал этот топик, что здесь напишут о том, что RH - всё. Жалко, конечно, этого добряка...
Хорошо, когда есть ресурс-база данных по какой-то одной теме, по которому можно вести поиск, добавлять свою инфу, искать поделки других людей. И дело не в ромхаках, конечно, мне на них всегда было практически пофиг. А вот переводы, утилиты (самое основное), какие-нибудь доки - это да, жаль, что больше не будет централизованного ресурса, куда это можно выложить.

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

5
:( Не очень понимаю, кому это нужно. Материалов что по простым типам данных полно, что по Basic... Даже по написанию GUI...

6
@trintel, крут!:) Рад, что пригодились инструменты)

7
Крашится IDA 8,3 на условных брейкпоинтах.
Сначала брейкпоинт срабатывает нормально.
Потом делаешь сброс на эмуляторе, игра доходит до брейкпоинта и IDA крашится.
Содержимое скрипта брейкпоинта
Reg = idaapi.get_reg_val('A0')
return Reg == 0x1A4

Сообщение, которое выскакивает при крахе:


Добавлено позже:
И ещё не нашёл где находится TileDataPreview
Спасибо, чекну.
Превью по Shift+D

8
Не все в интернетах появились с его основания:) Кто-то и вчера пришёл.

9
Релизнул новую версию, с Tiles Preview: https://github.com/lab313ru/smd_ida_tools2/releases/tag/v3.0

Если что, IDA Pro v8.3 была ликнута.

10
Привет, а был стрим?
На канале ничего
привет. неа, я отменил - был занят:)

11
DrMefistO, а сложно будет добавить, чтобы тайлы собирала в картинку?
Есть тайловые редакторы. Это их задача. Предпросмотр тайлов в иде нужен лишь для того, чтобы понимать, что вот это - графика (и какая именно), а вот это - не графика.

12
Вернул предпосмотр тайлов в иде во время статического анализа рома. Теперь можно выбирать и адрес палитры пока смотришь. Билд выкачу попозже.

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

13
А есть возможность добавить пропуск срабатывания брейкпоинта по определенному адресу? Т.е. допустим я ставлю брейк на чтение по адресу 0xff0000  и у меня срабатывает брейк по адресу 0x1000. Но это место не то, которое мне необходимо и мне надо сделать так, чтобы в этом месте бряк на чтение не срабатывал. На каком тодебагере, сейчас не вспомню, можно было добавлять диапазон адресов, в которых бы ни один брейкпоинт не срабатывал бы. Возможно, fceux. Называлось что то типа "забыть".
Попробуй добавить условие на питоне в виде return False на адрес

14
Увидел, шикарно, будет немного боллерплейта, но благодаря питону можно любые условия делать  :cool:

А смотрел как можно реализовать трейс? Хотя бы трейсить вызов конкретного места, и значение операндов на чтение и запись
Так ты можешь питоном тоже сделать:
Ставишь бряк, делаешь код там, но делаешь return False и бряк не будет стопариться, но будет отрабатывать код из него

15
Реализовал условные брейкпоинты на базе того, что предлагает сама Ида! Подробнее тут: https://github.com/lab313ru/smd_ida_tools2/releases/tag/v2.9

16
DrMefistO, зачем? Могу дать в личку, но пока нахожу мелкие баги, т.е. код постоянно дорабатывается.
Алгоритм прост: проходит по рому по чётным байтам (Сега же) и собирает адреса байтов 0x67 и 0x66 в надежде, что это BEQ и BNE. Далее по этому массиву адресов проходит двоичным поиском - делит пополам, первый сектор инвертирует BEQ <---> BNE, опрашивает пользователя, инвертирует обратно, потом повторяет это со вторым, потом делит первый пополам, и так до конца.
Пункты:
1 - просто пропускает текущий сектор. Раз баги в секторе мешают понять есть ли в этом секторе нужная инструкция, то лучше оставить на будущее, чтобы раздробить этот сектор.
2 - в этом секторе нет нужной инструкции, удаляем его из массива.
3 - в этом секторе есть нужная инструкция, удаляем все остальные секторы.


Yoti, да, я делаю дизасэмблер для этого. Но так как до его работоспособности далековато, не выдержал вот и сделал примитивный вариант, исследовательский проект  :)
Дизасэмблер будет отличаться тем, что можно вручную инвертировать блоки кода, их условия, чтобы сразу увидеть эффект на экране, отматывать назад, пробовать поменять другие. Т.е. явно быстрее.
У тебя вообще не остались хоть какие-то записи или мысли по своим исследованиям? Было бы интересно и полезно.


Тем временем, попробовал открыть секретное меню в Streets of Rage. Игра весит ~500 килобайт, инструкций в ней нашлось ~4000.
И оказалось, что она очень хрупкая - игра почти всегда неработоспособная после порчи, постоянно убивает BlastEm.
За час и 20 минут пробежал 800 проходов и надоело, очень демотивирует  :lol:
Т.е. найти-то мог далее, но не хотелось делать 4000 проходов, как если бы просто пройтись подряд по всем найденным инструкциям.
Сейчас решил попробовать перемешать инструкции в массиве перед поиском. Может чего даст.
Можешь создать приватный (либо публичный) реп, попробую помогать в разработке:)

18
тем временем меня расстраивает слишком долгое время загрузки кода. сам парсинг на команды то шустрый, ноооооо потом, чтобы это все выводить в окошке - я делаю копию массива текстовых строчек кода, и форматирую, добавляя пустые строки между блоками и добавляю "бэшки" (dc.b) где код не разобран. вот этот процесс и занимает кучу времени при запуске.

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

пойду сделаю копию проекта, и попробую с листом. хотя настроен я весьма скептически на этот лист :)
Есть виртуальные листы. Выводить строчки не все целиком, а чанками, по количеству Видимых.

19
ну пока моя первоначальная цель сделать парсер, чтобы он на выходе рожал 100% совместимый код с существующим ASM68K.exe. понятно что ASM68K.exe кривой и косой и местами прозёвывает команды с ошибками, но очень удобно что он в количестве одна штука и очень маленький и простой в использовании. и можно пихать копию в каждую папку с проектом. ида так делать код не умеет. да и докучи ида еще и с ашипкаме код рожает :) я прям удивился когда увидел. святая ида и на тебе!

Нельзя автоматически сконвертировать ассемблированный код в исходный. Есть множество причин, вот некоторые:
1. Нет различий между засовыванием в регистр адреса и засовыванием в регистр числа
2. Какие-то данные могут использоваться относительно разных базовых адресов.
3. Выше уже написали: относительные прыжки и вызовы.

Добавлено позже:
Хочешь, чтобы ида тебе сразу весь ром красиво разложила - такого не бывает. Работа реверс-инженера в этом и заключается - нужно помогать интеррактивному дизассемблеру.

20
как бы написать и не обидеть... ничего не буду писать.
не пиши, не пользуйся. значит не твоё:)

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

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


Пробуй другой ассемблер - ссылки там в окошке есть

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

Добавлено позже:
и ни фи га :) все по старому.

Добавлено позже:
или я не правильный асм выбираю при выгрузке?

Как именно ругается на lea? Попробуй другой азм.
src я не правил. Я рассчитываю на сохранение листинга рядом с ромом.

23
ида 77. версия 32 битная. скачал новую версию тулсов как ты сказал, распаковал и открыл по новой ром батл сити. сам ничего не разбирал - что изначально ида разобрала - то и выгружаю. и там вот с этой lea ошибка. ну и с путями до папки src, в случае если ром лежит в одном месте, а файл lst я сохраняю в другом месте.

Добавлено позже:
и проблема с диалогом отмены при создании lst файла. отмена не работает - ида все равно ныкается создавать файл по новой. то есть в диалоге на моменте выбора вида ассемблера:
Choose output assembler
по идее кнопка отмены должна полностью отменять процесс выгрузки, но тут отмена работает по сути как подтверждение что ты типа выбрал первый вариант AS Assembler и начинает выгружать. но по идее должна была произойти глобальная отмена выгрузки.
Ида не умеет никак прерывать выгрузку листинга или asm.

Добавлено позже:
Обновил до версии 2.8. Поправил некоторый выхлоп. https://github.com/lab313ru/smd_ida_tools2/releases/tag/v2.8

24
ида разбирает код как
lea     ($FFF152).w,a0ASM68K.exe при сборке такого файла - ругается что адрес инвалидный. если вручную найти все такие строки и исправить на
lea     ($FFFFF152).w,a0то все начинает собираться без ошибок и работать.
А, всё, туплю, адрес правильный. Ты в моём плагине базу начинал, или раньше, руками?

25
и все так-же не хватает lea FF в начале. асм ругается на эти строки.
Не понял.

26
рядом с ромом src надо папку создавать. и видимо независимо от того куда путь для создания lst. на диск д сохранял сам файл lst, а эти файлы из инклуда он рядом с ромом положил :) кое кто, не будем показывать пальцем, забыл в диалоге сохранения файла указать этот-же путь для сохранение инклудных файлов.

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

27
о
Обнови плагин из последнего релиза. Я починил создание листинга для 7.7.
ASM создавать не нужно.

Папка script содержит полезные файлы для сборки конккретным азмом. Передаёшь батнику путь к lst-файлу и пойдёт сборка.

28
похоже эти строки можно закомментить.

но опять таки старая проблема вылезла:
lea     ($FFF152).w,a0не хватает FF спереди: $FFF152 => $FFFFF152

мде... а дальше все посыпалось при сборке :) видимо нельзя их комментить :) как раз видимо описание этих переменных


при экспорте надо было галкой помечать ASM68K Assembler? то есть это как раз совместимый с ASM68K.exe который потом и собирает ром? а то может я не тот пункт выбираю и поэтому дело швах...

Добавлено позже:
ахахахаха кнопка отмены не работает в диалоге создания файла :) жму отмена - а Ида все равно ныкается создавать файл :))))
У тебя какой-то адрес странный, нужно либо две F, либо четыре.
При сборке точно всё посыпется, т.к. с первого раза собрать нереально, не зная особенностей:)

Например, у тебя все ram адрес должны быть помечены как данные, т.е. никаких unk_FFFF

29
DrMefistO,

Подскажи пожалуйста, по какой причине может не работать создание ассемблерного листинга?
Есть полностью разобранный ром, выбираю File->Produce file->Create LST file, после чего действительно создается файл.
Но в нем вначале есть вложения:

Этих файлов нигде нет и папки src тоже.

Я там еще насоздавал структур и енумов, кое-где использую не полностью структуры,  а отдельные поля. Может в этом дело?

Можешь скинуть в личку idb, я проверю. Либо поищи сам ещё либо в каталоге с ромом, либо в каталоге с листингом.

Добавлено позже:
Пофиксил билд для 7.7. Просьба перекачать.

30
DrMefistO, у меня вопрос, как обратно добавить ром в проект? Изначально при открытии проекта Генс знает какой ром запускать. Но потом по какой-то причине это сломалось. И теперь надо каждый раз при открытии проекта открывать нужный ром через генс.
В smd_ida_tools2 как сам Gens, так и ром в нём нужно выбирать вручную, т.к. сейчас gens не собирается в один файл с плагином для иды.

Страницы: [1] 2 3 4 5 ... 44 Далее