smali
感觉和学x86汇编差不多。。。都是看while for switch…
而且switch也有跳转表
有些特别的
packed-switch vaa,+BBBBBBBB
+BBBBBBBB是packed-switch-payload格式的偏移量
struct packed-switch-payload{
ushort ident; //固定为0x100
ushort size;//case的数目
int first_key;//初始case的值
int[] targets;//每个case相对switch指令处的偏移量
}
sparse-switch vaa,+BBBBBBBB
+BBBBBBBB是sparse-switch-payload的偏移量
struct sparse-switch-payload{
ushort ident;//固定为0x200
ushort size; //case的数目
int[] keys;//每个case的值,顺序从低到高
int[] targets;//每个case相对switch指令处的偏移量
};
try-catch好麻烦啊。。。
阅读java代码
将dex-文件>jar包: dex2jar
jar分析工具:jd-gui,jadx
代码定位技巧
1.入口分析法:
oncreate()方法
2.信息反馈法
不就是运行看字符串吗。。。
3.特征函数法:
找特殊函数
之后就是工具使用。。jeb nb ida nb
明日计划:
看完第6章