新开源的一个轻量的 android dex 文件的 c 解析库,欢迎试用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
waruqi
V2EX    程序员

新开源的一个轻量的 android dex 文件的 c 解析库,欢迎试用

  •  
  •   waruqi
    waruqi 2020 年 6 月 12 日 1548 次点击
    这是一个创建于 2046 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目源码:Github

    基本上可以解析 dex 里面大部分指令,不过 odex 的指令还不支持(其实是好久之前撸的了,最近才开源出来,发现 odex 的指令基本都更新过了,之前这部分解析失效了,暂时懒的支持了 = =)

    编译

    项目编译基于xmake,安装后只需要执行 xmake 即可完成编译

    $ xmake 

    运行测试例子

    $ xmake run dexdump tests/tests.dex .file _cast.java .class _cast .super Object .method public void <init>() .register 1 .argument 1 .catches 0 .prologue 0x000b0c: 7010 4e00 0000 |0000: invoke-direct {v0}, Object.<init>()void 0x000b12: 0e00 |0003: return-void .method public int main(java.lang.String[]) .register 7 .argument 1 .catches 0 .prologue 0x000b24: 6200 0500 |0000: sget-object v0, System.out:PrintStream 0x000b28: 1a01 a800 |0002: const-string v1, "test: ===============================================================" 0x000b2c: 6e20 4800 1000 |0004: invoke-virtual {v0, v1}, PrintStream.println(String)void 0x000b32: 6200 0500 |0007: sget-object v0, System.out:PrintStream 0x000b36: 1a01 a900 |0009: const-string v1, "test: cast: .." 0x000b3a: 6e20 4800 1000 |000b: invoke-virtual {v0, v1}, PrintStream.println(String)void 0x000b40: 6200 0500 |000e: sget-object v0, System.out:PrintStream 0x000b44: 1a01 0000 |0010: const-string v1, "" 0x000b48: 6e20 4800 1000 |0012: invoke-virtual {v0, v1}, PrintStream.println(String)void 0x000b4e: 12f0 |0015: const/4 v0, #-1 // #ff 0x000b50: 8102 |0016: int-to-long v2, v0 0x000b52: 6201 0500 |0017: sget-object v1, System.out:PrintStream 0x000b56: 2204 2400 |0019: new-instance v4, StringBuilder 0x000b5a: 7010 5100 0400 |001b: invoke-direct {v4}, StringBuilder.<init>()void 0x000b60: 1a05 9d00 |001e: const-string v5, "num = " 0x000b64: 6e20 5600 5400 |0020: invoke-virtual {v4, v5}, StringBuilder.append(String)StringBuilder 0x000b6a: 0c04 |0023: move-result-object v4 0x000b6c: 6e30 5500 2403 |0024: invoke-virtual {v4, v2, v3}, StringBuilder.append(long)StringBuilder 0x000b72: 0c02 |0027: move-result-object v2 0x000b74: 6e10 5700 0200 |0028: invoke-virtual {v2}, StringBuilder.toString()String 0x000b7a: 0c02 |002b: move-result-object v2 0x000b7c: 6e20 4800 2100 |002c: invoke-virtual {v1, v2}, PrintStream.println(String)void 0x000b82: 8f01 |002f: int-to-short v1, v0 0x000b84: 6202 0500 |0030: sget-object v2, System.out:PrintStream 0x000b88: 2203 2400 |0032: new-instance v3, StringBuilder 0x000b8c: 7010 5100 0300 |0034: invoke-direct {v3}, StringBuilder.<init>()void 0x000b92: 1a04 9d00 |0037: const-string v4, "num = " 0x000b96: 6e20 5600 4300 |0039: invoke-virtual {v3, v4}, StringBuilder.append(String)StringBuilder 0x000b9c: 0c03 |003c: move-result-object v3 0x000b9e: 6e20 5400 1300 |003d: invoke-virtual {v3, v1}, StringBuilder.append(int)StringBuilder 0x000ba4: 0c01 |0040: move-result-object v1 0x000ba6: 6e10 5700 0100 |0041: invoke-virtual {v1}, StringBuilder.toString()String 0x000bac: 0c01 |0044: move-result-object v1 0x000bae: 6e20 4800 1200 |0045: invoke-virtual {v2, v1}, PrintStream.println(String)void 0x000bb4: 8e01 |0048: int-to-char v1, v0 0x000bb6: 6202 0500 |0049: sget-object v2, System.out:PrintStream 0x000bba: 2203 2400 |004b: new-instance v3, StringBuilder 0x000bbe: 7010 5100 0300 |004d: invoke-direct {v3}, StringBuilder.<init>()void 0x000bc4: 1a04 9d00 |0050: const-string v4, "num = " 0x000bc8: 6e20 5600 4300 |0052: invoke-virtual {v3, v4}, StringBuilder.append(String)StringBuilder 0x000bce: 0c03 |0055: move-result-object v3 0x000bd0: 6e20 5400 1300 |0056: invoke-virtual {v3, v1}, StringBuilder.append(int)StringBuilder 0x000bd6: 0c01 |0059: move-result-object v1 0x000bd8: 6e10 5700 0100 |005a: invoke-virtual {v1}, StringBuilder.toString()String 0x000bde: 0c01 |005d: move-result-object v1 0x000be0: 6e20 4800 1200 |005e: invoke-virtual {v2, v1}, PrintStream.println(String)void 0x000be6: 8d00 |0061: int-to-byte v0, v0 0x000be8: 6201 0500 |0062: sget-object v1, System.out:PrintStream 0x000bec: 2202 2400 |0064: new-instance v2, StringBuilder 0x000bf0: 7010 5100 0200 |0066: invoke-direct {v2}, StringBuilder.<init>()void 0x000bf6: 1a03 9d00 |0069: const-string v3, "num = " 0x000bfa: 6e20 5600 3200 |006b: invoke-virtual {v2, v3}, StringBuilder.append(String)StringBuilder 0x000c00: 0c02 |006e: move-result-object v2 0x000c02: 6e20 5400 0200 |006f: invoke-virtual {v2, v0}, StringBuilder.append(int)StringBuilder 0x000c08: 0c00 |0072: move-result-object v0 
    2 条回复    2020-06-12 12:44:59 +08:00
    sudoy
        1
    sudoy  
       2020 年 6 月 12 日
    点赞
    zhuangzhuang1988
        2
    zhuangzhuang1988  
       2020 年 6 月 12 日
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     966 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 18:47 PVG 02:47 LAX 10:47 JFK 13:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86