arkanalyzer 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/config/arkanalyzer.json +8 -0
  2. package/docs/IR2ts-stmt.md +81 -0
  3. package/docs/IR2ts.md +82 -0
  4. package/lib/Config.d.ts +29 -1
  5. package/lib/Config.d.ts.map +1 -1
  6. package/lib/Config.js +44 -11
  7. package/lib/Scene.d.ts +152 -9
  8. package/lib/Scene.d.ts.map +1 -1
  9. package/lib/Scene.js +233 -66
  10. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +2 -1
  11. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  12. package/lib/callgraph/algorithm/AbstractAnalysis.js +14 -7
  13. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
  14. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +2 -4
  15. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  16. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +2 -3
  17. package/lib/callgraph/common/Statistics.js +1 -1
  18. package/lib/callgraph/model/BaseGraph.js +2 -2
  19. package/lib/callgraph/model/CallGraph.d.ts +3 -2
  20. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  21. package/lib/callgraph/model/CallGraph.js +23 -14
  22. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +2 -2
  23. package/lib/callgraph/model/builder/CallGraphBuilder.js +3 -3
  24. package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -1
  25. package/lib/callgraph/pointerAnalysis/Context.js +0 -1
  26. package/lib/callgraph/pointerAnalysis/Pag.d.ts +36 -9
  27. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  28. package/lib/callgraph/pointerAnalysis/Pag.js +130 -37
  29. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +34 -5
  30. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  31. package/lib/callgraph/pointerAnalysis/PagBuilder.js +479 -126
  32. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +6 -0
  33. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  34. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +107 -45
  35. package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -1
  36. package/lib/callgraph/pointerAnalysis/PtsDS.js +0 -2
  37. package/lib/core/base/Constant.d.ts +37 -5
  38. package/lib/core/base/Constant.d.ts.map +1 -1
  39. package/lib/core/base/Constant.js +58 -8
  40. package/lib/core/base/Expr.d.ts +98 -13
  41. package/lib/core/base/Expr.d.ts.map +1 -1
  42. package/lib/core/base/Expr.js +295 -127
  43. package/lib/core/base/Local.d.ts +70 -5
  44. package/lib/core/base/Local.d.ts.map +1 -1
  45. package/lib/core/base/Local.js +77 -4
  46. package/lib/core/base/Ref.d.ts +79 -5
  47. package/lib/core/base/Ref.d.ts.map +1 -1
  48. package/lib/core/base/Ref.js +143 -38
  49. package/lib/core/base/Stmt.d.ts +126 -12
  50. package/lib/core/base/Stmt.d.ts.map +1 -1
  51. package/lib/core/base/Stmt.js +135 -28
  52. package/lib/core/base/Type.d.ts +11 -2
  53. package/lib/core/base/Type.d.ts.map +1 -1
  54. package/lib/core/base/Type.js +47 -42
  55. package/lib/core/base/Value.d.ts +24 -2
  56. package/lib/core/base/Value.d.ts.map +1 -1
  57. package/lib/core/common/ArkError.d.ts +15 -0
  58. package/lib/core/common/ArkError.d.ts.map +1 -0
  59. package/lib/core/common/ArkError.js +28 -0
  60. package/lib/core/common/ArkIRTransformer.d.ts +12 -5
  61. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  62. package/lib/core/common/ArkIRTransformer.js +90 -45
  63. package/lib/core/common/BodyBuilder.d.ts +2 -0
  64. package/lib/core/common/BodyBuilder.d.ts.map +1 -1
  65. package/lib/core/common/BodyBuilder.js +5 -2
  66. package/lib/core/common/Builtin.js +1 -1
  67. package/lib/core/common/CfgBuilder.d.ts +12 -7
  68. package/lib/core/common/CfgBuilder.d.ts.map +1 -1
  69. package/lib/core/common/CfgBuilder.js +336 -140
  70. package/lib/core/common/Const.d.ts +15 -10
  71. package/lib/core/common/Const.d.ts.map +1 -1
  72. package/lib/core/common/Const.js +18 -11
  73. package/lib/core/common/DummyMainCreater.d.ts +5 -4
  74. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  75. package/lib/core/common/DummyMainCreater.js +43 -28
  76. package/lib/core/common/EtsConst.d.ts +1 -0
  77. package/lib/core/common/EtsConst.d.ts.map +1 -1
  78. package/lib/core/common/EtsConst.js +2 -1
  79. package/lib/core/common/ExprUseReplacer.js +8 -8
  80. package/lib/core/common/IRUtils.d.ts +7 -0
  81. package/lib/core/common/IRUtils.d.ts.map +1 -1
  82. package/lib/core/common/IRUtils.js +34 -2
  83. package/lib/core/common/ModelUtils.d.ts +1 -0
  84. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  85. package/lib/core/common/ModelUtils.js +39 -36
  86. package/lib/core/common/RefUseReplacer.js +3 -3
  87. package/lib/core/common/StmtUseReplacer.js +4 -4
  88. package/lib/core/common/TSConst.d.ts +10 -3
  89. package/lib/core/common/TSConst.d.ts.map +1 -1
  90. package/lib/core/common/TSConst.js +11 -4
  91. package/lib/core/common/TypeInference.d.ts +8 -2
  92. package/lib/core/common/TypeInference.d.ts.map +1 -1
  93. package/lib/core/common/TypeInference.js +222 -90
  94. package/lib/core/common/ValueUtil.d.ts +0 -4
  95. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  96. package/lib/core/common/ValueUtil.js +10 -27
  97. package/lib/core/common/VisibleValue.js +1 -1
  98. package/lib/core/dataflow/DataflowProblem.d.ts +1 -0
  99. package/lib/core/dataflow/DataflowProblem.d.ts.map +1 -1
  100. package/lib/core/dataflow/DataflowProblem.js +4 -4
  101. package/lib/core/dataflow/DataflowSolver.d.ts +20 -16
  102. package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
  103. package/lib/core/dataflow/DataflowSolver.js +67 -78
  104. package/lib/core/dataflow/TiantAnalysis.d.ts +1 -0
  105. package/lib/core/dataflow/TiantAnalysis.d.ts.map +1 -1
  106. package/lib/core/dataflow/TiantAnalysis.js +42 -28
  107. package/lib/core/dataflow/UndefinedVariable.d.ts +15 -1
  108. package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -1
  109. package/lib/core/dataflow/UndefinedVariable.js +122 -76
  110. package/lib/core/dataflow/Util.d.ts +5 -1
  111. package/lib/core/dataflow/Util.d.ts.map +1 -1
  112. package/lib/core/dataflow/Util.js +43 -22
  113. package/lib/core/graph/BasicBlock.d.ts +72 -0
  114. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  115. package/lib/core/graph/BasicBlock.js +165 -3
  116. package/lib/core/graph/Cfg.d.ts +30 -1
  117. package/lib/core/graph/Cfg.d.ts.map +1 -1
  118. package/lib/core/graph/Cfg.js +131 -11
  119. package/lib/core/graph/DominanceFinder.js +7 -7
  120. package/lib/core/graph/DominanceTree.js +4 -4
  121. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  122. package/lib/core/graph/builder/ViewTreeBuilder.js +6 -5
  123. package/lib/core/model/ArkBaseModel.d.ts +59 -0
  124. package/lib/core/model/ArkBaseModel.d.ts.map +1 -0
  125. package/lib/core/model/ArkBaseModel.js +271 -0
  126. package/lib/core/model/ArkBody.d.ts +3 -9
  127. package/lib/core/model/ArkBody.d.ts.map +1 -1
  128. package/lib/core/model/ArkBody.js +3 -14
  129. package/lib/core/model/ArkClass.d.ts +107 -13
  130. package/lib/core/model/ArkClass.d.ts.map +1 -1
  131. package/lib/core/model/ArkClass.js +152 -54
  132. package/lib/core/model/ArkExport.d.ts +8 -7
  133. package/lib/core/model/ArkExport.d.ts.map +1 -1
  134. package/lib/core/model/ArkExport.js +16 -18
  135. package/lib/core/model/ArkField.d.ts +16 -13
  136. package/lib/core/model/ArkField.d.ts.map +1 -1
  137. package/lib/core/model/ArkField.js +18 -62
  138. package/lib/core/model/ArkFile.d.ts +42 -0
  139. package/lib/core/model/ArkFile.d.ts.map +1 -1
  140. package/lib/core/model/ArkFile.js +58 -0
  141. package/lib/core/model/ArkImport.d.ts +9 -7
  142. package/lib/core/model/ArkImport.d.ts.map +1 -1
  143. package/lib/core/model/ArkImport.js +11 -12
  144. package/lib/core/model/ArkMetadata.d.ts +20 -0
  145. package/lib/core/model/ArkMetadata.d.ts.map +1 -0
  146. package/lib/core/model/ArkMetadata.js +44 -0
  147. package/lib/core/model/ArkMethod.d.ts +195 -17
  148. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  149. package/lib/core/model/ArkMethod.js +363 -46
  150. package/lib/core/model/ArkNamespace.d.ts +6 -8
  151. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  152. package/lib/core/model/ArkNamespace.js +16 -20
  153. package/lib/core/model/ArkSignature.d.ts +41 -0
  154. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  155. package/lib/core/model/ArkSignature.js +76 -19
  156. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  157. package/lib/core/model/builder/ArkClassBuilder.js +60 -49
  158. package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
  159. package/lib/core/model/builder/ArkExportBuilder.js +12 -6
  160. package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  161. package/lib/core/model/builder/ArkFieldBuilder.js +13 -9
  162. package/lib/core/model/builder/ArkFileBuilder.js +1 -3
  163. package/lib/core/model/builder/ArkImportBuilder.d.ts +2 -1
  164. package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
  165. package/lib/core/model/builder/ArkImportBuilder.js +16 -13
  166. package/lib/core/model/builder/ArkMethodBuilder.d.ts +3 -1
  167. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  168. package/lib/core/model/builder/ArkMethodBuilder.js +105 -45
  169. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  170. package/lib/core/model/builder/ArkNamespaceBuilder.js +4 -5
  171. package/lib/core/model/builder/builderUtils.d.ts +2 -1
  172. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  173. package/lib/core/model/builder/builderUtils.js +63 -43
  174. package/lib/index.d.ts +2 -1
  175. package/lib/index.d.ts.map +1 -1
  176. package/lib/index.js +4 -3
  177. package/lib/save/ArkStream.js +1 -1
  178. package/lib/save/DotPrinter.d.ts.map +1 -1
  179. package/lib/save/DotPrinter.js +1 -15
  180. package/lib/save/GraphPrinter.d.ts.map +1 -1
  181. package/lib/save/GraphPrinter.js +4 -2
  182. package/lib/save/JsonPrinter.js +5 -5
  183. package/lib/save/ViewTreePrinter.d.ts +16 -0
  184. package/lib/save/ViewTreePrinter.d.ts.map +1 -0
  185. package/lib/save/ViewTreePrinter.js +130 -0
  186. package/lib/save/source/SourceBase.d.ts +2 -2
  187. package/lib/save/source/SourceBase.d.ts.map +1 -1
  188. package/lib/save/source/SourceBase.js +6 -13
  189. package/lib/save/source/SourceBody.d.ts.map +1 -1
  190. package/lib/save/source/SourceBody.js +27 -14
  191. package/lib/save/source/SourceClass.d.ts.map +1 -1
  192. package/lib/save/source/SourceClass.js +12 -8
  193. package/lib/save/source/SourceField.d.ts.map +1 -1
  194. package/lib/save/source/SourceField.js +6 -2
  195. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  196. package/lib/save/source/SourceMethod.js +10 -3
  197. package/lib/save/source/SourceModule.d.ts.map +1 -1
  198. package/lib/save/source/SourceModule.js +16 -10
  199. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  200. package/lib/save/source/SourceNamespace.js +4 -0
  201. package/lib/save/source/SourceStmt.d.ts +1 -1
  202. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  203. package/lib/save/source/SourceStmt.js +37 -25
  204. package/lib/save/source/SourceTransformer.d.ts +6 -0
  205. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  206. package/lib/save/source/SourceTransformer.js +82 -51
  207. package/lib/save/source/SourceUtils.d.ts.map +1 -1
  208. package/lib/save/source/SourceUtils.js +12 -11
  209. package/lib/transformer/StaticSingleAssignmentFormer.js +3 -3
  210. package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
  211. package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
  212. package/lib/utils/CfgStructualAnalysis.js +103 -72
  213. package/lib/utils/callGraphUtils.d.ts.map +1 -1
  214. package/lib/utils/callGraphUtils.js +7 -10
  215. package/lib/utils/crypto_utils.d.ts +6 -0
  216. package/lib/utils/crypto_utils.d.ts.map +1 -0
  217. package/lib/utils/crypto_utils.js +57 -0
  218. package/lib/utils/entryMethodUtils.d.ts.map +1 -1
  219. package/lib/utils/entryMethodUtils.js +27 -26
  220. package/lib/utils/getAllFiles.d.ts +1 -1
  221. package/lib/utils/getAllFiles.d.ts.map +1 -1
  222. package/lib/utils/getAllFiles.js +4 -5
  223. package/lib/utils/logger.js +2 -2
  224. package/package.json +3 -2
@@ -37,7 +37,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
37
37
  return result;
38
38
  };
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.FuncPag = exports.Pag = exports.PagGlobalThisNode = exports.PagFuncNode = exports.PagParamNode = exports.PagNewArrayExprNode = exports.PagNewExprNode = exports.PagArrayNode = exports.PagThisRefNode = exports.PagStaticFieldNode = exports.PagInstanceFieldNode = exports.PagLocalNode = exports.PagNode = exports.PagNodeKind = exports.ThisPagEdge = exports.WritePagEdge = exports.LoadPagEdge = exports.CopyPagEdge = exports.AddrPagEdge = exports.PagEdge = exports.GLOBAL_THIS = exports.StorageLinkEdgeType = exports.StorageType = exports.PagEdgeKind = void 0;
40
+ exports.InterFuncPag = exports.FuncPag = exports.Pag = exports.PagGlobalThisNode = exports.PagFuncNode = exports.PagParamNode = exports.PagNewArrayExprNode = exports.PagNewExprNode = exports.PagArrayNode = exports.PagThisRefNode = exports.PagStaticFieldNode = exports.PagInstanceFieldNode = exports.PagLocalNode = exports.PagNode = exports.PagNodeKind = exports.ThisPagEdge = exports.WritePagEdge = exports.LoadPagEdge = exports.CopyPagEdge = exports.AddrPagEdge = exports.PagEdge = exports.StorageLinkEdgeType = exports.StorageType = exports.PagEdgeKind = void 0;
41
41
  const BaseGraph_1 = require("../model/BaseGraph");
42
42
  const Stmt_1 = require("../../core/base/Stmt");
43
43
  const Expr_1 = require("../../core/base/Expr");
@@ -48,6 +48,8 @@ const PrinterBuilder_1 = require("../../save/PrinterBuilder");
48
48
  const Constant_1 = require("../../core/base/Constant");
49
49
  const Type_1 = require("../../core/base/Type");
50
50
  const logger_1 = __importStar(require("../../utils/logger"));
51
+ const TSConst_1 = require("../../core/common/TSConst");
52
+ const ArkExport_1 = require("../../core/model/ArkExport");
51
53
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'PTA');
52
54
  /*
53
55
  * Implementation of pointer-to assignment graph for pointer analysis
@@ -61,22 +63,22 @@ var PagEdgeKind;
61
63
  PagEdgeKind[PagEdgeKind["Write"] = 3] = "Write";
62
64
  PagEdgeKind[PagEdgeKind["This"] = 4] = "This";
63
65
  PagEdgeKind[PagEdgeKind["Unknown"] = 5] = "Unknown";
64
- })(PagEdgeKind || (exports.PagEdgeKind = PagEdgeKind = {}));
66
+ PagEdgeKind[PagEdgeKind["InterProceduralCopy"] = 6] = "InterProceduralCopy";
67
+ })(PagEdgeKind = exports.PagEdgeKind || (exports.PagEdgeKind = {}));
65
68
  ;
66
69
  var StorageType;
67
70
  (function (StorageType) {
68
71
  StorageType[StorageType["APP_STORAGE"] = 0] = "APP_STORAGE";
69
72
  StorageType[StorageType["LOCAL_STORAGE"] = 1] = "LOCAL_STORAGE";
70
73
  StorageType[StorageType["Undefined"] = 2] = "Undefined";
71
- })(StorageType || (exports.StorageType = StorageType = {}));
74
+ })(StorageType = exports.StorageType || (exports.StorageType = {}));
72
75
  ;
73
76
  var StorageLinkEdgeType;
74
77
  (function (StorageLinkEdgeType) {
75
78
  StorageLinkEdgeType[StorageLinkEdgeType["Property2Local"] = 0] = "Property2Local";
76
79
  StorageLinkEdgeType[StorageLinkEdgeType["Local2Property"] = 1] = "Local2Property";
77
80
  StorageLinkEdgeType[StorageLinkEdgeType["TwoWay"] = 2] = "TwoWay";
78
- })(StorageLinkEdgeType || (exports.StorageLinkEdgeType = StorageLinkEdgeType = {}));
79
- exports.GLOBAL_THIS = 'globaThis';
81
+ })(StorageLinkEdgeType = exports.StorageLinkEdgeType || (exports.StorageLinkEdgeType = {}));
80
82
  class PagEdge extends BaseGraph_1.BaseEdge {
81
83
  constructor(n, d, k, s) {
82
84
  super(n, d, k);
@@ -89,7 +91,7 @@ class PagEdge extends BaseGraph_1.BaseEdge {
89
91
  case PagEdgeKind.Address:
90
92
  return "color=green";
91
93
  case PagEdgeKind.Copy:
92
- if (((_a = this.stmt) === null || _a === void 0 ? void 0 : _a.getInvokeExpr()) != undefined || this.stmt instanceof Stmt_1.ArkReturnStmt) {
94
+ if (((_a = this.stmt) === null || _a === void 0 ? void 0 : _a.getInvokeExpr()) !== undefined || this.stmt instanceof Stmt_1.ArkReturnStmt) {
93
95
  return "color=black,style=dotted";
94
96
  }
95
97
  return "color=black";
@@ -99,6 +101,8 @@ class PagEdge extends BaseGraph_1.BaseEdge {
99
101
  return "color=blue";
100
102
  case PagEdgeKind.This:
101
103
  return "color=orange";
104
+ case PagEdgeKind.InterProceduralCopy:
105
+ return "color=purple,style=dashed";
102
106
  default:
103
107
  return "color=black";
104
108
  }
@@ -149,7 +153,8 @@ var PagNodeKind;
149
153
  PagNodeKind[PagNodeKind["ThisRef"] = 4] = "ThisRef";
150
154
  PagNodeKind[PagNodeKind["Function"] = 5] = "Function";
151
155
  PagNodeKind[PagNodeKind["GlobalThis"] = 6] = "GlobalThis";
152
- })(PagNodeKind || (exports.PagNodeKind = PagNodeKind = {}));
156
+ PagNodeKind[PagNodeKind["ExportInfo"] = 7] = "ExportInfo";
157
+ })(PagNodeKind = exports.PagNodeKind || (exports.PagNodeKind = {}));
153
158
  class PagNode extends BaseGraph_1.BaseNode {
154
159
  constructor(id, cid = undefined, value, k, s) {
155
160
  super(id, k);
@@ -165,7 +170,7 @@ class PagNode extends BaseGraph_1.BaseNode {
165
170
  this.basePt = pt;
166
171
  }
167
172
  getCid() {
168
- if (this.cid == undefined) {
173
+ if (this.cid === undefined) {
169
174
  throw new Error('cid is undefine');
170
175
  }
171
176
  return this.cid;
@@ -204,32 +209,32 @@ class PagNode extends BaseGraph_1.BaseNode {
204
209
  return this.thisInEdges;
205
210
  }
206
211
  addAddressInEdge(e) {
207
- this.addressInEdges == undefined ? this.addressInEdges = new Set() : undefined;
212
+ this.addressInEdges === undefined ? this.addressInEdges = new Set() : undefined;
208
213
  this.addressInEdges.add(e);
209
214
  this.addIncomingEdge(e);
210
215
  }
211
216
  addAddressOutEdge(e) {
212
- this.addressOutEdges == undefined ? this.addressOutEdges = new Set() : undefined;
217
+ this.addressOutEdges === undefined ? this.addressOutEdges = new Set() : undefined;
213
218
  this.addressOutEdges.add(e);
214
219
  this.addOutgoingEdge(e);
215
220
  }
216
221
  addCopyInEdge(e) {
217
- this.copyInEdges == undefined ? this.copyInEdges = new Set() : undefined;
222
+ this.copyInEdges === undefined ? this.copyInEdges = new Set() : undefined;
218
223
  this.copyInEdges.add(e);
219
224
  this.addIncomingEdge(e);
220
225
  }
221
226
  addCopyOutEdge(e) {
222
- this.copyOutEdges == undefined ? this.copyOutEdges = new Set() : undefined;
227
+ this.copyOutEdges === undefined ? this.copyOutEdges = new Set() : undefined;
223
228
  this.copyOutEdges.add(e);
224
229
  this.addOutgoingEdge(e);
225
230
  }
226
231
  addLoadInEdge(e) {
227
- this.loadInEdges == undefined ? this.loadInEdges = new Set() : undefined;
232
+ this.loadInEdges === undefined ? this.loadInEdges = new Set() : undefined;
228
233
  this.loadInEdges.add(e);
229
234
  this.addIncomingEdge(e);
230
235
  }
231
236
  addLoadOutEdge(e) {
232
- this.loadOutEdges == undefined ? this.loadOutEdges = new Set() : undefined;
237
+ this.loadOutEdges === undefined ? this.loadOutEdges = new Set() : undefined;
233
238
  this.loadOutEdges.add(e);
234
239
  this.addOutgoingEdge(e);
235
240
  }
@@ -295,6 +300,10 @@ class PagNode extends BaseGraph_1.BaseNode {
295
300
  return 'shape=component';
296
301
  case PagNodeKind.Param:
297
302
  return 'shape=box';
303
+ case PagNodeKind.ExportInfo:
304
+ return 'shape=tab,color=purple';
305
+ case PagNodeKind.ThisRef:
306
+ return 'shape=box,color=orange';
298
307
  default:
299
308
  return 'shape=box';
300
309
  }
@@ -309,11 +318,11 @@ class PagNode extends BaseGraph_1.BaseNode {
309
318
  label = label + ` base:{${this.basePt}}`;
310
319
  }
311
320
  label = label + ` pts:{${Array.from(this.pointTo).join(',')}}`;
312
- if (this.getKind() == PagNodeKind.Param) {
321
+ if (this.getKind() === PagNodeKind.Param) {
313
322
  param = this.value;
314
323
  label = label + `\nParam#${param.getIndex()} ${param.toString()}`;
315
324
  }
316
- if (this.getKind() == PagNodeKind.ThisRef) {
325
+ if (this.getKind() === PagNodeKind.ThisRef) {
317
326
  label = label + `\n${this.value.toString()}`;
318
327
  }
319
328
  if (this.stmt) {
@@ -332,6 +341,7 @@ class PagLocalNode extends PagNode {
332
341
  constructor(id, cid = undefined, value, stmt) {
333
342
  super(id, cid, value, PagNodeKind.LocalVar, stmt);
334
343
  this.storageLinked = false;
344
+ this.sdkParam = false;
335
345
  }
336
346
  addRelatedDynCallSite(cs) {
337
347
  var _a;
@@ -339,7 +349,17 @@ class PagLocalNode extends PagNode {
339
349
  this.relatedDynamicCallSite.add(cs);
340
350
  }
341
351
  getRelatedDynCallSites() {
342
- return this.relatedDynamicCallSite;
352
+ var _a;
353
+ return (_a = this.relatedDynamicCallSite) !== null && _a !== void 0 ? _a : new Set();
354
+ }
355
+ addRelatedUnknownCallSite(cs) {
356
+ var _a;
357
+ this.relatedUnknownCallSite = (_a = this.relatedUnknownCallSite) !== null && _a !== void 0 ? _a : new Set();
358
+ this.relatedUnknownCallSite.add(cs);
359
+ }
360
+ getRelatedUnknownCallSites() {
361
+ var _a;
362
+ return (_a = this.relatedUnknownCallSite) !== null && _a !== void 0 ? _a : new Set();
343
363
  }
344
364
  setStorageLink(storageType, propertyName) {
345
365
  this.storageLinked = true;
@@ -355,6 +375,12 @@ class PagLocalNode extends PagNode {
355
375
  isStorageLinked() {
356
376
  return this.storageLinked;
357
377
  }
378
+ setSdkParam() {
379
+ this.sdkParam = true;
380
+ }
381
+ isSdkParam() {
382
+ return this.sdkParam;
383
+ }
358
384
  }
359
385
  exports.PagLocalNode = PagLocalNode;
360
386
  class PagInstanceFieldNode extends PagNode {
@@ -443,8 +469,11 @@ class PagParamNode extends PagNode {
443
469
  exports.PagParamNode = PagParamNode;
444
470
  class PagFuncNode extends PagNode {
445
471
  // TODO: may add obj interface
446
- constructor(id, cid = undefined, r, stmt) {
472
+ constructor(id, cid = undefined, r, stmt, method) {
447
473
  super(id, cid, r, PagNodeKind.Function, stmt);
474
+ if (method) {
475
+ this.methodSignature = method;
476
+ }
448
477
  }
449
478
  setMethod(method) {
450
479
  this.methodSignature = method;
@@ -497,7 +526,7 @@ class Pag extends BaseGraph_1.BaseGraph {
497
526
  * but different Node ID
498
527
  */
499
528
  getOrClonePagNode(src, basePt) {
500
- if (src.getBasePt() != undefined) {
529
+ if (src.getBasePt() !== undefined) {
501
530
  throw new Error('This is a cloned ref node, can not be cloned again');
502
531
  }
503
532
  let cloneSet = this.clonedNodeMap.get(src.getID());
@@ -543,7 +572,6 @@ class Pag extends BaseGraph_1.BaseGraph {
543
572
  if (existedNode) {
544
573
  return this.getNode(existedNode);
545
574
  }
546
- // let arrayBase: Local = (src.getValue() as ArkArrayRef).getBase()
547
575
  let fieldNode = this.getOrClonePagNode(src, basePt);
548
576
  baseNode.addElementNode(fieldNode.getID());
549
577
  fieldNode.setBasePt(basePt);
@@ -561,16 +589,13 @@ class Pag extends BaseGraph_1.BaseGraph {
561
589
  if (valueType instanceof Type_1.FunctionType &&
562
590
  (value.getDeclaringStmt() === null)) {
563
591
  // init function pointer
564
- pagNode = new PagFuncNode(id, cid, value, stmt);
565
- if (pagNode instanceof PagFuncNode) {
566
- pagNode.setMethod(valueType.getMethodSignature());
567
- }
592
+ pagNode = new PagFuncNode(id, cid, value, stmt, valueType.getMethodSignature());
568
593
  }
569
594
  else {
570
595
  // judge 'globalThis' is a redefined Local or real globalThis with its declaring stmt
571
596
  // value has been replaced in param
572
- if (value.getName() == exports.GLOBAL_THIS && value.getDeclaringStmt() == null) {
573
- pagNode = new PagGlobalThisNode(id, 0, value);
597
+ if (value.getName() === TSConst_1.GLOBAL_THIS && value.getDeclaringStmt() == null) {
598
+ pagNode = new PagGlobalThisNode(id, -1, value);
574
599
  }
575
600
  else {
576
601
  pagNode = new PagLocalNode(id, cid, value, stmt);
@@ -578,10 +603,24 @@ class Pag extends BaseGraph_1.BaseGraph {
578
603
  }
579
604
  }
580
605
  else if (value instanceof Ref_1.ArkInstanceFieldRef) {
581
- pagNode = new PagInstanceFieldNode(id, cid, value, stmt);
606
+ if (value.getType() instanceof Type_1.FunctionType) {
607
+ // function ptr: let ptr = Class.MethodA
608
+ pagNode = new PagFuncNode(id, cid, value, stmt, value.getType().getMethodSignature());
609
+ }
610
+ else {
611
+ // normal field
612
+ pagNode = new PagInstanceFieldNode(id, cid, value, stmt);
613
+ }
582
614
  }
583
615
  else if (value instanceof Ref_1.ArkStaticFieldRef) {
584
- pagNode = new PagStaticFieldNode(id, cid, value, stmt);
616
+ if (value.getType() instanceof Type_1.FunctionType) {
617
+ // function ptr: let ptr = Class.StaticMethodA
618
+ pagNode = new PagFuncNode(id, cid, value, stmt, value.getType().getMethodSignature());
619
+ }
620
+ else {
621
+ // normal field
622
+ pagNode = new PagStaticFieldNode(id, cid, value, stmt);
623
+ }
585
624
  }
586
625
  else if (value instanceof Ref_1.ArkArrayRef) {
587
626
  pagNode = new PagArrayNode(id, cid, value, stmt);
@@ -602,9 +641,21 @@ class Pag extends BaseGraph_1.BaseGraph {
602
641
  throw new Error('unsupported Value type ' + value.getType().toString());
603
642
  }
604
643
  this.addNode(pagNode);
605
- this.addContextMap(refresh, cid, id, value, stmt, pagNode);
644
+ // Value
645
+ if (!(value instanceof ArkExport_1.ExportInfo)) {
646
+ this.addContextMap(refresh, cid, id, value, stmt, pagNode);
647
+ }
648
+ else {
649
+ // ExportInfo
650
+ this.addExportInfoMap(id, value);
651
+ }
606
652
  return pagNode;
607
653
  }
654
+ addExportInfoMap(id, v) {
655
+ var _a;
656
+ this.ExportInfoToIdMap = (_a = this.ExportInfoToIdMap) !== null && _a !== void 0 ? _a : new Map();
657
+ this.ExportInfoToIdMap.set(v, id);
658
+ }
608
659
  addContextMap(refresh, cid, id, value, stmt, pagNode) {
609
660
  var _a;
610
661
  if (!refresh) {
@@ -618,7 +669,7 @@ class Pag extends BaseGraph_1.BaseGraph {
618
669
  ctx2NdMap.set(cid, id);
619
670
  if (value instanceof Ref_1.ArkInstanceFieldRef || value instanceof Ref_1.ArkArrayRef) {
620
671
  let base = value.getBase();
621
- //TODO: remove below once this Local is not uniq in @instance_init is fix
672
+ //TODO: remove below once this Local is not uniq in %instInit is fix
622
673
  if (base instanceof Local_1.Local && base.getName() === 'this') {
623
674
  (_a = stmt === null || stmt === void 0 ? void 0 : stmt.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts().forEach(s => {
624
675
  if (s instanceof Stmt_1.ArkAssignStmt &&
@@ -664,20 +715,25 @@ class Pag extends BaseGraph_1.BaseGraph {
664
715
  return pagNode;
665
716
  }
666
717
  getOrNewThisRefNode(thisRefNodeID, value) {
667
- if (thisRefNodeID != -1) {
718
+ if (thisRefNodeID !== -1) {
668
719
  return this.getNode(thisRefNodeID);
669
720
  }
670
721
  let thisRefNode = this.addPagThisRefNode(value);
671
722
  return thisRefNode;
672
723
  }
673
724
  getOrNewThisLocalNode(cid, ptNode, value, s) {
674
- if (ptNode != -1) {
725
+ if (ptNode !== -1) {
675
726
  return this.getNode(ptNode);
676
727
  }
677
728
  else {
678
729
  return this.getOrNewNode(cid, value, s);
679
730
  }
680
731
  }
732
+ hasExportNode(v) {
733
+ var _a;
734
+ this.ExportInfoToIdMap = (_a = this.ExportInfoToIdMap) !== null && _a !== void 0 ? _a : new Map();
735
+ return this.ExportInfoToIdMap.get(v);
736
+ }
681
737
  hasCtxNode(cid, v) {
682
738
  let ctx2nd = this.contextValueToIdMap.get(v);
683
739
  if (!ctx2nd) {
@@ -701,8 +757,16 @@ class Pag extends BaseGraph_1.BaseGraph {
701
757
  return ndId;
702
758
  }
703
759
  getOrNewNode(cid, v, s) {
704
- let nodeId = this.hasCtxNode(cid, v);
705
- if (nodeId != undefined) {
760
+ let nodeId = undefined;
761
+ // Value
762
+ if (!(v instanceof ArkExport_1.ExportInfo)) {
763
+ nodeId = this.hasCtxNode(cid, v);
764
+ }
765
+ else {
766
+ // ExportInfo
767
+ nodeId = this.hasExportNode(v);
768
+ }
769
+ if (nodeId !== undefined) {
706
770
  return this.getNode(nodeId);
707
771
  }
708
772
  return this.addPagNode(cid, v, s);
@@ -719,12 +783,18 @@ class Pag extends BaseGraph_1.BaseGraph {
719
783
  if (this.ifEdgeExisting(edge)) {
720
784
  return false;
721
785
  }
722
- //src.addOutgoingEdge(edge);
723
- //dst.addIncomingEdge(edge);
724
786
  switch (kind) {
725
787
  case PagEdgeKind.Copy:
788
+ case PagEdgeKind.InterProceduralCopy:
726
789
  src.addCopyOutEdge(edge);
727
790
  dst.addCopyInEdge(edge);
791
+ if (src instanceof PagFuncNode ||
792
+ src instanceof PagGlobalThisNode ||
793
+ src instanceof PagNewExprNode ||
794
+ src instanceof PagNewArrayExprNode) {
795
+ this.addrEdge.add(edge);
796
+ this.stashAddrEdge.add(edge);
797
+ }
728
798
  break;
729
799
  case PagEdgeKind.Address:
730
800
  src.addAddressOutEdge(edge);
@@ -743,6 +813,7 @@ class Pag extends BaseGraph_1.BaseGraph {
743
813
  case PagEdgeKind.This:
744
814
  src.addThisOutEdge(edge);
745
815
  dst.addThisInEdge(edge);
816
+ break;
746
817
  default:
747
818
  ;
748
819
  }
@@ -787,8 +858,18 @@ class FuncPag {
787
858
  this.dynamicCallSites = (_a = this.dynamicCallSites) !== null && _a !== void 0 ? _a : new Set();
788
859
  return this.dynamicCallSites;
789
860
  }
861
+ addUnknownCallSite(cs) {
862
+ var _a;
863
+ this.unknownCallSites = (_a = this.unknownCallSites) !== null && _a !== void 0 ? _a : new Set();
864
+ this.unknownCallSites.add(cs);
865
+ }
866
+ getUnknownCallSites() {
867
+ var _a;
868
+ this.unknownCallSites = (_a = this.unknownCallSites) !== null && _a !== void 0 ? _a : new Set();
869
+ return this.unknownCallSites;
870
+ }
790
871
  addInternalEdge(stmt, k) {
791
- this.internalEdges == undefined ? this.internalEdges = new Set() : undefined;
872
+ this.internalEdges === undefined ? this.internalEdges = new Set() : undefined;
792
873
  let lhOp = stmt.getLeftOp();
793
874
  let rhOp = stmt.getRightOp();
794
875
  if (rhOp instanceof Constant_1.Constant) {
@@ -800,3 +881,15 @@ class FuncPag {
800
881
  }
801
882
  }
802
883
  exports.FuncPag = FuncPag;
884
+ class InterFuncPag {
885
+ constructor() {
886
+ this.interFuncEdges = new Set();
887
+ }
888
+ getInterProceduralEdges() {
889
+ return this.interFuncEdges;
890
+ }
891
+ addToInterProceduralEdgeSet(e) {
892
+ this.interFuncEdges.add(e);
893
+ }
894
+ }
895
+ exports.InterFuncPag = InterFuncPag;
@@ -6,7 +6,7 @@ import { Value } from '../../core/base/Value';
6
6
  import { Local } from '../../core/base/Local';
7
7
  import { NodeID } from '../model/BaseGraph';
8
8
  import { ContextID } from './Context';
9
- import { Pag, FuncPag, PagNode, StorageType } from './Pag';
9
+ import { Pag, FuncPag, PagNode, StorageType, InterFuncPag, PagNodeType } from './Pag';
10
10
  import { PtsSet } from './PtsDS';
11
11
  export declare class CSFuncID {
12
12
  cid: ContextID;
@@ -17,6 +17,7 @@ export declare class PagBuilder {
17
17
  private pag;
18
18
  private cg;
19
19
  private funcPags;
20
+ private interFuncPags?;
20
21
  private handledFunc;
21
22
  private ctx;
22
23
  private scene;
@@ -28,11 +29,15 @@ export declare class PagBuilder {
28
29
  private cid2ThisRefMap;
29
30
  private cid2ThisLocalMap;
30
31
  private sdkMethodReturnValueMap;
32
+ private sdkMethodParamValueMap;
33
+ private fakeSdkMethodParamDeclaringStmt;
31
34
  private funcHandledThisRound;
32
35
  private updatedNodesThisRound;
33
36
  private singletonFuncMap;
34
- private globalThisValue?;
37
+ private globalThisValue;
38
+ private globalThisPagNode?;
35
39
  private storagePropertyMap;
40
+ private externalScopeVariableMap;
36
41
  constructor(p: Pag, cg: CallGraph, s: Scene, kLimit: number);
37
42
  private buildFuncPagAndAddToWorklist;
38
43
  private addToFuncHandledListThisRound;
@@ -40,6 +45,10 @@ export declare class PagBuilder {
40
45
  handleReachable(): boolean;
41
46
  build(): void;
42
47
  buildFuncPag(funcID: FuncID): boolean;
48
+ /**
49
+ * will not create real funcPag, only create param values
50
+ */
51
+ private buildSDKFuncPag;
43
52
  buildPagFromFuncPag(funcID: FuncID, cid: ContextID): void;
44
53
  addEdgesFromFuncPag(funcPag: FuncPag, cid: ContextID): boolean;
45
54
  addCallsEdgesFromFuncPag(funcPag: FuncPag, cid: ContextID): boolean;
@@ -53,8 +62,11 @@ export declare class PagBuilder {
53
62
  private processStorageProp;
54
63
  private processStorageSet;
55
64
  private processStorageGet;
56
- addDynamicCallSite(funcPag: FuncPag): void;
57
- addDynamicCallEdge(cs: DynCallSite, baseClassPTNode: NodeID, cid: ContextID): NodeID[];
65
+ private getPropertyName;
66
+ addDynamicCallSite(funcPag: FuncPag, funcID: FuncID): void;
67
+ addUnknownCallSite(funcPag: FuncPag, funcID: FuncID): void;
68
+ addDynamicCallEdge(cs: DynCallSite | CallSite, baseClassPTNode: NodeID, cid: ContextID): NodeID[];
69
+ private getDynamicCallee;
58
70
  addUpdatedNode(nodeID: NodeID, diffPT: PtsSet<NodeID>): void;
59
71
  getUpdatedNodes(): Map<number, PtsSet<number>>;
60
72
  resetUpdatedNodes(): void;
@@ -62,7 +74,10 @@ export declare class PagBuilder {
62
74
  handleUnprocessedCallSites(processedCallSites: Set<DynCallSite>): NodeID[];
63
75
  private addThisRefCallEdge;
64
76
  addStaticPagCallEdge(cs: CallSite, callerCid: ContextID, calleeCid?: ContextID): NodeID[];
65
- getOrNewPagNode(cid: ContextID, v: Value, s?: Stmt): PagNode;
77
+ private addSDKMethodPagCallEdge;
78
+ private addSDKMethodReturnPagEdge;
79
+ private addSDKMethodParamPagEdge;
80
+ getOrNewPagNode(cid: ContextID, v: PagNodeType, s?: Stmt): PagNode;
66
81
  /**
67
82
  * return ThisRef PAG node according to cid, a cid has a unique ThisRef node
68
83
  * @param cid: current contextID
@@ -123,5 +138,19 @@ export declare class PagBuilder {
123
138
  printStat(): void;
124
139
  getUnhandledFuncs(): FuncID[];
125
140
  getHandledFuncs(): FuncID[];
141
+ /**
142
+ * build export edge in internal func pag
143
+ * @param value: Value that need to check if it is from import/export
144
+ * @param originValue: if Value if InstanceFieldRef, the base will be passed to `value` recursively,
145
+ * fieldRef will be passed to `originValue`
146
+ */
147
+ private handleValueFromExternalScope;
148
+ private addInterFuncEdge;
149
+ private getSourceValueFromExternalScope;
150
+ private getDefaultMethodSourceValue;
151
+ private getExportSourceValue;
152
+ private addExportVariableMap;
153
+ getExportVariableMap(src: Local): Local[];
154
+ addEdgesFromInterFuncPag(interFuncPag: InterFuncPag, cid: ContextID): boolean;
126
155
  }
127
156
  //# sourceMappingURL=PagBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PagBuilder.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PagBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PagBuilder.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PagBuilder.ts"],"names":[],"mappings":"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"}