-
最近需要分析Android Java层混淆后的代码,看的欲仙欲死.
-
jadx 目前支持对单个字段或方法生成frida hook脚本.
-
在实际工作中,往往连蒙带猜的去分析,通过frida,xposed,objection等工具去验证猜测.
-
实在是有点麻了,在使用时发现只能一个方法生成脚本很不方便,而objection对类进行watch时又不能看到参数返回值,也没有扩展性,从而产生了今天这篇文章以及修改
-
最近需要分析Android Java层混淆后的代码,看的欲仙欲死.
-
jadx 目前支持对单个字段或方法生成frida hook脚本.
-
在实际工作中,往往连蒙带猜的去分析,通过frida,xposed,objection等工具去验证猜测.
-
实在是有点麻了,在使用时发现只能一个方法生成脚本很不方便,而objection对类进行watch时又不能看到参数返回值,也没有扩展性,从而产生了今天这篇文章以及修改
private String generateFridaSnippet(JNode node) {
if
(node instanceof JMethod) {
return
generateMethodSnippet((JMethod) node,false);
}
/
/
主要修改生成
class
类的hook
if
(node instanceof JClass) {
return
generateClassSnippet((JClass) node,true);
}
if
(node instanceof JField) {
return
generateFieldSnippet((JField) node,false);
}
throw new JadxRuntimeException(
"Unsupported node type: "
+
(node !
=
null ? node.getClass() :
"null"
));
}
private String generateFridaSnippet(JNode node) {
if
(node instanceof JMethod) {
return
generateMethodSnippet((JMethod) node,false);
}
/
/
主要修改生成
class
类的hook
if
(node instanceof JClass) {
return
generateClassSnippet((JClass) node,true);
}
if
(node instanceof JField) {
return
generateFieldSnippet((JField) node,false);
}
throw new JadxRuntimeException(
"Unsupported node type: "
+
(node !
=
null ? node.getClass() :
"null"
));
}
private String generateClassSnippet(JClass jc,boolean isAll) {
JavaClass javaClass
=
jc.getCls();
String classSnippet
=
generateClassSnippet(jc);
for
(JavaField field : javaClass.getFields()) {
classSnippet
+
=
"\n"
+
generateFieldSnippet(new JField(field,jc),true);
}
for
(JavaMethod method : javaClass.getMethods()) {
classSnippet
+
=
"\n"
+
generateMethodSnippet(new JMethod(method,jc),true);
}
return
classSnippet;
}
private String generateClassSnippet(JClass jc,boolean isAll) {
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2024-4-22 22:31
被iyue_t编辑
,原因: 添加patch