首页
社区
课程
招聘
[求助][原创]有什么好用的修改dex代码的工具
发表于: 2024-5-22 19:16 2584

[求助][原创]有什么好用的修改dex代码的工具

2024-5-22 19:16
2584

佬们, 比如我需要删除java中插入的垃圾指令,有啥可用的工具
jeb脚本没有找到删除Call块的api
gda就算了 动不动崩溃一下


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 562
活跃值: (4190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

class Delete(IScript):
    def __init__(self):
        self.ctx = None
        self.mainProject = None
        self.ddd = None

    def run(self, ctx):
        self.ctx = ctx
        self.mainProject = ctx.getMainProject()
        self.createNullCall()

        for unit in self.mainProject.findUnits(IJavaSourceUnit):
            c = unit.getClassElement()
            if c.getName() != "La/a/a/b;":
                continue
            for m in c.getMethods():
                self.decryptMethodStrings(m)
                self.displayTree(m)
            unit.notifyGenericChange()

    def createNullCall(self):
        dex = self.mainProject.findUnit(IDexUnit)
        print(dex)
        m = dex.addMethod("La/a/a/b;->null2()V")
        dexDecompilerUnit = DecompilerHelper.getDecompiler(dex)
        javaMethod = dexDecompilerUnit.decompileMethod("La/a/a/b;->null2()V")
        javaMethod = dexDecompilerUnit.getMethod("La/a/a/b;->null2()V", False)
        u = self.mainProject.findUnit(IJavaSourceUnit)
        print(u)
        self.cstbuilder = u.getFactories()
        self.nullcall = self.cstbuilder.createCall(javaMethod, 3)
        print(self.nullcall)

    def decryptMethodStrings(self, javaMethod):
        block = javaMethod.getBody()
        i = 0
        while i < block.size():
            stm = block.get(i)
            self.checkElement(block, stm)
            i += 1

    def checkElement(self, parent, e):
        if isinstance(e, IJavaCall):
            r = parent.replaceSubElement(e, self.nullcall)
            print("replace", e, r)
        for subelt in e.getSubElements():
            self.checkElement(e, subelt) 
    def dealElem(self, m, e):
        if e.getElementType() == JavaElementType.Call:
            r = m.replaceSubElement(e, self.cstbuilder.createBlock())
            # r = e.replaceSubElement(e, self.cstbuilder.createBlock())
            print(e, r)
            return
        for item in e.getSubElements():
            self.dealElem(m, item)
2024-5-22 19:17
0
雪    币: 562
活跃值: (4190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
扣破脑子写的代码, 用空函数替换掉垃圾指令 但是执行会崩溃
2024-5-22 19:20
0
游客
登录 | 注册 方可回帖
返回
//