java逆向总结

毕竟是第一次进行逆向,过程中有许多乱七八糟的,也走了很多弯路,不过说到底还是学习了一些东西的;

比如逆向的时候要搞清楚函数的返回值啊,调用链啊,这地方可能就需要AspectJ了,然后获取到返回值之后,还要对代码进行具体的分析,方法返回什么值?,这地方可能就要顺着作者的思路了。

还有就是修改字节码的时候,有些能比较清晰地看到类方法的基本上可以用javasisst直接插入方法体就行了,但是如果没办法反编译的话只能用ASM把字节码修改了;也可以javassist组合起来用,比如用javassist给类加个打印异常日志的方法write,然后利用ASM在捕获到异常的时候把异常用write(Exception)打印到文件里,这样就可以更好分析插件了。

ZKM混淆之后的字节码基本上都是a,b,c,d啥的,所有的字符串也变成了

1
2
3
4
//加密方法
a(int,int);
//或者字符串数组
static final String[] a;

看得脑仁疼;

反编译也用了cfr,jad,jbytemod之类的工具;

但对于没办法反编译到java代码的只能硬生生地看字节码了;

刚好也更熟悉了字节码的一些指令,之前就只大概知道字节码怎么看,像异常表之类的就不熟很熟悉,还有本地变量表也是;

总的来说还是对自己有些提高的把,虽然也花了一些时间。但至少明白了字节码,切面代理之类的东西。