我有一些二进制文件,每个文件都包含一个函数的指令,(最后可能更多)。文件的开始也是函数的起点。
该文件是从ELF file.The平台arm64中提取的。
那么,如何使用angr加载和分析这个文件呢?
目标:
每个函数都有一个"switch语句“,目标是获取所有的case表达式的中间部分。
示例(C代码):
void func1(int cmd){
switch (cmd) {
case 1:
xxxx
break;
case 10:
yyyy;
break;
}
}结果:1 10
发布于 2017-07-31 09:11:58
我的建议是不要在本例中使用angr,因为您可以更容易地提取所有案例,例如使用r2pipe。我已经为你们创造了一个简单的例子,我希望这会有所帮助。
C码
int main(int argc, char* argv[]) {
switch(argc) {
case 1:
break;
case 2:
break;
default:
break;
}
}python脚本
import r2pipe
r2 = r2pipe.open("switch")
r2.cmd("aa")
r2.cmdj('s main')
instructions = r2.cmdj('pdfj')
for instruction in instructions['ops']:
if ( instruction["type"] == "cmp" ):
print instruction["ptr"]输出:
r2pipe.cmdj.Error: No JSON object could be decoded
1
2我不确定在输出开始时有什么错误消息。
HTH
https://stackoverflow.com/questions/42200236
复制相似问题