是否可以将AVR汇编代码转换为C语言编写的原始代码?如果是,要使用的软件名称是什么?
ghg1uchk1#
这个任务是人工智能完成的,这基本上就是逆向工程的要点:给定一些反汇编代码,理解它的作用,并可能用高级编程语言来表示它。有tools that attempt to automate this process,但一般来说这并不容易,有时甚至是不可能的。所以你最好的办法是阅读汇编,理解它的作用,然后手工编写等效的C代码。如果你不是一个有经验的逆向工程师,这并不容易。
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; }
2条答案
按热度按时间ghg1uchk1#
这个任务是人工智能完成的,这基本上就是逆向工程的要点:给定一些反汇编代码,理解它的作用,并可能用高级编程语言来表示它。有tools that attempt to automate this process,但一般来说这并不容易,有时甚至是不可能的。
所以你最好的办法是阅读汇编,理解它的作用,然后手工编写等效的C代码。如果你不是一个有经验的逆向工程师,这并不容易。
0mkxixxg2#
将AVR十六进制二进制代码反编译成C的一个可行方法是Ghidra。
此代码:
将被反编译为以下代码: