首页
社区
课程
招聘
[原创] 鸿蒙hap应用反编译工具 abc-decompiler 使用分享
发表于: 2024-9-3 08:51 8566

[原创] 鸿蒙hap应用反编译工具 abc-decompiler 使用分享

2024-9-3 08:51
8566

目前特性:

下载地址:0b9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6G2K9r3!0K6i4K6u0V1k6r3g2U0L8$3#2H3K9h3I4W2M7W2)9J5c8X3q4T1j5#2)9J5k6r3c8W2j5$3!0E0M7r3W2D9k6i4u0Q4x3V1k6J5k6h3I4W2j5i4y4W2M7H3`.`.

image

使用

目前 abc-decompiler 只支持拖入 .abc 文件进行分析, abc 文件可以通过解压 hap 包获取

image

拖入 modules.abc 点击源代码标签可以查看 abc 文件中的类和类里面的代码

image

try-catch 指令

image

ABC 基础概念

类方法参数

类方法有三个默认参数,猜测应该是由解释器传入:

  • functionObject
  • newTarget
  • this

image

匿名函数

abc 中匿名函数的函数名命名规则:#xxxx#

image

这种函数一般是当作函数指针使用

image

func_main_0

这个是每个类/模块的初始化函数,目前看到里面主要是初始化一些全局变量,放到词法环境或者模块变量中,猜测类加载后首先会执行这个函数(未确认)

image

图片描述

反编译代码的特殊处理

特殊指令

词法环境相关

词法环境操作的相关指令会被反编译为 lex_env_A_B

image

示例:

image

模块导入指令

ldexternalmodulevar 用于导入外部模块的类和方法,会被反编译成 import 指令,其返回值为导入的模块对象,即 hilog​.

image

伪函数调用指令

有一部分指令目前通过伪函数调用方式实现,比如 createobjectwithbuffer

image

这些伪函数可在源码中搜索:InsnDecoder.java#L423 来确定意义

image


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-9-3 09:19 被mb_jyhgtmwe编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (2)
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
1
2024-9-4 16:45
0
雪    币: 1504
活跃值: (3719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2024-9-11 13:16
0
游客
登录 | 注册 方可回帖
返回