gpt4 book ai didi

android - 带有爱马仕反汇编 index.android.bundle 的 React-native 0.61.2

转载 作者:行者123 更新时间:2023-12-03 13:26:44 34 4
gpt4 key购买 nike

我使用 react-native 0.61.2 创建了我的应用程序的发布版本并启用了 Hermes。
在我的 Crashlytics 中,我收到有关崩溃的信息以及堆栈跟踪。以前我使用 apktool 从我的 apk 中提取 index.android.bundle,它包含 js 代码,我可以通过堆栈跟踪找到问题。

但是现在使用 Hermes index.android.bundle 似乎包含字节码而不是 js,我浪费了一天时间试图反汇编它。我尝试的最后一件事是 hbcdump https://github.com/facebook/hermes/blob/master/doc/BuildingAndRunning.md 中提到的工具,但我得到的只是“错误:无法反序列化字节码:错误的字节码版本。预期为 73,但得到了 62”

反汇编使用 Hermes 创建的 index.android.bundle 应该怎么做?非常感谢任何帮助!

最佳答案

编辑:从 Hermes v0.5.0 开始,还有一个 hermes-engine-cli 包含字节码反汇编程序的 NPM。只兼容对应的hermes-engine版本(即 hermes-engine-cli@0.5.0hermes-engine@0.5.0 一起使用)。
它仍然主要对编译器开发人员有用,而不是用于调试应用程序崩溃。

Hermes 工具不向后兼容,因此您需要先检查正确的版本。对于字节码版本 62 ,您可以查看v0.2.1git checkout v0.2.1 一起发布.对于任意字节码版本,git log -p include/hermes/BCGen/HBC/BytecodeFileFormat.h将显示哪些提交将格式更新到了哪些版本。
构建完成后,您可以使用 hbcdump myfile.hbc后跟 disassemble在提示显示文件的禁用版本。
请注意 hbcdump用于开发/调试编译器,与 javap -c 相同。和 objdump -d .这是您可以期待的输出类型:

Function<fizzbuzz>1(1 params, 22 registers, 0 symbols):
Offset in debug table: src 0xd, vars 0x0
fizzbuzz.js[1:21]
LoadConstZero r11
LoadConstUInt8 r10, 15
LoadConstUInt8 r9, 3
LoadConstString r8, "Fizzbuzz"
LoadConstString r7, "Fizz"
LoadConstString r6, "Buzz"
GetGlobalObject r5
LoadConstUndefined r0
LoadConstUInt8 r4, 1
LoadConstUInt8 r3, 100
LoadConstUInt8 r2, 5
LoadConstZero r1
L2:
fizzbuzz.js[1:21]
Mod r12, r1, r10
Mov r13, r8
JStrictEqual L1, r12, r11
Mod r12, r1, r9
Mov r13, r7
JStrictEqual L1, r12, r11
Mod r12, r1, r2
Mov r13, r6
JStrictEqual L1, r12, r11
AddEmptyString r13, r1
L1:
fizzbuzz.js[8:5]
TryGetById r12, r5, 1, "print"
Call2 r12, r12, r0, r13
AddN r1, r1, r4
JLessN L2, r1, r3
Ret r0

关于android - 带有爱马仕反汇编 index.android.bundle 的 React-native 0.61.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59490720/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com