from
com.pnfsoftware.jeb.client.api
import
IClientContext
from
com.pnfsoftware.jeb.core
import
IRuntimeProject
from
com.pnfsoftware.jeb.core.actions
import
ActionXrefsData, Actions, ActionContext
from
com.pnfsoftware.jeb.core.units
import
IUnit
from
com.pnfsoftware.jeb.core.units.code.android
import
IDexUnit
from
com.pnfsoftware.jeb.core.units.code.android.dex
import
IDexMethod, IDexClass
def
Test(ctx):
input_path
=
r
"D:\tmp\2\project\about_dex_diff\code\jsq\jsq.dex"
class_sign
=
"Lcom/BestCalculatorCN/MyCalculator;"
method_sign
=
"Lcom/BestCalculatorCN/MyCalculator;->b(Lcom/BestCalculatorCN/MyCalculator;Ljava/lang/String;)V"
unit
=
ctx.
open
(input_path);
prj
=
ctx.getMainProject();
dexUnit
=
prj.findUnit(IDexUnit);
clz
=
dexUnit.getClass(class_sign);
method
=
dexUnit.getMethod(method_sign);
print
"------------------------------------------------"
actionXrefsData
=
ActionXrefsData()
actionContext
=
ActionContext(dexUnit, Actions.QUERY_XREFS, method.getItemId(),
None
)
if
unit.prepareExecution(actionContext,actionXrefsData):
for
xref_addr
in
actionXrefsData.getAddresses():
print
xref_addr
print
"------------------------------------------------"
actionXrefsData
=
ActionXrefsData()
actionContext
=
ActionContext(dexUnit, Actions.QUERY_XREFS, clz.getItemId(),
None
)
if
unit.prepareExecution(actionContext,actionXrefsData):
for
idx,xref_addr
in
enumerate
(actionXrefsData.getAddresses()):
print
idx,xref_addr