AsmEditor - v3.0.2Что может:
I. Работа с VKP: 1) Убирает у VKP-файла(патча) все ненужные данные, оставляя только заMAIN.
Пример: До
После:
2) Убирает заменянемые значения у заMAIN'a.
Пример: До:
После:
3) Убирает все, после заменяющих данных.
Пример: До:
Код:
EDF8FFBDFCB51548CCF64EFA002815D1
1348CCF649FA00280FD00F4C22780023;Я ненужная хрень
2370012A03D010219BF7C8FBFCBD02B0
После:
Код:
EDF8FFBDFCB51548CCF64EFA002815D1
1348CCF649FA00280FD00F4C22780023
2370012A03D010219BF7C8FBFCBD02B0
4) Соединяет все оставщиеся данные вместе(ну тут можно и без примеров, итак все ясно)
5) Сохраняет полученные данные сразу в RAW-файл(то есть сразу можно в IDA открывать).
6) Ещё есть небольшая функция: проверка на мисматчи. Что делает: берет длину заменяемых и заменяющих данных, если их длины не совпадают, то выдаёт ошибку.
II. Работа с ASM: 1) Удаляет все решетку.
2) Удаляет комментарии(все что за знаком ";" ).
3) Удаляет структуры, такого вида:
Код:
structSUBROUTINE struc
p_name DCD ?
p_page DCD ?
p_fn1 DCD ?
p_fn2 DCD ?
structSUBROUTINE ends
4) Расставляет где надо двоеточия.
5) Переносит текст с DCD.
Было допустим:
off_45CF53F0 DCD aTpaUserOtherZb
А после обработки останется:
_aTpaUserOtherZb DCD aTpaUserOtherZb
в ASM, конечно, off_45CF53F0 заменится на _aTpaUserOtherZb
6) И самое главное - Вынес адресов. Если вы хотите чтобы имена адресов брались из библиотеки, то можете ее загрузить с помощью клавиши "Открыть библиотеку". Программа ищёт адреса, при их нахождении смотрит, есть ли такой адрес в либе, если есть - то присваевает ему имя из библиотеки, если нету - то даёт ему имя с номером(имя указываете сами в настройках, стнадратное - addr). Если будет найден dword загрузка адреса(типа: dword_45153A90 DCD addr1(уже замененый адрес)), то во всем ASM dword_45153A90 заменяется на _addr1. Точно такая же работа происходит и с ram-адресами. Начальные цифры обычных и РАМ адресов можно изменять в настройках(там почти всё можно изменить).
7) Складывает VAR. Если в исходнике найдена строка типа этой:
Код:
LDR R1, [SP,0x28+var_18]
, то программа автомтически смотрит, есть ли вверху присваивание для var_18, если есть - берёт оттуда значение и складывает их, если нету - то берёт из var_18, цифру 18 как хекс-число и складывает его(в нашем примере с 0x28) и полученный результат записывает вместо var: Код:
LDR R1, [SP,0x068]
8) Если у вас IDA 5.2 и выше, то вполне возможно, что у вас некторые команды идут с конечным символом S, типа ADDS,MOVS,SUBS и прочее(весь их полный список есть в настройках, кстати, список идёт в два слова: первое слово - "плохая" команда(ADDS), второе - "правильная" команда(ADD), программа исправляет эти слова.
9) Unicode -> DCB. Если у вас в исходнике есть текст Unicode(Пример:
Код:
aElf unicode 0, <elf>,0
, то программа заменит его на:
Код:
aElf DCB "e",0,"l",0,"f",0,0,0 ; elf
10) Косметические изменения:
- Удаляет пустые строки.
- Если найдена строка-объвление кода( loc_451F905C например), то она вставляет до и после неё текст, который вы можете ввести в настройках(при введение текста можно использовать два слова-паттерна: #addr# - адрес ссылки(451F905C) и #loc# - префикс адреса(loc_).
- Если будет найден текст типа:
Код:
dword_45CF53B0 DCD 0xFC2
, то программа при нахождении dword_45CF53B0 будет оставлять комментарий в конце строки со значением этого dword_45CF53B0(то есть 0xFC2).
- Для push и pop удялется один пробел(для красоты)).
- Расставляется где надо align 4.
- Если надо, ставится в начало include "x.inc".
11) Компиляция. Пока что тест) Может работать, а может и нет. Нажмите кнопку "Компиляция" на статус-баре(в котором, кстати, отображается прогресс бар с выполением прогресса)) и сверху или снизу(сами выберете), выедет панелька в который вы можете выбрать прошивку(перед этим положите её в папку с программой), и ввести её стартовый адрес(он определяется сам). После нажатия кнопки "Скомпилировать" исходник будет скомпилирован и вам покажут сообщение в конец прогресса.
III. Сама программа: 1) Красивый интерфейс))
2) Настройка почти всех слов/имен/адресов для ASM/VKP/Библиотеки.
3) Можете настроить у ASM подсветку слов, а также шрифт.
4) В PopupMenu(клик правой клавишой мыши на редакторе) у ASM есть следующие пункты:
- Выделить всё.
- Скопировать.
- Вставить.
- Вырезать.
- BookMark(метки, можно оставлять их, а затем быстро к ним перемещаться, всего их 10 штук).
- Перейти к BookMark.
- Перевернуть выделеный адрес(DWORD) - до: 45CF5398. После: 9853CF45
- Поиск.
- Заменить.
- Искать вперед.
- Искать назад.
5) При нажатии в редакторе ASM комбинации клавиш Ctrl+Space появится окошко в котором вы сможете выбрать команду(они там и от thumb и от Arm - режимов) и вставить её.
3.0.2:
- Добавил сохранение настроек и редактирование выпадающего меню.
Как пользоваться: 1) Если надо обработать VKP-патч, то жмем кнопку "Открыть" в пункте "Файл", находим его и жмем кнопку "Открыть". Слева перед вами появится ToolBar, с кнопками, фун-ии которых я описал выше, если не хотите нажимать каждую кнопку, то для выполнения всего сразу нажмите "Обработать VKP".
2) Если же надо обработать ASM-исходник(полученый от IDA через комбинацию клавиш Alf+F10(!)), то делаем все тоже самое что я описал выше, только выбираем уже asm файл. Слева перед вами так же появится ToolBar, в котором вы сможете делать с исходником то, что я описал выше по отдельности, или если вам не хочется жать кнопки, то нажмите "Обработать ASM", поставьте/снимите галки напротив нужных вам опции и нажмите "Начать".
Вот ссылки на программу:
3.0.1:
http://ifolder.ru/107762853.0.2:
http://ifolder.ru/11265834Исходник:
http://ifolder.ru/11265855В архиве: сама программа(AsmEditor.exe), файлы компилятора FasmArm(можете на свои заменять) и файл test.asm для проверки возможностей редактора(вдруг под рукой исходника не окажется).
(с) d1gger17