Питання про рервес-інженерінг AVR
Добрий час.
Маю прошивку для ATmega328P в Intel hex форматі. Хочу відреверсити деякі моменти, щоб розібратися як працює код.
З реверсінгом ніби проблем немає, IDA продюсить ассемблерний код а Ghidra навіть вміє декомпілювати в С-код. І це все прямо з hex файлу.
Але читати, робити нотатки, величезного шматка коду, не зовсім практично, бо всеодно приходиш до того що потрібен дебагер.
І ось тут цікаво, так як код для Arduino, а JTAG-а для Arduino, не існує (наскільки мені відомо), то потрібен якийсь сімулятор.
Я зробив невеликий пошук на цю тему і знайшов: Microchip Studio, та avr8js.
Перша штука ніби прикольна але не хоче приймати декомпільованій asm у тому форматі який продюсить IDA або Ghidra.
З другою поки зовсім не зрозуміло як туді підключити дебагер і як взагалі її використовувати.
Буду вдячний за підказки по цій темі.
Дякую.
6 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівШановні, хто візьметься декомпілювати гру uk.wikipedia.org/wiki/King’s_Bounty_2 ??
спробуйте IDA Pro, там паскаль, якщо нема обфускації воно витягує непогано
Я отримав дебагер.
Залишу це повідомлення тут, бо може і самому знадобитись.
Що потрібно зробити: Microchip Studio.
Tools->Device Programming. Вибираємо: Tool: Simulator, Device: ATmega328P. Apply.
Production File: Save ELF production file: Flash: Вибираемо hex файл.
Ставимо чекбокс на Flash. Потім клікаєм на Save. Та зберігаємо elf файл. Close.
Далі File->Open->Open Object File for Debugging. Зберігаємо проект.
Debug -> Start Debugging and Break. Знадобиться ще раз вибрати Simulator та тип мікроконтроллеру.
Вже можна дебажити ASM. Поки що так.
Що ще хотілось отримати це якийсь output який емулює serial port. Щоб мати можливість читати що туди видала программа та писати туди. Поки шукаю як.
Arduino це назва плати. Спробуйте визначити що там за камінь розпаяний і глянути його розпіновку в даташиті. Можливо там ви побачите debug wire(сторінка 221). Те що вони там вбудовують якийсь бутлодер на заводі не значить, що це єдиний спосіб прошивки.
Ну і гідра робить гарний читабельний псевдокод, а якщо там залишили дебаг символи то взагалі майже 100% співпадіння з сорцами, як мінімум на армах.
насколько помню, у IAR были неплохие эмуляторы в их IDE
но раньше это было крайне недешевое удовольствие, все поголовно пользовались пиратками )
В ATmega328P є debugWIRE, це щось типу JTAG для дебагу. en.wikipedia.org/wiki/DebugWIRE
Якщо хочеться симулятор, то раніше був дуже популярний Proteus. Він підтримує різні ATmega. www.labcenter.com/microprocessors