源码打包编译教程-Android逆向-反编译APK更改代码

资产:资源文件

lib:jni相关的so包

原始:原始AndroidManifest.xml文件和签名文件

res:xml和图像资源

smail:反编译后的代码,smail文件夹中的目录结构与源码包相同

AndroidManifest:AndroidManifest.xml

//打包成apk
apktool b -f E:gongjuapktool反编译工具test -o E:gongjuapktool反编译工具packed.apk

据悉,更改smail文件后可以使用apktool工具重新打包,这样就避免了开发过程中因一些小改动而导致重新修改、编译、打包的情况。

源码打包编译教程_源码打包工具安卓版_打包源码教程编译软件

那么问题来了,smail文件是什么?

Dalvik虚拟机和Jvm一样,也有自己的一套指令,类似于汇编语言,而且比汇编语言简单得多。 只要会java,了解android的相关知识,就可以轻松阅读。 如果你得到这个汇编文件怎么办? ,借助apktool或者dex2jar工具包(网上很多),反编译classes.dex文件,可以得到一个以smali为后缀的文件,这个smali文件就是Dalvik的寄存器语言。

上面是摘录,打开看看是什么样子的,怎么样? 我就是无法理解。

如何更改代码? 我们还需要学习这些汇编语言句型吗? 虽然没有必要,但只要能读一点就可以了。

首先,我们需要找到需要修改的代码位置。 这里使用的工具是:

二、dex2jar

源码打包编译教程_打包源码教程编译软件_源码打包工具安卓版

下载链接:

使用步骤:

更改app(应用程序名称)的后缀。

将classes.dex文件复制到dex2jar文件夹并执行命令:

d2j-dex2jarclasses.dex

至此,dex文件就转换成了jar文件。

3. jd-gui

下载链接:

使用步骤:

打开工具,查看jar包信息源码打包编译教程,就可以定位到需要更改的地方,如果我想更改一个请求的url地址,我可以立即定位到:

源码打包编译教程_打包源码教程编译软件_源码打包工具安卓版

根据路径可以确认smail文件的位置,如图。 然后进入对应的smail文件夹(这里是comgamesdkutilConstans.smail),改一下就可以了。

这只是一个简单的改变。 同样,如果你有这个项目所依赖的包的源代码,你就可以更改这个包的源代码。 通过编译成jar文件,然后转换成dex(通过dx.bat),再转换成smail(baksmali.jar)源码打包编译教程,最后替换调整本项目中的相关smail。 四、dx.bat

1.这是Android自带的一个工具(你是如何安装AndroidStudio的),你可以在以下目录中找到它:

2.通过cmd命令行进入当前目录:

cdC:UsersAdministratorAppDataLocalAndroidSdkbuild-tools28.0.3

输入以下命令获取 dex 文件:

dx.bat--dex--no-strict--no-warning--output=E:workoutdexclasses.dex (此处替换为要输入dex文件的位置) E:Projectjhsdk buildintermediatesbundlesdefaultclasses.jar (在此处替换您的 jar 文件)

5.baksmali.jar

下载链接:

命令:

java-jarbaksmali.jar (这里是baksmail.jar文件的路径) -oE:workoutsmali (输出smail文件的位置) E:workoutdexclasses.dex (输出smail文件的位置) dex 文件的内容)

6. 补充

以上是代码层面的改动。 如果我们想改变资源,那就更容易了。 我们可以直接在res文件中修改它们,但是要注意不要随便修改。 大部分资源都被引用了。 如果我们删除它们,将会导致我们在 build.gradle 中创建 apk。 直接报错,或者apk安装失败。

另外,如果我们想更改apk的包名和版本怎么办? 包名很简单,只需要在AndroidManifest中修改即可,哪里可以修改sdk版本呢? 它在这里: