Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
keyescgm
jadx
提交
8d5554f1
J
jadx
项目概览
keyescgm
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
8d5554f1
编写于
2月 08, 2022
作者:
J
Jan S
提交者:
GitHub
2月 08, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(gui): frida context menu entry does nothing (#1365)(PR #1372)
上级
873aabb4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
14 deletion
+22
-14
jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java
jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java
+22
-14
未找到文件。
jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java
浏览文件 @
8d5554f1
...
...
@@ -22,6 +22,7 @@ import jadx.core.dex.info.MethodInfo;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
jadx.gui.treemodel.JClass
;
import
jadx.gui.treemodel.JField
;
import
jadx.gui.treemodel.JMethod
;
...
...
@@ -45,16 +46,24 @@ public final class FridaAction extends JNodeMenuAction<JNode> {
public
void
actionPerformed
(
ActionEvent
e
)
{
node
=
getNodeByOffset
(
codeArea
.
getWordStart
(
codeArea
.
getCaretPosition
()));
String
fridaSnippet
=
generateFridaSnippet
();
Clipboard
clipboard
=
Toolkit
.
getDefaultToolkit
().
getSystemClipboard
();
StringSelection
selection
=
new
StringSelection
(
fridaSnippet
);
clipboard
.
setContents
(
selection
,
selection
);
copyFridaSnippet
();
}
});
}
private
void
copyFridaSnippet
()
{
try
{
String
fridaSnippet
=
generateFridaSnippet
();
Clipboard
clipboard
=
Toolkit
.
getDefaultToolkit
().
getSystemClipboard
();
StringSelection
selection
=
new
StringSelection
(
fridaSnippet
);
clipboard
.
setContents
(
selection
,
selection
);
}
catch
(
Exception
e
)
{
LOG
.
error
(
"Failed to generate Frida code snippet"
,
e
);
JOptionPane
.
showMessageDialog
(
codeArea
.
getMainWindow
(),
e
.
getLocalizedMessage
(),
NLS
.
str
(
"error_dialog.title"
),
JOptionPane
.
ERROR_MESSAGE
);
}
}
private
String
generateFridaSnippet
()
{
if
(
node
instanceof
JMethod
)
{
LOG
.
debug
(
"node is jmethod"
);
...
...
@@ -66,9 +75,7 @@ public final class FridaAction extends JNodeMenuAction<JNode> {
LOG
.
debug
(
"node is jfield"
);
return
generateFieldSnippet
((
JField
)
node
);
}
LOG
.
debug
(
"cannot generate frida snippet from node"
);
return
""
;
throw
new
JadxRuntimeException
(
"Unsupported node type: "
+
node
.
getClass
());
}
private
String
generateMethodSnippet
(
JMethod
jMth
)
{
...
...
@@ -98,7 +105,8 @@ public final class FridaAction extends JNodeMenuAction<JNode> {
.
collect
(
Collectors
.
joining
(
", "
));
String
functionParameterAndBody
=
String
.
format
(
"%s = function(%s){\n\tconsole.log('%s is called');\n\tlet ret = this.%s(%s);\n\tconsole.log('%s ret value is ' + ret);\n\treturn ret;\n}"
,
"%s = function(%s){\n\tconsole.log('%s is called');\n\tlet ret = this.%s(%s);\n"
+
"\tconsole.log('%s ret value is ' + ret);\n\treturn ret;\n};"
,
functionUntilImplementation
,
functionParametersString
,
methodName
,
methodName
,
functionParametersString
,
methodName
);
String
finalFridaCode
;
...
...
@@ -108,7 +116,7 @@ public final class FridaAction extends JNodeMenuAction<JNode> {
}
else
{
finalFridaCode
=
functionParameterAndBody
;
}
LOG
.
debug
(
"
frida code : "
+
finalFridaCode
);
LOG
.
debug
(
"
Frida code : {}"
,
finalFridaCode
);
return
finalFridaCode
;
}
...
...
@@ -117,7 +125,7 @@ public final class FridaAction extends JNodeMenuAction<JNode> {
String
rawClassName
=
javaClass
.
getRawName
();
String
shortClassName
=
javaClass
.
getName
();
String
finalFridaCode
=
String
.
format
(
"let %s = Java.use(\"%s\");"
,
shortClassName
,
rawClassName
);
LOG
.
debug
(
"
frida code : "
+
finalFridaCode
);
LOG
.
debug
(
"
Frida code : {}"
,
finalFridaCode
);
isInitial
.
put
(
rawClassName
,
false
);
return
finalFridaCode
;
}
...
...
@@ -138,7 +146,7 @@ public final class FridaAction extends JNodeMenuAction<JNode> {
JClass
jc
=
jf
.
getRootClass
();
String
classSnippet
=
generateClassSnippet
(
jc
);
String
finalFridaCode
=
String
.
format
(
"%s\n%s = %s.%s.value;"
,
classSnippet
,
fieldName
,
jc
.
getName
(),
rawFieldName
);
LOG
.
debug
(
"
frida code : "
+
finalFridaCode
);
LOG
.
debug
(
"
Frida code : {}"
,
finalFridaCode
);
return
finalFridaCode
;
}
...
...
@@ -168,7 +176,7 @@ public final class FridaAction extends JNodeMenuAction<JNode> {
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
node
=
codeArea
.
getNodeUnderCaret
();
generate
FridaSnippet
();
copy
FridaSnippet
();
}
@Nullable
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录