AndroidNDK逆向
本文最后更新于:2020年3月10日 上午
原生C程序逆向分析
.plt段主要是用于函数重定位的。
.text段就是程序代码段。
- 反汇编。
objdump -S filename
本以为这节不用记录,感觉都能看懂,汇编看多了就会了,但是竟然发现了惊天大秘密。看下边:
一直以为PC是指下一条指令,但是在这里ADDLS这条指令,我发现怎么都不可能按照正常逻辑执行,我郁闷了1个小时,终于找到了源头。
[https://blog.csdn.net/lee244868149/article/details/49488575]
PC需要取指、译码、执行三步,每次取指完就指向下一条指令即PC+4。然后取指完后又指向下一条指令,即PC+8。
所以第一条指令执行的时候,PC=PC+8.
除法
编译优化
gcc -O 可以进行优化。5个等级0,1,2,3,s
C++逆向分析
C++是神,分析不来。。。awsl
JNI API逆向分析
JNINativeInterface:
JNI本地接口,一个接口函数指针表,有JNI接口的函数指针。
JNIInvokeInterface:
JNI调用接口,有3个保留项,5个函数指针。
JNIEnv结构体的第一个字段就是JNINativeInterface,IDA分析时不会识别API,将函数的第一个参数类型改为JNIEnv类型就可以识别了,或者导入JNIEnv结构体。
对照着结构体看,可以知道IDA中相对寄存器的偏移处就是API函数。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!