汇编还原高级代码在逆向开发中是非常重要的一步,下面通过一小段高级代码生成的汇编代码,根据汇编还原高级代码,步骤及笔记如下:
原高级代码:
通过 ida 生成的汇编代码如下:
前三句不用看,是函数调用的:
|
|
下面两句是写东西,把后面的放到栈里面去:
|
|
这两句是分不开的,获得一个常量或者全局变量:
|
|
调用 print 函数:
|
|
两句分不开的代码:
|
|
拿出栈里面的东西到 W1:
|
|
拿出另一个东西到 W8:
|
|
W1 + W8这是一次运算:
|
|
将数据取到 W1:
|
|
后面的都是运算:
|
|
main函数的汇编代码:
下面开始还原:
已知 main 函数调用了 func 函数,通过前三句代码判断这就是一个 func 方法,从 main 方法中看出 func 方法有两个参数,X1,X0(此时此刻我们不知道参数的变量类型,从 main 函数中,X8,X9为立即数,判断,这两个变量是整型,所以可以写成 int):
|
|