如何从apk文件中获取本机代码

ris*_*apk 0 android apk react-native

我写了一个应用本机的应用程序,但不小心接近开发结束,我的硬盘崩溃,现在我只有APK文件,我可以从该apk文件检索反应本机代码吗?

Gno*_*tiC 34

当您解压 apk 文件时,在 assets 文件夹中, index.android.bundle 文件是捆绑的 React 源代码。将 index.android.bundle 重命名为 something.js

由于 something.js 是一个捆绑文件(缩小/丑化),如果可读,请使用一些 unuglifier/jsbeautifier 来制作。(也检查jsnice)

总比没有好。


小智 8

不,我担心你无法检索你的反应本机代码,好像你反编译你的apk文件它会返回你的Android的java代码,但没有反应本机代码.

因为,React Native将代码转换为本机语言,具体取决于您想要构建其android或ios的操作系统.

  • ._. 正如 @GnoStiC 的回答所说,它全部捆绑并缩小到 `assets/index.androind.bundle` 文件中。请@ristapk 为将来到达这里的每个人修改您接受的答案。 (7认同)
  • 是的,确实如此,但我希望我能以某种方式把它拿回来:( (2认同)

Muh*_*man 8

不,您无法检索实际代码,但可以获得一些反编译代码

apktool的安装:

适用于 Macbook

brew install apktool
Run Code Online (Sandbox Code Playgroud)

对于Linux

apt-get install -y apktool
Run Code Online (Sandbox Code Playgroud)

对于 Windows

您可以阅读window DOCS的安装步骤

用法

安装后apktool,通过在终端上运行此命令来解压缩 apk 文件,如下所示:

apktool  d /pathOfApkFile.apk
Run Code Online (Sandbox Code Playgroud)

之后您将获得index.android.bundle文件pathOfApkFile/assets/index.android.bundle

比你可以使用react-native-decompiler来反编译index.android.bundle文件

反编译index.android.bundle文件

您可以index.android.bundle通过运行此命令进行反编译

npx react-native-decompiler -i ./index.android.bundle -o ./output
Run Code Online (Sandbox Code Playgroud)

之后,你会在目录中得到JS反编译文件./output