Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
2c904c56
J
jadx
项目概览
Quincy379
/
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,发现更多精彩内容 >>
提交
2c904c56
编写于
4月 22, 2018
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core: reformat imports, fix some sonar issues
上级
a3b961e7
变更
116
展开全部
隐藏空白更改
内联
并排
Showing
116 changed file
with
577 addition
and
599 deletion
+577
-599
jadx-core/src/main/java/jadx/api/JavaClass.java
jadx-core/src/main/java/jadx/api/JavaClass.java
+8
-8
jadx-core/src/main/java/jadx/api/JavaMethod.java
jadx-core/src/main/java/jadx/api/JavaMethod.java
+2
-2
jadx-core/src/main/java/jadx/api/ResourceFile.java
jadx-core/src/main/java/jadx/api/ResourceFile.java
+2
-2
jadx-core/src/main/java/jadx/core/clsp/ClsSet.java
jadx-core/src/main/java/jadx/core/clsp/ClsSet.java
+8
-8
jadx-core/src/main/java/jadx/core/clsp/ClspGraph.java
jadx-core/src/main/java/jadx/core/clsp/ClspGraph.java
+4
-4
jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java
jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java
+5
-5
jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java
jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java
+5
-5
jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java
jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java
+5
-5
jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java
jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java
+0
-4
jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
+11
-11
jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
+7
-8
jadx-core/src/main/java/jadx/core/codegen/NameGen.java
jadx-core/src/main/java/jadx/core/codegen/NameGen.java
+5
-6
jadx-core/src/main/java/jadx/core/codegen/RegionGen.java
jadx-core/src/main/java/jadx/core/codegen/RegionGen.java
+6
-6
jadx-core/src/main/java/jadx/core/codegen/TypeGen.java
jadx-core/src/main/java/jadx/core/codegen/TypeGen.java
+3
-3
jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java
jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java
+4
-4
jadx-core/src/main/java/jadx/core/deobf/OverridedMethodsNode.java
...e/src/main/java/jadx/core/deobf/OverridedMethodsNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/attributes/AttrList.java
...core/src/main/java/jadx/core/dex/attributes/AttrList.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/attributes/AttrNode.java
...core/src/main/java/jadx/core/dex/attributes/AttrNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/attributes/AttributeStorage.java
.../main/java/jadx/core/dex/attributes/AttributeStorage.java
+4
-4
jadx-core/src/main/java/jadx/core/dex/attributes/EmptyAttrStorage.java
.../main/java/jadx/core/dex/attributes/EmptyAttrStorage.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/attributes/IAttributeNode.java
...rc/main/java/jadx/core/dex/attributes/IAttributeNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/attributes/annotations/Annotation.java
...java/jadx/core/dex/attributes/annotations/Annotation.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java
...jadx/core/dex/attributes/annotations/AnnotationsList.java
+4
-4
jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java
...adx/core/dex/attributes/annotations/MethodParameters.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/DeclareVariablesAttr.java
.../jadx/core/dex/attributes/nodes/DeclareVariablesAttr.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumClassAttr.java
...in/java/jadx/core/dex/attributes/nodes/EnumClassAttr.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/IgnoreEdgeAttr.java
...n/java/jadx/core/dex/attributes/nodes/IgnoreEdgeAttr.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/LoopInfo.java
...rc/main/java/jadx/core/dex/attributes/nodes/LoopInfo.java
+5
-5
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java
...main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/info/AccessInfo.java
jadx-core/src/main/java/jadx/core/dex/info/AccessInfo.java
+4
-6
jadx-core/src/main/java/jadx/core/dex/info/FieldInfo.java
jadx-core/src/main/java/jadx/core/dex/info/FieldInfo.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/info/InfoStorage.java
jadx-core/src/main/java/jadx/core/dex/info/InfoStorage.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/info/MethodInfo.java
jadx-core/src/main/java/jadx/core/dex/info/MethodInfo.java
+5
-5
jadx-core/src/main/java/jadx/core/dex/instructions/ArithNode.java
...e/src/main/java/jadx/core/dex/instructions/ArithNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayNode.java
...c/main/java/jadx/core/dex/instructions/FillArrayNode.java
+5
-5
jadx-core/src/main/java/jadx/core/dex/instructions/FilledNewArrayNode.java
...n/java/jadx/core/dex/instructions/FilledNewArrayNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/instructions/IfNode.java
...core/src/main/java/jadx/core/dex/instructions/IfNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/instructions/InvokeNode.java
.../src/main/java/jadx/core/dex/instructions/InvokeNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/instructions/NewArrayNode.java
...rc/main/java/jadx/core/dex/instructions/NewArrayNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/instructions/PhiInsn.java
...ore/src/main/java/jadx/core/dex/instructions/PhiInsn.java
+5
-6
jadx-core/src/main/java/jadx/core/dex/instructions/SwitchNode.java
.../src/main/java/jadx/core/dex/instructions/SwitchNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java
...rc/main/java/jadx/core/dex/instructions/args/ArgType.java
+5
-5
jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java
...c/main/java/jadx/core/dex/instructions/args/FieldArg.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java
...rc/main/java/jadx/core/dex/instructions/args/InsnArg.java
+4
-5
jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnWrapArg.java
...ain/java/jadx/core/dex/instructions/args/InsnWrapArg.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java
...ain/java/jadx/core/dex/instructions/args/RegisterArg.java
+4
-4
jadx-core/src/main/java/jadx/core/dex/instructions/args/SSAVar.java
...src/main/java/jadx/core/dex/instructions/args/SSAVar.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/instructions/mods/TernaryInsn.java
...ain/java/jadx/core/dex/instructions/mods/TernaryInsn.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java
jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java
+6
-6
jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java
jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java
+19
-20
jadx-core/src/main/java/jadx/core/dex/nodes/FieldNode.java
jadx-core/src/main/java/jadx/core/dex/nodes/FieldNode.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/nodes/InsnContainer.java
...core/src/main/java/jadx/core/dex/nodes/InsnContainer.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java
jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java
+8
-8
jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java
jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java
+16
-17
jadx-core/src/main/java/jadx/core/dex/nodes/ResRefField.java
jadx-core/src/main/java/jadx/core/dex/nodes/ResRefField.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java
...in/java/jadx/core/dex/nodes/parser/AnnotationsParser.java
+7
-7
jadx-core/src/main/java/jadx/core/dex/nodes/parser/LocalVar.java
...re/src/main/java/jadx/core/dex/nodes/parser/LocalVar.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java
...main/java/jadx/core/dex/nodes/parser/SignatureParser.java
+6
-6
jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java
...n/java/jadx/core/dex/nodes/parser/StaticValuesParser.java
+4
-4
jadx-core/src/main/java/jadx/core/dex/regions/AbstractRegion.java
...e/src/main/java/jadx/core/dex/regions/AbstractRegion.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/regions/Region.java
jadx-core/src/main/java/jadx/core/dex/regions/Region.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java
...ore/src/main/java/jadx/core/dex/regions/SwitchRegion.java
+4
-4
jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java
...c/main/java/jadx/core/dex/regions/SynchronizedRegion.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/regions/TryCatchRegion.java
...e/src/main/java/jadx/core/dex/regions/TryCatchRegion.java
+6
-6
jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java
...in/java/jadx/core/dex/regions/conditions/IfCondition.java
+7
-7
jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfInfo.java
...rc/main/java/jadx/core/dex/regions/conditions/IfInfo.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfRegion.java
.../main/java/jadx/core/dex/regions/conditions/IfRegion.java
+4
-4
jadx-core/src/main/java/jadx/core/dex/regions/loops/LoopRegion.java
...src/main/java/jadx/core/dex/regions/loops/LoopRegion.java
+2
-1
jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java
...rc/main/java/jadx/core/dex/trycatch/ExceptionHandler.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java
...e/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java
+5
-5
jadx-core/src/main/java/jadx/core/dex/visitors/ClassModifier.java
...e/src/main/java/jadx/core/dex/visitors/ClassModifier.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java
...re/src/main/java/jadx/core/dex/visitors/CodeShrinker.java
+7
-7
jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlineVisitor.java
.../main/java/jadx/core/dex/visitors/ConstInlineVisitor.java
+23
-22
jadx-core/src/main/java/jadx/core/dex/visitors/DebugInfoVisitor.java
...rc/main/java/jadx/core/dex/visitors/DebugInfoVisitor.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java
...main/java/jadx/core/dex/visitors/DependencyCollector.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java
...src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java
+5
-5
jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java
...ore/src/main/java/jadx/core/dex/visitors/EnumVisitor.java
+4
-10
jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java
...rc/main/java/jadx/core/dex/visitors/ExtractFieldInit.java
+6
-6
jadx-core/src/main/java/jadx/core/dex/visitors/MethodInlineVisitor.java
...main/java/jadx/core/dex/visitors/MethodInlineVisitor.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java
...core/src/main/java/jadx/core/dex/visitors/ModVisitor.java
+9
-9
jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java
...c/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java
+6
-3
jadx-core/src/main/java/jadx/core/dex/visitors/RenameVisitor.java
...e/src/main/java/jadx/core/dex/visitors/RenameVisitor.java
+0
-3
jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java
...src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java
+7
-7
jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinish.java
.../java/jadx/core/dex/visitors/blocksmaker/BlockFinish.java
+7
-7
jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockProcessor.java
...va/jadx/core/dex/visitors/blocksmaker/BlockProcessor.java
+8
-8
jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/helpers/BlocksRemoveInfo.java
...re/dex/visitors/blocksmaker/helpers/BlocksRemoveInfo.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java
...ain/java/jadx/core/dex/visitors/regions/CheckRegions.java
+6
-6
jadx-core/src/main/java/jadx/core/dex/visitors/regions/CleanRegions.java
...ain/java/jadx/core/dex/visitors/regions/CleanRegions.java
+5
-5
jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfMakerHelper.java
...in/java/jadx/core/dex/visitors/regions/IfMakerHelper.java
+7
-7
jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java
.../java/jadx/core/dex/visitors/regions/IfRegionVisitor.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
...ava/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
+6
-6
jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessTryCatchRegions.java
...adx/core/dex/visitors/regions/ProcessTryCatchRegions.java
+10
-10
jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java
...java/jadx/core/dex/visitors/regions/ProcessVariables.java
+28
-31
jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java
...main/java/jadx/core/dex/visitors/regions/RegionMaker.java
+14
-14
jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java
...va/jadx/core/dex/visitors/regions/RegionMakerVisitor.java
+9
-9
jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java
...main/java/jadx/core/dex/visitors/regions/RegionStack.java
+5
-5
jadx-core/src/main/java/jadx/core/dex/visitors/regions/ReturnVisitor.java
...in/java/jadx/core/dex/visitors/regions/ReturnVisitor.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/visitors/regions/TernaryMod.java
.../main/java/jadx/core/dex/visitors/regions/TernaryMod.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java
...a/jadx/core/dex/visitors/regions/TracedRegionVisitor.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/visitors/ssa/EliminatePhiNodes.java
...in/java/jadx/core/dex/visitors/ssa/EliminatePhiNodes.java
+6
-6
jadx-core/src/main/java/jadx/core/dex/visitors/ssa/LiveVarAnalysis.java
...main/java/jadx/core/dex/visitors/ssa/LiveVarAnalysis.java
+6
-6
jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
...rc/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
+8
-9
jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/PostTypeInference.java
...dx/core/dex/visitors/typeinference/PostTypeInference.java
+2
-2
jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java
...e/src/main/java/jadx/core/export/ExportGradleProject.java
+7
-7
jadx-core/src/main/java/jadx/core/export/TemplateFile.java
jadx-core/src/main/java/jadx/core/export/TemplateFile.java
+2
-2
jadx-core/src/main/java/jadx/core/utils/BlockUtils.java
jadx-core/src/main/java/jadx/core/utils/BlockUtils.java
+11
-11
jadx-core/src/main/java/jadx/core/utils/DebugUtils.java
jadx-core/src/main/java/jadx/core/utils/DebugUtils.java
+9
-9
jadx-core/src/main/java/jadx/core/utils/InsnList.java
jadx-core/src/main/java/jadx/core/utils/InsnList.java
+3
-3
jadx-core/src/main/java/jadx/core/utils/InsnUtils.java
jadx-core/src/main/java/jadx/core/utils/InsnUtils.java
+5
-6
jadx-core/src/main/java/jadx/core/utils/InstructionRemover.java
...ore/src/main/java/jadx/core/utils/InstructionRemover.java
+4
-10
jadx-core/src/main/java/jadx/core/utils/RegionUtils.java
jadx-core/src/main/java/jadx/core/utils/RegionUtils.java
+5
-5
jadx-core/src/main/java/jadx/core/utils/files/FileUtils.java
jadx-core/src/main/java/jadx/core/utils/files/FileUtils.java
+0
-2
jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
...re/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
+2
-2
jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java
jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java
+7
-7
jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java
jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java
+11
-4
jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java
jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java
+4
-4
未找到文件。
jadx-core/src/main/java/jadx/api/JavaClass.java
浏览文件 @
2c904c56
package
jadx.api
;
import
jadx.core.codegen.CodeWriter
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.nodes.LineAttrNode
;
import
jadx.core.dex.info.AccessInfo
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.FieldNode
;
import
jadx.core.dex.nodes.MethodNode
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Comparator
;
...
...
@@ -17,6 +9,14 @@ import java.util.Map;
import
org.jetbrains.annotations.Nullable
;
import
jadx.core.codegen.CodeWriter
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.nodes.LineAttrNode
;
import
jadx.core.dex.info.AccessInfo
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.FieldNode
;
import
jadx.core.dex.nodes.MethodNode
;
public
final
class
JavaClass
implements
JavaNode
{
private
final
JadxDecompiler
decompiler
;
...
...
jadx-core/src/main/java/jadx/api/JavaMethod.java
浏览文件 @
2c904c56
package
jadx.api
;
import
java.util.List
;
import
jadx.core.dex.info.AccessInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.MethodNode
;
import
java.util.List
;
public
final
class
JavaMethod
implements
JavaNode
{
private
final
MethodNode
mth
;
private
final
JavaClass
parent
;
...
...
jadx-core/src/main/java/jadx/api/ResourceFile.java
浏览文件 @
2c904c56
package
jadx.api
;
import
java.io.File
;
import
jadx.core.utils.files.ZipSecurity
;
import
jadx.core.xmlgen.ResContainer
;
import
java.io.File
;
public
class
ResourceFile
{
public
static
final
class
ZipRef
{
...
...
jadx-core/src/main/java/jadx/core/clsp/ClsSet.java
浏览文件 @
2c904c56
package
jadx.core.clsp
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.RootNode
;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
jadx.core.utils.files.FileUtils
;
import
jadx.core.utils.files.ZipSecurity
;
import
java.io.BufferedOutputStream
;
import
java.io.DataInputStream
;
import
java.io.DataOutputStream
;
...
...
@@ -28,6 +20,14 @@ import java.util.zip.ZipOutputStream;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.RootNode
;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
jadx.core.utils.files.FileUtils
;
import
jadx.core.utils.files.ZipSecurity
;
import
static
jadx
.
core
.
utils
.
files
.
FileUtils
.
close
;
/**
...
...
jadx-core/src/main/java/jadx/core/clsp/ClspGraph.java
浏览文件 @
2c904c56
package
jadx.core.clsp
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
...
...
@@ -17,6 +13,10 @@ import java.util.WeakHashMap;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
/**
* Classes hierarchy graph
*/
...
...
jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java
浏览文件 @
2c904c56
package
jadx.core.clsp
;
import
jadx.api.JadxArgs
;
import
jadx.core.dex.nodes.RootNode
;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.files.InputFile
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.ArrayList
;
...
...
@@ -13,6 +8,11 @@ import java.util.List;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.api.JadxArgs
;
import
jadx.core.dex.nodes.RootNode
;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.files.InputFile
;
/**
* Utility class for convert dex or jar to jadx classes set (.jcst)
*/
...
...
jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java
浏览文件 @
2c904c56
package
jadx.core.codegen
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
jadx.core.Consts
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.IAttributeNode
;
...
...
@@ -14,11 +19,6 @@ import jadx.core.dex.nodes.MethodNode;
import
jadx.core.utils.StringUtils
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
public
class
AnnotationGen
{
private
final
ClassNode
cls
;
...
...
jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java
浏览文件 @
2c904c56
package
jadx.core.codegen
;
import
jadx.api.CodePosition
;
import
jadx.core.dex.attributes.nodes.LineAttrNode
;
import
jadx.core.utils.files.FileUtils
;
import
jadx.core.utils.files.ZipSecurity
;
import
java.io.File
;
import
java.io.PrintWriter
;
import
java.util.Collections
;
...
...
@@ -17,6 +12,11 @@ import org.jetbrains.annotations.Nullable;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.api.CodePosition
;
import
jadx.core.dex.attributes.nodes.LineAttrNode
;
import
jadx.core.utils.files.FileUtils
;
import
jadx.core.utils.files.ZipSecurity
;
public
class
CodeWriter
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
CodeWriter
.
class
);
...
...
jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java
浏览文件 @
2c904c56
...
...
@@ -4,9 +4,6 @@ import java.util.Iterator;
import
java.util.LinkedList
;
import
java.util.Queue
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.instructions.ArithNode
;
import
jadx.core.dex.instructions.IfOp
;
import
jadx.core.dex.instructions.InsnType
;
...
...
@@ -23,7 +20,6 @@ import jadx.core.utils.exceptions.CodegenException;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
public
class
ConditionGen
extends
InsnGen
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
ConditionGen
.
class
);
private
static
class
CondStack
{
private
final
Queue
<
IfCondition
>
stack
=
new
LinkedList
<>();
...
...
jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
浏览文件 @
2c904c56
package
jadx.core.codegen
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.EnumSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Set
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.FieldReplaceAttr
;
...
...
@@ -41,17 +52,6 @@ import jadx.core.utils.RegionUtils;
import
jadx.core.utils.exceptions.CodegenException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.EnumSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Set
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
static
jadx
.
core
.
utils
.
android
.
AndroidResourcesUtils
.
handleAppResField
;
public
class
InsnGen
{
...
...
jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
浏览文件 @
2c904c56
package
jadx.core.codegen
;
import
java.util.Iterator
;
import
java.util.List
;
import
com.android.dx.rop.code.AccessFlags
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.annotations.MethodParameters
;
...
...
@@ -20,14 +27,6 @@ import jadx.core.utils.Utils;
import
jadx.core.utils.exceptions.CodegenException
;
import
jadx.core.utils.exceptions.DecodeException
;
import
java.util.Iterator
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.android.dx.rop.code.AccessFlags
;
public
class
MethodGen
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
MethodGen
.
class
);
...
...
jadx-core/src/main/java/jadx/core/codegen/NameGen.java
浏览文件 @
2c904c56
package
jadx.core.codegen
;
import
java.util.HashMap
;
import
java.util.LinkedHashSet
;
import
java.util.Map
;
import
java.util.Set
;
import
jadx.core.Consts
;
import
jadx.core.deobf.NameMapper
;
import
jadx.core.dex.attributes.nodes.LoopLabelAttr
;
...
...
@@ -17,12 +22,6 @@ import jadx.core.dex.nodes.InsnNode;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.utils.StringUtils
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.LinkedHashSet
;
import
java.util.Map
;
import
java.util.Set
;
public
class
NameGen
{
private
static
final
Map
<
String
,
String
>
OBJ_ALIAS
;
...
...
jadx-core/src/main/java/jadx/core/codegen/RegionGen.java
浏览文件 @
2c904c56
package
jadx.core.codegen
;
import
java.util.List
;
import
java.util.Map
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.DeclareVariablesAttr
;
...
...
@@ -32,12 +38,6 @@ import jadx.core.utils.RegionUtils;
import
jadx.core.utils.exceptions.CodegenException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.List
;
import
java.util.Map
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
RegionGen
extends
InsnGen
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
RegionGen
.
class
);
...
...
jadx-core/src/main/java/jadx/core/codegen/TypeGen.java
浏览文件 @
2c904c56
package
jadx.core.codegen
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.api.JadxArgs
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.PrimitiveType
;
...
...
@@ -8,9 +11,6 @@ import jadx.core.utils.StringUtils;
import
jadx.core.utils.Utils
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
TypeGen
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
TypeGen
.
class
);
...
...
jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java
浏览文件 @
2c904c56
package
jadx.core.deobf
;
import
jadx.core.dex.info.ClassInfo
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.info.MethodInfo
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.ArrayList
;
...
...
@@ -16,6 +12,10 @@ import org.apache.commons.io.FileUtils;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.info.ClassInfo
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.info.MethodInfo
;
class
DeobfPresets
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
DeobfPresets
.
class
);
...
...
jadx-core/src/main/java/jadx/core/deobf/OverridedMethodsNode.java
浏览文件 @
2c904c56
package
jadx.core.deobf
;
import
jadx.core.dex.info.MethodInfo
;
import
java.util.Set
;
import
jadx.core.dex.info.MethodInfo
;
/* package */
class
OverridedMethodsNode
{
private
Set
<
MethodInfo
>
methods
;
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/AttrList.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes
;
import
jadx.core.utils.Utils
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.utils.Utils
;
public
class
AttrList
<
T
>
implements
IAttribute
{
private
final
AType
<
AttrList
<
T
>>
type
;
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/AttrNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes
;
import
jadx.core.dex.attributes.annotations.Annotation
;
import
java.util.List
;
import
jadx.core.dex.attributes.annotations.Annotation
;
public
abstract
class
AttrNode
implements
IAttributeNode
{
private
static
final
AttributeStorage
EMPTY_ATTR_STORAGE
=
new
EmptyAttrStorage
();
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/AttributeStorage.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes
;
import
jadx.core.dex.attributes.annotations.Annotation
;
import
jadx.core.dex.attributes.annotations.AnnotationsList
;
import
jadx.core.utils.Utils
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.EnumSet
;
...
...
@@ -12,6 +8,10 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Set
;
import
jadx.core.dex.attributes.annotations.Annotation
;
import
jadx.core.dex.attributes.annotations.AnnotationsList
;
import
jadx.core.utils.Utils
;
/**
* Storage for different attribute types:
* 1. flags - boolean attribute (set or not)
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/EmptyAttrStorage.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes
;
import
jadx.core.dex.attributes.annotations.Annotation
;
import
java.util.Collections
;
import
java.util.List
;
import
jadx.core.dex.attributes.annotations.Annotation
;
public
final
class
EmptyAttrStorage
extends
AttributeStorage
{
@Override
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/IAttributeNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes
;
import
jadx.core.dex.attributes.annotations.Annotation
;
import
java.util.List
;
import
jadx.core.dex.attributes.annotations.Annotation
;
public
interface
IAttributeNode
{
void
add
(
AFlag
flag
);
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/annotations/Annotation.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes.annotations
;
import
jadx.core.dex.instructions.args.ArgType
;
import
java.util.Map
;
import
jadx.core.dex.instructions.args.ArgType
;
public
class
Annotation
{
public
enum
Visibility
{
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes.annotations
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.IAttribute
;
import
jadx.core.utils.Utils
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.IAttribute
;
import
jadx.core.utils.Utils
;
public
class
AnnotationsList
implements
IAttribute
{
public
static
final
AnnotationsList
EMPTY
=
new
AnnotationsList
(
Collections
.<
Annotation
>
emptyList
());
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes.annotations
;
import
java.util.ArrayList
;
import
java.util.List
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.IAttribute
;
import
jadx.core.utils.Utils
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
MethodParameters
implements
IAttribute
{
private
final
List
<
AnnotationsList
>
paramList
;
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/DeclareVariablesAttr.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes.nodes
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.IAttribute
;
import
jadx.core.dex.instructions.args.RegisterArg
;
import
jadx.core.utils.Utils
;
import
java.util.LinkedList
;
import
java.util.List
;
/**
* List of variables to be declared at region start.
*/
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumClassAttr.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes.nodes
;
import
java.util.ArrayList
;
import
java.util.List
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.IAttribute
;
import
jadx.core.dex.info.FieldInfo
;
...
...
@@ -7,9 +10,6 @@ import jadx.core.dex.instructions.mods.ConstructorInsn;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.MethodNode
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
EnumClassAttr
implements
IAttribute
{
public
static
class
EnumField
{
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/IgnoreEdgeAttr.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes.nodes
;
import
java.util.HashSet
;
import
java.util.Set
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.IAttribute
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.utils.Utils
;
import
java.util.HashSet
;
import
java.util.Set
;
public
class
IgnoreEdgeAttr
implements
IAttribute
{
private
final
Set
<
BlockNode
>
blocks
=
new
HashSet
<>(
3
);
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/LoopInfo.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes.nodes
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.dex.nodes.Edge
;
import
jadx.core.utils.BlockUtils
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Set
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.dex.nodes.Edge
;
import
jadx.core.utils.BlockUtils
;
public
class
LoopInfo
{
private
final
BlockNode
start
;
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java
浏览文件 @
2c904c56
package
jadx.core.dex.attributes.nodes
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.IAttribute
;
import
jadx.core.dex.instructions.PhiInsn
;
import
java.util.LinkedList
;
import
java.util.List
;
public
class
PhiListAttr
implements
IAttribute
{
private
final
List
<
PhiInsn
>
list
=
new
LinkedList
<>();
...
...
jadx-core/src/main/java/jadx/core/dex/info/AccessInfo.java
浏览文件 @
2c904c56
package
jadx.core.dex.info
;
import
jadx.core.Consts
;
import
com.android.dx.rop.code.AccessFlags
;
import
jadx.core.Consts
;
public
class
AccessInfo
{
private
final
int
accFlags
;
...
...
@@ -140,10 +140,8 @@ public class AccessInfo {
if
(
isBridge
())
{
code
.
append
(
"/* bridge */ "
);
}
if
(
Consts
.
DEBUG
)
{
if
(
isVarArgs
())
{
code
.
append
(
"/* varargs */ "
);
}
if
(
Consts
.
DEBUG
&&
isVarArgs
())
{
code
.
append
(
"/* varargs */ "
);
}
break
;
...
...
jadx-core/src/main/java/jadx/core/dex/info/FieldInfo.java
浏览文件 @
2c904c56
package
jadx.core.dex.info
;
import
com.android.dex.FieldId
;
import
jadx.core.codegen.TypeGen
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.DexNode
;
import
com.android.dex.FieldId
;
public
final
class
FieldInfo
{
private
final
ClassInfo
declClass
;
...
...
jadx-core/src/main/java/jadx/core/dex/info/InfoStorage.java
浏览文件 @
2c904c56
package
jadx.core.dex.info
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.DexNode
;
import
java.util.HashMap
;
import
java.util.Map
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.DexNode
;
public
class
InfoStorage
{
private
final
Map
<
ArgType
,
ClassInfo
>
classes
=
new
HashMap
<>();
...
...
jadx-core/src/main/java/jadx/core/dex/info/MethodInfo.java
浏览文件 @
2c904c56
package
jadx.core.dex.info
;
import
jadx.core.codegen.TypeGen
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.utils.Utils
;
import
java.util.List
;
import
com.android.dex.MethodId
;
import
com.android.dex.ProtoId
;
import
jadx.core.codegen.TypeGen
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.utils.Utils
;
public
final
class
MethodInfo
{
private
final
String
name
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/ArithNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions
;
import
com.android.dx.io.instructions.DecodedInstruction
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.InsnArg
;
...
...
@@ -7,8 +9,6 @@ import jadx.core.dex.instructions.args.RegisterArg;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.InsnUtils
;
import
com.android.dx.io.instructions.DecodedInstruction
;
public
class
ArithNode
extends
InsnNode
{
private
final
ArithOp
op
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.android.dx.io.instructions.FillArrayDataPayloadDecodedInstruction
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.InsnArg
;
import
jadx.core.dex.instructions.args.LiteralArg
;
...
...
@@ -8,11 +13,6 @@ import jadx.core.dex.nodes.DexNode;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.android.dx.io.instructions.FillArrayDataPayloadDecodedInstruction
;
public
final
class
FillArrayNode
extends
InsnNode
{
private
final
Object
data
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/FilledNewArrayNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions
;
import
org.jetbrains.annotations.NotNull
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.InsnNode
;
import
org.jetbrains.annotations.NotNull
;
public
class
FilledNewArrayNode
extends
InsnNode
{
private
final
ArgType
elemType
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/IfNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions
;
import
com.android.dx.io.instructions.DecodedInstruction
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.InsnArg
;
import
jadx.core.dex.instructions.args.PrimitiveType
;
...
...
@@ -7,8 +9,6 @@ import jadx.core.dex.nodes.BlockNode;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.InsnUtils
;
import
com.android.dx.io.instructions.DecodedInstruction
;
import
static
jadx
.
core
.
utils
.
BlockUtils
.
getBlockByOffset
;
import
static
jadx
.
core
.
utils
.
BlockUtils
.
selectOther
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/InvokeNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions
;
import
com.android.dx.io.instructions.DecodedInstruction
;
import
jadx.core.dex.info.MethodInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.InsnArg
;
...
...
@@ -7,8 +9,6 @@ import jadx.core.dex.nodes.InsnNode;
import
jadx.core.utils.InsnUtils
;
import
jadx.core.utils.Utils
;
import
com.android.dx.io.instructions.DecodedInstruction
;
public
class
InvokeNode
extends
InsnNode
{
private
final
InvokeType
type
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/NewArrayNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions
;
import
org.jetbrains.annotations.NotNull
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.InsnArg
;
import
jadx.core.dex.instructions.args.RegisterArg
;
import
jadx.core.dex.nodes.InsnNode
;
import
org.jetbrains.annotations.NotNull
;
public
class
NewArrayNode
extends
InsnNode
{
private
final
ArgType
arrType
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/PhiInsn.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
org.jetbrains.annotations.NotNull
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.InsnArg
;
...
...
@@ -10,12 +15,6 @@ import jadx.core.utils.InstructionRemover;
import
jadx.core.utils.Utils
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.IdentityHashMap
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
org.jetbrains.annotations.NotNull
;
public
final
class
PhiInsn
extends
InsnNode
{
private
final
Map
<
RegisterArg
,
BlockNode
>
blockBinds
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/SwitchNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions
;
import
java.util.Arrays
;
import
jadx.core.dex.instructions.args.InsnArg
;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.InsnUtils
;
import
java.util.Arrays
;
public
class
SwitchNode
extends
InsnNode
{
private
final
Object
[]
keys
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions.args
;
import
jadx.core.Consts
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.dex.nodes.parser.SignatureParser
;
import
jadx.core.utils.Utils
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.jetbrains.annotations.Nullable
;
import
jadx.core.Consts
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.dex.nodes.parser.SignatureParser
;
import
jadx.core.utils.Utils
;
public
abstract
class
ArgType
{
public
static
final
ArgType
INT
=
primitive
(
PrimitiveType
.
INT
);
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions.args
;
import
jadx.core.dex.info.FieldInfo
;
import
org.jetbrains.annotations.Nullable
;
import
jadx.core.dex.info.FieldInfo
;
// TODO: don't extend RegisterArg (now used as a result of instruction)
public
final
class
FieldArg
extends
RegisterArg
{
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions.args
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.InsnUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.android.dx.io.instructions.DecodedInstruction
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.android.dx.io.instructions.DecodedInstruction
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.InsnUtils
;
/**
* Instruction argument,
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnWrapArg.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions.args
;
import
org.jetbrains.annotations.NotNull
;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
org.jetbrains.annotations.NotNull
;
public
final
class
InsnWrapArg
extends
InsnArg
{
private
final
InsnNode
wrappedInsn
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions.args
;
import
java.util.Objects
;
import
org.jetbrains.annotations.NotNull
;
import
jadx.core.dex.instructions.InsnType
;
import
jadx.core.dex.instructions.PhiInsn
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.InsnUtils
;
import
java.util.Objects
;
import
org.jetbrains.annotations.NotNull
;
public
class
RegisterArg
extends
InsnArg
implements
Named
{
protected
final
int
regNum
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/args/SSAVar.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions.args
;
import
jadx.core.dex.attributes.AttrNode
;
import
jadx.core.dex.instructions.PhiInsn
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
jadx.core.dex.attributes.AttrNode
;
import
jadx.core.dex.instructions.PhiInsn
;
public
class
SSAVar
extends
AttrNode
{
private
final
int
regNum
;
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/mods/TernaryInsn.java
浏览文件 @
2c904c56
package
jadx.core.dex.instructions.mods
;
import
java.util.Collection
;
import
jadx.core.dex.instructions.InsnType
;
import
jadx.core.dex.instructions.args.InsnArg
;
import
jadx.core.dex.instructions.args.LiteralArg
;
...
...
@@ -9,8 +11,6 @@ import jadx.core.dex.regions.conditions.IfCondition;
import
jadx.core.utils.InsnUtils
;
import
jadx.core.utils.Utils
;
import
java.util.Collection
;
public
final
class
TernaryInsn
extends
InsnNode
{
private
IfCondition
condition
;
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.Collections
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.AttrNode
;
...
...
@@ -9,12 +15,6 @@ import jadx.core.utils.BlockUtils;
import
jadx.core.utils.EmptyBitSet
;
import
jadx.core.utils.InsnUtils
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.Collections
;
import
java.util.LinkedList
;
import
java.util.List
;
public
class
BlockNode
extends
AttrNode
implements
IBlock
{
private
int
id
;
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
com.android.dex.ClassData
;
import
com.android.dex.ClassData.Field
;
import
com.android.dex.ClassData.Method
;
import
com.android.dex.ClassDef
;
import
com.android.dex.Dex
;
import
com.android.dx.rop.code.AccessFlags
;
import
org.jetbrains.annotations.Nullable
;
import
org.jetbrains.annotations.TestOnly
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.Consts
;
import
jadx.core.codegen.CodeWriter
;
import
jadx.core.dex.attributes.annotations.Annotation
;
...
...
@@ -20,26 +39,6 @@ import jadx.core.dex.nodes.parser.StaticValuesParser;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
org.jetbrains.annotations.Nullable
;
import
org.jetbrains.annotations.TestOnly
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.android.dex.ClassData
;
import
com.android.dex.ClassData.Field
;
import
com.android.dex.ClassData.Method
;
import
com.android.dex.ClassDef
;
import
com.android.dex.Dex
;
import
com.android.dx.rop.code.AccessFlags
;
public
class
ClassNode
extends
LineAttrNode
implements
ILoadable
,
IDexNode
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
ClassNode
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/FieldNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes
;
import
com.android.dex.ClassData.Field
;
import
jadx.core.dex.attributes.nodes.LineAttrNode
;
import
jadx.core.dex.info.AccessInfo
;
import
jadx.core.dex.info.AccessInfo.AFType
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
import
com.android.dex.ClassData.Field
;
public
class
FieldNode
extends
LineAttrNode
{
private
final
ClassNode
parent
;
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/InsnContainer.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes
;
import
jadx.core.dex.attributes.AttrNode
;
import
java.util.List
;
import
jadx.core.dex.attributes.AttrNode
;
public
class
InsnContainer
extends
AttrNode
implements
IBlock
{
private
final
List
<
InsnNode
>
insns
;
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
com.android.dx.io.instructions.DecodedInstruction
;
import
com.rits.cloning.Cloner
;
import
jadx.core.dex.attributes.nodes.LineAttrNode
;
import
jadx.core.dex.instructions.InsnType
;
import
jadx.core.dex.instructions.args.ArgType
;
...
...
@@ -12,14 +20,6 @@ import jadx.core.dex.instructions.args.SSAVar;
import
jadx.core.utils.InsnUtils
;
import
jadx.core.utils.Utils
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
com.android.dx.io.instructions.DecodedInstruction
;
import
com.rits.cloning.Cloner
;
public
class
InsnNode
extends
LineAttrNode
{
private
static
final
Cloner
INSN_CLONER
=
new
Cloner
();
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
com.android.dex.ClassData.Method
;
import
com.android.dex.Code
;
import
com.android.dex.Code.CatchHandler
;
import
com.android.dex.Code.Try
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.JumpInfo
;
...
...
@@ -27,23 +43,6 @@ import jadx.core.utils.Utils;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.android.dex.ClassData.Method
;
import
com.android.dex.Code
;
import
com.android.dex.Code.CatchHandler
;
import
com.android.dex.Code.Try
;
public
class
MethodNode
extends
LineAttrNode
implements
ILoadable
,
IDexNode
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
MethodNode
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/ResRefField.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes
;
import
com.android.dx.rop.code.AccessFlags
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
import
com.android.dx.rop.code.AccessFlags
;
public
class
ResRefField
extends
FieldNode
{
public
ResRefField
(
DexNode
dex
,
String
str
)
{
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes.parser
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.android.dex.Dex.Section
;
import
jadx.core.dex.attributes.annotations.Annotation
;
import
jadx.core.dex.attributes.annotations.Annotation.Visibility
;
import
jadx.core.dex.attributes.annotations.AnnotationsList
;
...
...
@@ -11,13 +18,6 @@ import jadx.core.dex.nodes.FieldNode;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.utils.exceptions.DecodeException
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.android.dex.Dex.Section
;
public
class
AnnotationsParser
{
private
static
final
Visibility
[]
VISIBILITIES
=
{
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/parser/LocalVar.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes.parser
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.RegisterArg
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.utils.InsnUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
final
class
LocalVar
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
LocalVar
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes.parser
;
import
jadx.core.Consts
;
import
jadx.core.dex.attributes.IAttributeNode
;
import
jadx.core.dex.attributes.annotations.Annotation
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.Collections
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedList
;
...
...
@@ -15,6 +9,12 @@ import java.util.Map;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.Consts
;
import
jadx.core.dex.attributes.IAttributeNode
;
import
jadx.core.dex.attributes.annotations.Annotation
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
public
class
SignatureParser
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
SignatureParser
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java
浏览文件 @
2c904c56
package
jadx.core.dex.nodes.parser
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.dex.nodes.FieldNode
;
import
jadx.core.utils.exceptions.DecodeException
;
import
java.util.List
;
import
com.android.dex.Dex.Section
;
import
com.android.dex.Leb128
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.dex.nodes.FieldNode
;
import
jadx.core.utils.exceptions.DecodeException
;
public
class
StaticValuesParser
extends
EncValueParser
{
public
StaticValuesParser
(
DexNode
dex
,
Section
in
)
{
...
...
jadx-core/src/main/java/jadx/core/dex/regions/AbstractRegion.java
浏览文件 @
2c904c56
package
jadx.core.dex.regions
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AttrNode
;
import
jadx.core.dex.nodes.IContainer
;
import
jadx.core.dex.nodes.IRegion
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
abstract
class
AbstractRegion
extends
AttrNode
implements
IRegion
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
AbstractRegion
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/regions/Region.java
浏览文件 @
2c904c56
package
jadx.core.dex.regions
;
import
jadx.core.dex.nodes.IContainer
;
import
jadx.core.dex.nodes.IRegion
;
import
java.util.ArrayList
;
import
java.util.List
;
import
jadx.core.dex.nodes.IContainer
;
import
jadx.core.dex.nodes.IRegion
;
public
final
class
Region
extends
AbstractRegion
{
private
final
List
<
IContainer
>
blocks
;
...
...
jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java
浏览文件 @
2c904c56
package
jadx.core.dex.regions
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.dex.nodes.IBranchRegion
;
import
jadx.core.dex.nodes.IContainer
;
import
jadx.core.dex.nodes.IRegion
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
public
final
class
SwitchRegion
extends
AbstractRegion
implements
IBranchRegion
{
private
final
BlockNode
header
;
...
...
jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java
浏览文件 @
2c904c56
package
jadx.core.dex.regions
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.dex.nodes.IContainer
;
import
jadx.core.dex.nodes.IRegion
;
import
jadx.core.dex.nodes.InsnNode
;
import
java.util.LinkedList
;
import
java.util.List
;
public
final
class
SynchronizedRegion
extends
AbstractRegion
{
private
final
InsnNode
enterInsn
;
...
...
jadx-core/src/main/java/jadx/core/dex/regions/TryCatchRegion.java
浏览文件 @
2c904c56
package
jadx.core.dex.regions
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
jadx.core.dex.nodes.IBranchRegion
;
import
jadx.core.dex.nodes.IContainer
;
import
jadx.core.dex.nodes.IRegion
;
...
...
@@ -7,12 +13,6 @@ import jadx.core.dex.trycatch.ExceptionHandler;
import
jadx.core.dex.trycatch.TryCatchBlock
;
import
jadx.core.utils.Utils
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
public
final
class
TryCatchRegion
extends
AbstractRegion
implements
IBranchRegion
{
private
final
IContainer
tryRegion
;
...
...
jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java
浏览文件 @
2c904c56
package
jadx.core.dex.regions.conditions
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.dex.instructions.IfNode
;
import
jadx.core.dex.instructions.IfOp
;
import
jadx.core.dex.instructions.InsnType
;
...
...
@@ -10,13 +17,6 @@ import jadx.core.dex.nodes.BlockNode;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.List
;
public
final
class
IfCondition
{
public
enum
Mode
{
...
...
jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfInfo.java
浏览文件 @
2c904c56
package
jadx.core.dex.regions.conditions
;
import
jadx.core.dex.nodes.BlockNode
;
import
java.util.HashSet
;
import
java.util.Set
;
import
jadx.core.dex.nodes.BlockNode
;
public
final
class
IfInfo
{
private
final
IfCondition
condition
;
private
final
Set
<
BlockNode
>
mergedBlocks
;
...
...
jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfRegion.java
浏览文件 @
2c904c56
package
jadx.core.dex.regions.conditions
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.dex.nodes.IBranchRegion
;
import
jadx.core.dex.nodes.IContainer
;
...
...
@@ -7,10 +11,6 @@ import jadx.core.dex.nodes.IRegion;
import
jadx.core.dex.regions.AbstractRegion
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
public
final
class
IfRegion
extends
AbstractRegion
implements
IBranchRegion
{
private
final
BlockNode
header
;
...
...
jadx-core/src/main/java/jadx/core/dex/regions/loops/LoopRegion.java
浏览文件 @
2c904c56
...
...
@@ -4,6 +4,8 @@ import java.util.ArrayList;
import
java.util.Collections
;
import
java.util.List
;
import
org.jetbrains.annotations.Nullable
;
import
jadx.core.dex.attributes.nodes.LoopInfo
;
import
jadx.core.dex.instructions.IfNode
;
import
jadx.core.dex.instructions.args.RegisterArg
;
...
...
@@ -13,7 +15,6 @@ import jadx.core.dex.nodes.IRegion;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.dex.regions.AbstractRegion
;
import
jadx.core.dex.regions.conditions.IfCondition
;
import
org.jetbrains.annotations.Nullable
;
public
final
class
LoopRegion
extends
AbstractRegion
{
...
...
jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java
浏览文件 @
2c904c56
package
jadx.core.dex.trycatch
;
import
java.util.ArrayList
;
import
java.util.List
;
import
jadx.core.Consts
;
import
jadx.core.dex.info.ClassInfo
;
import
jadx.core.dex.instructions.args.InsnArg
;
...
...
@@ -7,9 +10,6 @@ import jadx.core.dex.nodes.BlockNode;
import
jadx.core.dex.nodes.IContainer
;
import
jadx.core.utils.InsnUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ExceptionHandler
{
private
final
ClassInfo
catchType
;
...
...
jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java
浏览文件 @
2c904c56
package
jadx.core.dex.trycatch
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.info.ClassInfo
;
...
...
@@ -9,11 +14,6 @@ import jadx.core.dex.nodes.MethodNode;
import
jadx.core.utils.BlockUtils
;
import
jadx.core.utils.Utils
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.List
;
public
class
TryCatchBlock
{
private
final
List
<
ExceptionHandler
>
handlers
;
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/ClassModifier.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.List
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.FieldReplaceAttr
;
...
...
@@ -22,8 +24,6 @@ import jadx.core.utils.BlockUtils;
import
jadx.core.utils.InstructionRemover
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.List
;
@JadxVisitor
(
name
=
"ClassModifier"
,
desc
=
"Remove synthetic classes, methods and fields"
,
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.ListIterator
;
import
java.util.Set
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.instructions.InsnType
;
import
jadx.core.dex.instructions.args.InsnArg
;
...
...
@@ -16,13 +23,6 @@ import jadx.core.utils.EmptyBitSet;
import
jadx.core.utils.InsnList
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.ListIterator
;
import
java.util.Set
;
public
class
CodeShrinker
extends
AbstractVisitor
{
@Override
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlineVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.ArrayList
;
import
java.util.List
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.instructions.IndexInsnNode
;
...
...
@@ -21,9 +24,6 @@ import jadx.core.dex.visitors.typeinference.PostTypeInference;
import
jadx.core.utils.InstructionRemover
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ConstInlineVisitor
extends
AbstractVisitor
{
@Override
...
...
@@ -79,18 +79,19 @@ public class ConstInlineVisitor extends AbstractVisitor {
private
static
boolean
checkObjectInline
(
SSAVar
sVar
)
{
for
(
RegisterArg
useArg
:
sVar
.
getUseList
())
{
InsnNode
insn
=
useArg
.
getParentInsn
();
if
(
insn
!=
null
)
{
InsnType
insnType
=
insn
.
getType
();
if
(
insnType
==
InsnType
.
INVOKE
)
{
InvokeNode
inv
=
(
InvokeNode
)
insn
;
if
(
inv
.
getInvokeType
()
!=
InvokeType
.
STATIC
&&
inv
.
getArg
(
0
)
==
useArg
)
{
return
true
;
}
}
else
if
(
insnType
==
InsnType
.
ARRAY_LENGTH
)
{
if
(
insn
.
getArg
(
0
)
==
useArg
)
{
return
true
;
}
if
(
insn
==
null
)
{
continue
;
}
InsnType
insnType
=
insn
.
getType
();
if
(
insnType
==
InsnType
.
INVOKE
)
{
InvokeNode
inv
=
(
InvokeNode
)
insn
;
if
(
inv
.
getInvokeType
()
!=
InvokeType
.
STATIC
&&
inv
.
getArg
(
0
)
==
useArg
)
{
return
true
;
}
}
else
if
(
insnType
==
InsnType
.
ARRAY_LENGTH
)
{
if
(
insn
.
getArg
(
0
)
==
useArg
)
{
return
true
;
}
}
}
...
...
@@ -170,16 +171,16 @@ public class ConstInlineVisitor extends AbstractVisitor {
insn
.
getArg
(
0
).
merge
(
dex
,
((
FieldInfo
)
node
.
getIndex
()).
getType
());
break
;
case
IF:
{
InsnArg
arg0
=
insn
.
getArg
(
0
);
InsnArg
arg1
=
insn
.
getArg
(
1
);
if
(
arg0
==
litArg
)
{
arg0
.
merge
(
dex
,
arg1
);
case
IF:
InsnArg
firstArg
=
insn
.
getArg
(
0
);
InsnArg
secondArg
=
insn
.
getArg
(
1
);
if
(
firstArg
==
litArg
)
{
firstArg
.
merge
(
dex
,
secondArg
);
}
else
{
arg1
.
merge
(
dex
,
arg0
);
secondArg
.
merge
(
dex
,
firstArg
);
}
break
;
}
case
CMP_G:
case
CMP_L:
InsnArg
arg0
=
insn
.
getArg
(
0
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/DebugInfoVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.instructions.args.RegisterArg
;
import
jadx.core.dex.nodes.BlockNode
;
...
...
@@ -11,9 +14,6 @@ import jadx.core.utils.ErrorsCounter;
import
jadx.core.utils.exceptions.DecodeException
;
import
jadx.core.utils.exceptions.JadxException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
DebugInfoVisitor
extends
AbstractVisitor
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
DebugInfoVisitor
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.Set
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.info.ClassInfo
;
import
jadx.core.dex.info.FieldInfo
;
...
...
@@ -17,8 +19,6 @@ import jadx.core.dex.nodes.InsnNode;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.Set
;
public
class
DependencyCollector
extends
AbstractVisitor
{
@Override
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.io.File
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
jadx.core.codegen.CodeWriter
;
import
jadx.core.codegen.MethodGen
;
import
jadx.core.dex.attributes.IAttributeNode
;
...
...
@@ -18,11 +23,6 @@ import jadx.core.utils.RegionUtils;
import
jadx.core.utils.StringUtils
;
import
jadx.core.utils.Utils
;
import
java.io.File
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
public
class
DotGraphVisitor
extends
AbstractVisitor
{
private
static
final
String
NL
=
"\\l"
;
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.ArrayList
;
import
java.util.List
;
import
jadx.core.codegen.TypeGen
;
import
jadx.core.deobf.NameMapper
;
import
jadx.core.dex.attributes.AFlag
;
...
...
@@ -24,19 +27,12 @@ import jadx.core.utils.ErrorsCounter;
import
jadx.core.utils.InsnUtils
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
@JadxVisitor
(
name
=
"EnumVisitor"
,
desc
=
"Restore enum classes"
,
runAfter
=
{
CodeShrinker
.
class
,
ModVisitor
.
class
}
)
public
class
EnumVisitor
extends
AbstractVisitor
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
EnumVisitor
.
class
);
@Override
public
boolean
visit
(
ClassNode
cls
)
throws
JadxException
{
...
...
@@ -178,9 +174,7 @@ public class EnumVisitor extends AbstractVisitor {
private
boolean
isEnumArrayField
(
ClassInfo
classInfo
,
FieldNode
fieldNode
)
{
if
(
fieldNode
.
getAccessFlags
().
isSynthetic
())
{
ArgType
fType
=
fieldNode
.
getType
();
if
(
fType
.
isArray
()
&&
fType
.
getArrayRootElement
().
equals
(
classInfo
.
getType
()))
{
return
true
;
}
return
fType
.
isArray
()
&&
fType
.
getArrayRootElement
().
equals
(
classInfo
.
getType
());
}
return
false
;
}
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.info.AccessInfo
;
...
...
@@ -19,12 +25,6 @@ import jadx.core.utils.BlockUtils;
import
jadx.core.utils.InstructionRemover
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
@JadxVisitor
(
name
=
"ExtractFieldInit"
,
desc
=
"Move duplicated field initialization from constructors"
,
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/MethodInlineVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.List
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.nodes.MethodInlineAttr
;
import
jadx.core.dex.info.AccessInfo
;
...
...
@@ -12,8 +14,6 @@ import jadx.core.dex.nodes.InsnNode;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.List
;
/**
* Inline synthetic methods.
*/
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.codegen.TypeGen
;
import
jadx.core.deobf.NameMapper
;
import
jadx.core.dex.attributes.AFlag
;
...
...
@@ -37,15 +46,6 @@ import jadx.core.utils.InsnUtils;
import
jadx.core.utils.InstructionRemover
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* Visitor for modify method instructions
* (remove, replace, process exception handlers)
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.Iterator
;
import
java.util.List
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.instructions.ArithNode
;
import
jadx.core.dex.instructions.ArithOp
;
...
...
@@ -13,9 +16,6 @@ import jadx.core.dex.nodes.InsnNode;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.Iterator
;
import
java.util.List
;
/**
* Prepare instructions for code generation pass,
* most of this modification breaks register dependencies,
...
...
@@ -70,6 +70,9 @@ public class PrepareForCodeGen extends AbstractVisitor {
it
.
remove
();
}
break
;
default
:
break
;
}
}
}
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/RenameVisitor.java
浏览文件 @
2c904c56
...
...
@@ -9,13 +9,10 @@ import org.apache.commons.io.FilenameUtils;
import
jadx.api.JadxArgs
;
import
jadx.core.Consts
;
import
jadx.core.codegen.TypeGen
;
import
jadx.core.deobf.Deobfuscator
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.info.ClassInfo
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.info.MethodInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.DexNode
;
import
jadx.core.dex.nodes.FieldNode
;
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.Consts
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.info.MethodInfo
;
...
...
@@ -22,13 +29,6 @@ import jadx.core.dex.nodes.InsnNode;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.dex.regions.conditions.IfCondition
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
SimplifyVisitor
extends
AbstractVisitor
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
SimplifyVisitor
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinish.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.blocksmaker
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.instructions.IfNode
;
import
jadx.core.dex.instructions.InsnType
;
...
...
@@ -11,13 +18,6 @@ import jadx.core.dex.trycatch.SplitterBlockAttr;
import
jadx.core.dex.visitors.AbstractVisitor
;
import
jadx.core.utils.BlockUtils
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
BlockFinish
extends
AbstractVisitor
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
BlockFinish
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockProcessor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.blocksmaker
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.LoopInfo
;
...
...
@@ -15,14 +23,6 @@ import jadx.core.dex.visitors.AbstractVisitor;
import
jadx.core.utils.BlockUtils
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
static
jadx
.
core
.
dex
.
visitors
.
blocksmaker
.
BlockSplitter
.
connect
;
import
static
jadx
.
core
.
dex
.
visitors
.
blocksmaker
.
BlockSplitter
.
removeConnection
;
import
static
jadx
.
core
.
utils
.
EmptyBitSet
.
EMPTY
;
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/helpers/BlocksRemoveInfo.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.blocksmaker.helpers
;
import
jadx.core.dex.instructions.args.RegisterArg
;
import
jadx.core.dex.nodes.BlockNode
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Map
;
...
...
@@ -10,6 +7,9 @@ import java.util.Set;
import
org.jetbrains.annotations.Nullable
;
import
jadx.core.dex.instructions.args.RegisterArg
;
import
jadx.core.dex.nodes.BlockNode
;
public
final
class
BlocksRemoveInfo
{
private
final
Set
<
BlocksPair
>
processed
=
new
HashSet
<>();
private
final
Set
<
BlocksPair
>
outs
=
new
HashSet
<>();
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.HashSet
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.nodes.BlockNode
;
...
...
@@ -11,12 +17,6 @@ import jadx.core.dex.visitors.AbstractVisitor;
import
jadx.core.utils.ErrorsCounter
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.HashSet
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
CheckRegions
extends
AbstractVisitor
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
CheckRegions
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/CleanRegions.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.Iterator
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.dex.nodes.IContainer
;
import
jadx.core.dex.nodes.IRegion
;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.dex.regions.Region
;
import
java.util.Iterator
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
CleanRegions
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
CleanRegions
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfMakerHelper.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.LoopInfo
;
...
...
@@ -16,13 +23,6 @@ import jadx.core.dex.regions.conditions.IfInfo;
import
jadx.core.utils.BlockUtils
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
static
jadx
.
core
.
dex
.
visitors
.
regions
.
RegionMaker
.
isEqualPaths
;
import
static
jadx
.
core
.
dex
.
visitors
.
regions
.
RegionMaker
.
isEqualReturnBlocks
;
import
static
jadx
.
core
.
utils
.
BlockUtils
.
getNextBlock
;
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.List
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.IBlock
;
...
...
@@ -13,8 +15,6 @@ import jadx.core.dex.regions.conditions.IfRegion;
import
jadx.core.dex.visitors.AbstractVisitor
;
import
jadx.core.utils.RegionUtils
;
import
java.util.List
;
import
static
jadx
.
core
.
utils
.
RegionUtils
.
insnsCount
;
public
class
IfRegionVisitor
extends
AbstractVisitor
implements
IRegionVisitor
,
IRegionIterativeVisitor
{
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.info.MethodInfo
;
import
jadx.core.dex.instructions.ArithNode
;
...
...
@@ -32,12 +38,6 @@ import jadx.core.utils.BlockUtils;
import
jadx.core.utils.InstructionRemover
;
import
jadx.core.utils.RegionUtils
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
LoopRegionVisitor
extends
AbstractVisitor
implements
IRegionVisitor
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
LoopRegionVisitor
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessTryCatchRegions.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.BitSet
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.dex.nodes.IBranchRegion
;
...
...
@@ -19,16 +29,6 @@ import jadx.core.utils.ErrorsCounter;
import
jadx.core.utils.RegionUtils
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.BitSet
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* Extract blocks to separate try/catch region
*/
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedHashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.DeclareVariablesAttr
;
...
...
@@ -20,19 +33,6 @@ import jadx.core.dex.visitors.AbstractVisitor;
import
jadx.core.utils.RegionUtils
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedHashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
ProcessVariables
extends
AbstractVisitor
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
ProcessVariables
.
class
);
...
...
@@ -72,7 +72,7 @@ public class ProcessVariables extends AbstractVisitor {
private
RegisterArg
arg
;
private
VarName
varName
;
private
IRegion
argRegion
;
private
final
Set
<
IRegion
>
us
age
=
new
LinkedHashSet
<>(
2
);
private
final
Set
<
IRegion
>
us
es
=
new
LinkedHashSet
<>(
2
);
private
final
Set
<
IRegion
>
assigns
=
new
LinkedHashSet
<>(
2
);
public
void
setArg
(
RegisterArg
arg
)
{
...
...
@@ -104,12 +104,12 @@ public class ProcessVariables extends AbstractVisitor {
}
public
Set
<
IRegion
>
getUseRegions
()
{
return
us
age
;
return
us
es
;
}
@Override
public
String
toString
()
{
return
arg
+
", a:"
+
assigns
+
", u:"
+
us
age
;
return
arg
+
", a:"
+
assigns
+
", u:"
+
us
es
;
}
}
...
...
@@ -124,7 +124,7 @@ public class ProcessVariables extends AbstractVisitor {
@Override
public
void
processBlockTraced
(
MethodNode
mth
,
IBlock
container
,
IRegion
curRegion
)
{
regionProcess
(
mth
,
curRegion
);
regionProcess
(
curRegion
);
int
len
=
container
.
getInstructions
().
size
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
InsnNode
insn
=
container
.
getInstructions
().
get
(
i
);
...
...
@@ -136,7 +136,7 @@ public class ProcessVariables extends AbstractVisitor {
}
}
private
void
regionProcess
(
MethodNode
mth
,
IRegion
region
)
{
private
void
regionProcess
(
IRegion
region
)
{
if
(
region
instanceof
LoopRegion
)
{
LoopRegion
loopRegion
=
(
LoopRegion
)
region
;
LoopType
loopType
=
loopRegion
.
getType
();
...
...
@@ -221,11 +221,10 @@ public class ProcessVariables extends AbstractVisitor {
// check if variable can be declared at current assigns
for
(
IRegion
assignRegion
:
u
.
getAssigns
())
{
if
(
u
.
getArgRegion
()
==
assignRegion
&&
canDeclareInRegion
(
u
,
assignRegion
,
regionsOrder
))
{
if
(
declareAtAssign
(
u
))
{
it
.
remove
();
break
;
}
&&
canDeclareInRegion
(
u
,
assignRegion
,
regionsOrder
)
&&
declareAtAssign
(
u
))
{
it
.
remove
();
break
;
}
}
}
...
...
@@ -274,11 +273,7 @@ public class ProcessVariables extends AbstractVisitor {
private
static
Usage
addToUsageMap
(
RegisterArg
arg
,
Map
<
Variable
,
Usage
>
usageMap
)
{
Variable
varId
=
new
Variable
(
arg
);
Usage
usage
=
usageMap
.
get
(
varId
);
if
(
usage
==
null
)
{
usage
=
new
Usage
();
usageMap
.
put
(
varId
,
usage
);
}
Usage
usage
=
usageMap
.
computeIfAbsent
(
varId
,
v
->
new
Usage
());
// merge variables names
if
(
usage
.
getVarName
()
==
null
)
{
VarName
argVN
=
arg
.
getSVar
().
getVarName
();
...
...
@@ -296,6 +291,9 @@ public class ProcessVariables extends AbstractVisitor {
private
static
boolean
declareAtAssign
(
Usage
u
)
{
RegisterArg
arg
=
u
.
getArg
();
InsnNode
parentInsn
=
arg
.
getParentInsn
();
if
(
parentInsn
==
null
)
{
return
false
;
}
if
(!
arg
.
equals
(
parentInsn
.
getResult
()))
{
return
false
;
}
...
...
@@ -312,8 +310,7 @@ public class ProcessVariables extends AbstractVisitor {
dv
.
addVar
(
arg
);
}
private
static
int
calculateOrder
(
IContainer
container
,
Map
<
IContainer
,
Integer
>
regionsOrder
,
int
id
,
boolean
inc
)
{
private
static
int
calculateOrder
(
IContainer
container
,
Map
<
IContainer
,
Integer
>
regionsOrder
,
int
id
,
boolean
inc
)
{
if
(!(
container
instanceof
IRegion
))
{
return
id
;
}
...
...
@@ -358,7 +355,7 @@ public class ProcessVariables extends AbstractVisitor {
}
private
static
boolean
isAllRegionsAfter
(
IRegion
region
,
int
pos
,
Set
<
IRegion
>
regions
,
Map
<
IContainer
,
Integer
>
regionsOrder
)
{
Set
<
IRegion
>
regions
,
Map
<
IContainer
,
Integer
>
regionsOrder
)
{
for
(
IRegion
r
:
regions
)
{
if
(
r
==
region
)
{
continue
;
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.HashSet
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.Consts
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
...
...
@@ -34,20 +48,6 @@ import jadx.core.utils.RegionUtils;
import
jadx.core.utils.exceptions.JadxOverflowException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.HashSet
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
static
jadx
.
core
.
dex
.
visitors
.
regions
.
IfMakerHelper
.
confirmMerge
;
import
static
jadx
.
core
.
dex
.
visitors
.
regions
.
IfMakerHelper
.
makeIfInfo
;
import
static
jadx
.
core
.
dex
.
visitors
.
regions
.
IfMakerHelper
.
mergeNestedIfNodes
;
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.EdgeInsnAttr
;
...
...
@@ -20,15 +29,6 @@ import jadx.core.utils.InstructionRemover;
import
jadx.core.utils.RegionUtils
;
import
jadx.core.utils.exceptions.JadxException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* Pack blocks into regions for code generation
*/
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.dex.nodes.IRegion
;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.utils.exceptions.JadxOverflowException
;
import
java.util.ArrayDeque
;
import
java.util.Collection
;
import
java.util.Deque
;
...
...
@@ -14,6 +9,11 @@ import java.util.Set;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.nodes.BlockNode
;
import
jadx.core.dex.nodes.IRegion
;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.utils.exceptions.JadxOverflowException
;
final
class
RegionStack
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
RegionStack
.
class
);
private
static
final
boolean
DEBUG
=
false
;
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/ReturnVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.List
;
import
java.util.ListIterator
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.dex.nodes.BlockNode
;
...
...
@@ -15,9 +18,6 @@ import jadx.core.dex.visitors.AbstractVisitor;
import
jadx.core.utils.exceptions.JadxException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.List
;
import
java.util.ListIterator
;
/**
* Remove unnecessary return instructions for void methods
*/
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/TernaryMod.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.HashMap
;
import
java.util.Map
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.instructions.InsnType
;
import
jadx.core.dex.instructions.PhiInsn
;
...
...
@@ -17,9 +20,6 @@ import jadx.core.dex.regions.conditions.IfRegion;
import
jadx.core.dex.visitors.CodeShrinker
;
import
jadx.core.utils.InsnList
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
TernaryMod
{
private
TernaryMod
()
{
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.regions
;
import
java.util.ArrayDeque
;
import
java.util.Deque
;
import
jadx.core.dex.nodes.IBlock
;
import
jadx.core.dex.nodes.IRegion
;
import
jadx.core.dex.nodes.MethodNode
;
import
java.util.ArrayDeque
;
import
java.util.Deque
;
public
abstract
class
TracedRegionVisitor
implements
IRegionVisitor
{
protected
final
Deque
<
IRegion
>
regionStack
=
new
ArrayDeque
<>();
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/ssa/EliminatePhiNodes.java
浏览文件 @
2c904c56
package
jadx.core.dex.visitors.ssa
;
import
java.util.Iterator
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.PhiListAttr
;
import
jadx.core.dex.instructions.InsnType
;
...
...
@@ -14,12 +20,6 @@ import jadx.core.utils.BlockUtils;
import
jadx.core.utils.exceptions.JadxException
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
java.util.Iterator
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
EliminatePhiNodes
extends
AbstractVisitor
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
EliminatePhiNodes
.
class
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/ssa/LiveVarAnalysis.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/PostTypeInference.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/export/TemplateFile.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/utils/BlockUtils.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/utils/DebugUtils.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/utils/InsnList.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/utils/InsnUtils.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/utils/InstructionRemover.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/utils/RegionUtils.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/utils/files/FileUtils.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java
浏览文件 @
2c904c56
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录