xor2003 / masm2c

x86 assembler (MASM syntax) to C translator
Other
82 stars 16 forks source link

command "lahf" not supported #5

Closed Skin36 closed 3 years ago

Skin36 commented 3 years ago

command "lahf" not supported

-32 bit DOS -Protected -IDA

изображение

xor2003 commented 3 years ago

I fixed it. For 32 bit it make sense to use IDA Decompiler instead

xor2003 commented 3 years ago

Not sure 32 bit protected target still works for masm2c. Will need to found time to test

LowLevelMahn commented 3 years ago

i think he needs to strip off to extender stuff somewhat - switching to protected mode isn't implemented in your adapation layer, or?

xor2003 commented 3 years ago

I think dos protected mode target was working with DJGPP previously. It is using extender. (I think he reversing X-COM APOC game) Most of software using extenders for DOS 32 protected.

Skin36 commented 3 years ago

command sahf not supoport too

LowLevelMahn commented 3 years ago

I fixed it. For 32 bit it make sense to use IDA Decompiler instead

or reverse it like the Syndicate Port was done - because it is already 32 bit

https://gynvael.coldwind.pl/?id=279 http://swars.vexillium.org/

xor2003 commented 3 years ago

Did you tryied latest masm2c? LAHF, SAHF works for me.

Skin36 commented 3 years ago

ah sorry need to update

Skin36 commented 3 years ago

wtat about FPU support ?

xor2003 commented 3 years ago

I see it to complex for now for me. I found some 387 instructions emulator in the old linux kernel. It can be used as a start. So not very soon

xor2003 commented 3 years ago

Any way you can translate part without FPU.

Skin36 commented 3 years ago

Почему нельзя просто добавить команды FPU, как и остальные команды ?

xor2003 commented 3 years ago

Остальные команды эмулируются с помощью C. Посмотри asm.h

  1. Эмуляцию задолбишься реализовывать.
  2. Мне надо разобраться вообще как FPU инструкции работают. Там 387 как-то стек использует. Сейчас наверно можно вместо реальной реализации сделать asm вставки.
  3. Может где есть готовая? Наверно можно выдрать из DOSBOX fpu_instructions.h

32 protected - зачем вообще тебе моя программа? там сегментация не используется. IDA декомпилятор генерит чистые C функции. Для 32бит нет проблемы такой сильной проблемы соотнести константу в дизассемблере и переменную, как для 16 бит где сегментация. Кроме IDA есть еще куча декомпиляторов в С типа retdec, snowman. Вроде мне IDA больше понравился.

Мои проекты по реверсингу почти все 16битные.

Skin36 commented 3 years ago

asm вставки, да самое то. А что толку с Декомпилятора иды ? Все что мог я уже получил. А мне нужен динамический анализ. Если функция большая , да еще с FPU командами(логарифмы и прочее) то как она работает разобраться нельзя. Только запустить ее, откомпилировав. Пока на небольших функциях я делю на Фасме. Но хотелось бы что то универсальное.

xor2003 commented 3 years ago

В dosbox debuger есть LOGCPU там можно поглядеть что происходит в регистрах и памяти

Skin36 commented 3 years ago

как думаешь можно сделать скрипт чтобы именно в Си инструкции переводить ? Насколько это сложно ? Вот я смотрю , компилятор использует одни и те же алгоритмы, и даже без декомпиляции можно понять что происходит. Хотя бы для конкретного компилятора.

xor2003 commented 3 years ago

https://www.hex-rays.com/products/decompiler/compare/compare_vs_disassembly/ https://retdec.com/ https://ai.facebook.com/blog/deep-learning-to-translate-between-programming-languages/

xor2003 commented 3 years ago

Декомпилятор от дизассемблера отличаешь?

Skin36 commented 3 years ago

да, конечно

LowLevelMahn commented 3 years ago

Ghidra (https://ghidra-sre.org/) is free and also supports Decompilation (even 16bit) - nowhere near as good as the IDA Hex-Rays Decompiler but still helpfull

Skin36 commented 3 years ago

rdtsc command not supported