[原创]Radare2逆向Android so文件
发表于:
2020-12-6 13:27
5239
[原创]Radare2逆向Android so文件
在使用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编辑
,原因: