Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问是否可以添加功能,直接类似smali转java的方式,转换为可读代码 #4

Open
yemao001 opened this issue Aug 7, 2024 · 7 comments
Labels
enhancement New feature or request

Comments

@yemao001
Copy link

yemao001 commented Aug 7, 2024

No description provided.

@yemao001 yemao001 added the enhancement New feature or request label Aug 7, 2024
@Yricky
Copy link
Owner

Yricky commented Aug 8, 2024

我也一直想实现这个功能,但很抱歉短期内没法实现。

  • 一方面本人能力有限,也是第一次开发相关逆向功能,还需要学习反编译相关的知识,方舟字节码并没有dex中invoke那样直观的方法调用指令,而是ldobj后调用callthis指令,这本身增加了反编译的难度。
  • 另一方面方舟字节码的指令集本身变更也相对频繁,进一两个月仍在新增指令。

此外,针对字节码可读性的优化也在持续进行。

这个issue会长期保持开启,等实现相关功能后关闭

@MartinKayJr
Copy link

同求,我看到别人好像可以直接看到反编译后的源代码:https://juejin.cn/post/7305235970286485515,但是就是不知道他是怎么实现的,他在给别人的回复中,回答到:“选择16进制解析,解析完成就能看到代码段内容了”,由于我是010Editor这个软件的新手玩家,不太理解他这段话,大佬能否参考这个来解析下?

不可能,release版本不可能包括源代码,你说的是debug版本的,要解析release版本为源代码,要做字节码解析,写这个解析器至少要耗费几个月的时间才能完美、

@hfkai
Copy link

hfkai commented Aug 15, 2024

是的,那如果是debug版本的话,要怎么还原呢?

@MartinKayJr
Copy link

是的,那如果是debug版本的话,要怎么还原呢?

没啥意义,debug版本只有自己的项目是,这种我们都不会去研究的。

@Yricky
Copy link
Owner

Yricky commented Aug 15, 2024

是的,那如果是debug版本的话,要怎么还原呢?

可以通过AbcMethod.debugInfo.state.sourceCodeString获取debug包中的源码。通常class的func_main_0中包含这个class完整的源码

@magiclf-dec
Copy link

magiclf-dec commented Aug 28, 2024

有没有兴趣一起搞反编译

https://github.com/ohos-decompiler/abc-decompiler

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants