assembly 如何将Atmel AVR汇编代码转换为C语言代码

t2a7ltrp  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(194)

是否可以将AVR汇编代码转换为C语言编写的原始代码?
如果是,要使用的软件名称是什么?

ghg1uchk

ghg1uchk1#

这个任务是人工智能完成的,这基本上就是逆向工程的要点:给定一些反汇编代码,理解它的作用,并可能用高级编程语言来表示它。有tools that attempt to automate this process,但一般来说这并不容易,有时甚至是不可能的。
所以你最好的办法是阅读汇编,理解它的作用,然后手工编写等效的C代码。如果你不是一个有经验的逆向工程师,这并不容易。

0mkxixxg

0mkxixxg2#

将AVR十六进制二进制代码反编译成C的一个可行方法是Ghidra
此代码:

int n=5;

int main(void) {
    if(n>=10) {
        n=15;
    }
    else {
        n=20;
    }

}

将被反编译为以下代码:

int FUN_code_004f(void)

{
  int iVar1;
  
  W = CONCAT11(DAT_mem_0101,DAT_mem_0100);
  iVar1 = W;
  W = W + -10;
  if ((bool)(W < 0 ^ SBORROW2(iVar1,10))) {
    W._0_1_ = 0x14;
  }
  else {
    W._0_1_ = 0xf;
  }
  R1 = 0;
  W = 0;
  DAT_mem_0100 = (undefined)W;
  DAT_mem_0101 = 0;
  return W;
}

相关问题