首页
社区
课程
招聘
[原创]Radare2逆向Android so文件
发表于: 2020-12-6 13:27 5239

[原创]Radare2逆向Android so文件

2020-12-6 13:27
5239

使用Radare2静态分析apk(2)末尾通过Radare2分析出一段ARM64汇编代码,这篇文通过分析这段汇编代码来来了解下ARM64汇编。



ARM处理器用到的指令集分为 ARM 和 THUMB 两种。ARM指令长度固定为32bit,THUMB指令长度固定为16bit。上面代码的所有指令都是32位的,所以都是ARM指令。



通过上面的分析,可知最终的返回值是通过调用函数fcn.0000ec80。这个函数其中的一个参数是字符串处理函数fcn.0000f1d4的返回值。另一个参数是x8的值,通过分析可知x8寄存器正是函数Java_com_example_myapplication_MainActivity_stringFromJNI的第一个参数,类型是JNIEnv。由此推断fcn.0000ec80很可能是JNIEnv相关函数。



跳转到0x34d30,通过pd命令查看相应的内容。很显然这个函数就是NewStringUTF。这涉及到got表和plt表,在深入理解GOT覆写技术 中对GOT表进行了介绍。在后续文章中还会重点讲解android got表。在这里插入图片描述使用pdg命令decompiler一下更加直观。在这里插入图片描述



最终定位到basic_string<decltype(nullptr)>(char const*)。在这里插入图片描述**查看basic_string函数信息,可知有2个参数,其中x0也就是参数1是x8寄存器的值,x1指向字符串"Hello from C++"**。这个函数的功能相当于string.c_str()。c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同。





通过分析大概推测是混淆函数,没什么实际的作用,从上面的代码中可以能看出x0的值也就是返回值没有发生任何的改变



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-12-6 13:28 被无情剑客_bur编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 240
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
受教了,之前一直都是arm32的汇编,现在也应该向64位过渡了
2021-1-24 13:18
0
游客
登录 | 注册 方可回帖
返回
//