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



是否可以将AVR汇编程序代码转换为用C语言编写的原始代码?

如果是,使用的软件名称是什么

这个任务是人工智能完成的。这基本上是逆向工程的要点:给定一些反汇编代码,理解它的作用,并可能用高级编程语言表示它。有一些工具试图将这个过程自动化,但通常这并不容易,有时甚至是不可能的。

所以你最好的办法是阅读程序集,理解它是做什么的,然后手工编写等效的C代码。如果你不是一个有经验的逆向工程师,这可不容易。

将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;
}

最新更新