Пользую IDA 6.8. Столкнулся с некоторыми проблемами. Первая - это переназначение сегментов памяти. Поскольку в архитектуре HCS12 подразумевается индивидуальная разметка памяти, то после сброса в момент инициализации сегменты приобретают новые виртуальные адреса. https://cloud.mail.ru/public/qXdn/cjB1Tj7Ve Например здесь EEprom изначально занимает пространство 0х1000:0х1400, а после инициализации проецируется на область 0х3800:0х4000. Создавая секцию вручную я, естественно, не получаю в ней данных из оригинального епрома. Второй момент это указатели переходов. https://cloud.mail.ru/public/yd13/Lv6gmbnXA Я определил границы функции, но не могу указать ветвления откуда мы попадаем сюда, да и те же переходы внутри функции подсвечены красным (хотя они рассчитаны правильно). С первым вопросом я могу конечно поступить радикально, скопировав данные принудительно либо перезагрузить изначально с нужными адресами. А вот с ссылками хотелось бы разобраться особенно, потому без них потеряться можно, да и график зависимости не строится.
Это скорей всего баг. Почему бы на пиратскую иду более свежих версий не перейти? Как минимум rebase там вроде бы появился.
Альтернативно можно попробовать заюзать Cutter с декомпилятором от Ghidra, если он нужен. Но воркфлоу у него немного не такой, как у Иды, придется привыкать какое-то время.
Осталось найти в радаре эту архитектуру: Код (Text): >rasm2 -L _dAe 8 16 6502 LGPL3 6502/NES/C64/Tamagotchi/T-1000 CPU adAe 8 8051 PD 8051 Intel CPU _dA_ 32 amd29k LGPL3 AMD 29k RISC CPU (by deroad) _dA_ 16 32 arc GPL3 Argonaut RISC Core a___ 16 32 64 arm.as LGPL3 as ARM Assembler (use ARM_AS environment) (by pancake) adAe 16 32 64 arm BSD Capstone ARM disassembler _dA_ 16 32 64 arm.gnu GPL3 Acorn RISC Machine CPU _d__ 16 32 arm.winedbg LGPL2 WineDBG's ARM disassembler adAe 8 16 avr GPL AVR Atmel adAe 16 32 64 bf LGPL3 Brainfuck (by pancake, nibble) v4.0.0 _dA_ 32 chip8 LGPL3 Chip8 disassembler _dA_ 16 cr16 LGPL3 cr16 disassembly plugin _dA_ 32 cris GPL3 Axis Communications 32-bit embedded processor (by pancake) adA_ 32 64 dalvik LGPL3 AndroidVM Dalvik ad__ 16 dcpu16 PD Mojang's DCPU-16 _dA_ 32 64 ebc LGPL3 EFI Bytecode (by Fedor Sakharov) adAe 16 gb LGPL3 GameBoy(TM) (z80-like) (by condret) _dAe 16 h8300 LGPL3 H8/300 disassembly plugin _dAe 32 hexagon LGPL3 Qualcomm Hexagon (QDSP6) V6 (by xvilka) _d__ 32 hppa GPL3 HP PA-RISC _dAe i4004 LGPL3 Intel 4004 microprocessor _dA_ 8 i8080 BSD Intel 8080 CPU adA_ 32 java Apache Java bytecode _d__ 32 lanai GPL3 LANAI _d__ 8 lh5801 LGPL3 SHARP LH5801 disassembler _d__ 32 lm32 BSD disassembly plugin for Lattice Micro 32 ISA (by Felix Held) _dA_ 32 m68k BSD Capstone M68K disassembler _dA_ 8 32 m680x BSD Capstone M680X Disassembler _dA_ 32 malbolge LGPL3 Malbolge Ternary VM (by condret) _dA_ 32 mcore LGPL3 Motorola MCORE disassembler _d__ 16 mcs96 LGPL3 condrets car adAe 16 32 64 mips BSD Capstone MIPS disassembler adAe 32 64 mips.gnu GPL3 MIPS CPU _dA_ 16 msp430 LGPL3 msp430 disassembly plugin _dA_ 32 nios2 GPL3 NIOS II Embedded Processor _dA_ 32 or1k LGPL3 OpenRISC 1000 _dAe 8 pic LGPL3 PIC disassembler _dAe 32 64 ppc BSD Capstone PowerPC disassembler (by pancake) _dA_ 32 64 ppc.gnu GPL3 PowerPC _dA_ 32 propeller LGPL3 propeller disassembly plugin _dA_ 32 64 riscv GPL RISC-V _dAe 32 rsp LGPL3 Reality Signal Processor _dAe 32 sh GPL3 SuperH-4 CPU _dA_ 8 16 snes LGPL3 SuperNES CPU _dAe 32 64 sparc BSD Capstone SPARC disassembler _dA_ 32 64 sparc.gnu GPL3 Scalable Processor Architecture _d__ 16 spc700 LGPL3 spc700, snes' sound-chip _dA_ 32 sysz BSD SystemZ CPU disassembler _dA_ 32 tms320 LGPLv3 TMS320 DSP family (c54x,c55x,c55x+,c64x) _d__ 32 tms320c64x BSD Capstone TMS320c64x disassembler _d__ 32 tricore GPL3 Siemens TriCore CPU _dAe 32 v810 LGPL3 v810 disassembly plugin (by pancake) _dAe 32 v850 LGPL3 v850 disassembly plugin _dAe 8 32 vax GPL VAX adAe 32 wasm MIT WebAssembly (by cgvwzq) v0.1.0 _dA_ 32 ws LGPL3 Whitespace esotheric VM a___ 16 32 64 x86.as LGPL3 Intel X86 GNU Assembler _dAe 16 32 64 x86 BSD Capstone X86 disassembler a___ 16 32 64 x86.nasm LGPL3 X86 nasm assembler a___ 16 32 64 x86.nz LGPL3 x86 handmade assembler _dA_ 16 xap PD XAP4 RISC (CSR) _dA_ 32 xcore BSD Capstone XCore disassembler (by pancake) _dAe 32 xtensa GPL3 XTensa CPU adA_ 8 z80 GPL Zilog Z80 (by condret) И нет, это не м68. Кстати гидра как гидра, а не как довесок, поддерживает.
Если я правильно все понял, xgate это альтернативный набор инструкций/способ кодирования инструкций. Гидра его поддерживает. Надо выделить область памяти (в листинге, не разобранную, иначе получится конфликт) -> ПКМ -> Set register value -> XGATE -> 1 -> ОК. После этого разобрать.
Да, XGate это второе ядро контроллера со своими директивами, инструкциями, отсюда и имеет свои регистры и стек. Попробую Гидру, спасибо. Параллельно сейчас уже курю вопрос о написании модулей IDA. Вроде как на примере NIOS разжовано более-менее. К тому же мне это нужно не на один раз, задача отломать много фрискейлов hcs12/12x/tricore, поэтому начал со дна. Уже подумывал над своим декомпилятором, который даст мне больше возможности в дальнейшем.
Смысла под иду что-то писать я не вижу. Делай плугины под гидру, там и декомпиль и солвер и всё будет. У иды катастрофически мало возможностей для анализа кода, особенно если речь не про 6 основных архитектур, для которых выпускают навесные декомпили. Когда-то кратенько описывал в чем между ними разница.
Гугли "Opera VPN", ставь галку в настройках, разрешающую VPN, включай слева от адресной строки. Ну или любым другим доступным способом, это не запрет со стороны РКН, сами АНБшники русские айпи адреса не любят.