2025年反编译修改软件exe(反编译修改软件sdk版本)

反编译修改软件exe(反编译修改软件sdk版本)反编译 Decompilatio 是将已编译的程序 比如二进制代码 转换回更高级别的编程语言代码的过程 这通常用于理解程序的工作原理 进行软件审计 恢复丢失的源代码 或者进行教学研究 反编译的难度和效果取决于原程序的编译过程中丢失了多少信息 比如变量名 注释等 Android 应用通常是用 Java 或 Kotlin 编写的 并且打包成 APK 文件 由于 Android 应用的这一特性

大家好,我是讯享网,很高兴认识大家。



反编译(Decompilation)是将已编译的程序(比如二进制代码)转换回更高级别的编程语言代码的过程。这通常用于理解程序的工作原理,进行软件审计,恢复丢失的源代码,或者进行教学研究。反编译的难度和效果取决于原程序的编译过程中丢失了多少信息(比如变量名、注释等)。

Android应用通常是用Java或Kotlin编写的,并且打包成APK文件。由于Android应用的这一特性,反编译Android应用通常涉及到多个步骤,包括反编译APK文件以获取其DEX(Dalvik Executable)文件,然后将DEX文件转换为Java源代码。

通常用到的反编译软件如下:

  • Apktool
    • 下载地址: https:///docs/install  点击选择需要的版本进行下载。
    • 功能:用于反编译Android APK文件,可以解码资源文件以查看其原始形式,并重新编译修改后的文件回APK。
    • 使用场景:查看和编辑Android应用的资源文件,如XML布局和字符串资源。
  • jadx
    • 安装包地址https://github.com/skylot/jadx/releases
    • 功能:一个命令行和图形用户界面应用程序,可以将DEX文件直接反编译成Java源代码,无需先转换为JAR。
    • 使用场景:快速查看APK文件的源代码,也支持对APK文件进行编辑和调试。

参考博客:

JDK下载:Java Downloads | Oracle

需要在电脑中新建一个文件夹,注意,路径不能有中文。

比如我的是:

图片
讯享网


安装到这个位置,选择更改为我们新建的jdk1.8.0_251目录(注意此处是jdk)

图片

安装到这个位置,选择更改为我们新建的jre1.8.0_251目录 (注意此处是jre)

图片

之后一路点击下一步安装完成即可。

1、打开设置 -> 系统  -> 高级系统设置 -> 环境变量 - > 系统变量(S) -> 点击新建 -> 新建内容如下:

讯享网

图片

2、上一步点击确认后,在系统变量(S)中找到,双击点开,继续新建添加变量。

 

图片

打开cmd命令行窗口,使用如下两个命令进行验证。

讯享网

如下图所示,则是配置环境变量成功。

  • java

图片

  • avac

图片

下载地址https:///docs/install  点击选择需要的版本进行下载。

双击运行

图片


图片


这个软件会自动编译好我们打开的apk包,在下方可以用不同的方式查看这个文件的内容,如:代码、Samli、Simple、Fallback

一般来说,我们软件接入的SDK都会在com这个包下面,需要自己一个层级一个层级的去查找。

地址: https://github.com/skylot/jadx

参数:

 
讯享网

输出如下

 

反编译之后会有两个文件夹

讯享网

这里显示的和在jadx-gui里面显示的为一致

Android Studio本身是作为Android应用开发的集成开发环境(IDE),其主要用途是编写、调试和发布Android应用。虽然Android Studio不直接提供反编译Android应用的功能,但它提供了一些工具和插件支持,可以帮助开发者在一定程度上理解和分析APK文件。

下载

官方下载网址: Download Android Studio & App Tools - Android Developers

图片

下载好之后双击即可安装。

安装

1、一路点击下一步,遇到需要选安装目录的时候,请选择、盘符目录进行安装。

2、由于前面我们装了JDK,所以AndroidStudio会默认帮你选择之前安装的目录,一路点击下一步即可。

3、如果本机没有装个Android SDK , 会提示你安装,记得依然是选择、盘符目录进行安装。

4、耐心等待自动安装完成。

图片

在上一步中,我们创建好了一个空项目,这个时候只要拖着我们的apk直接丢到这个项目右侧的黑不拉几的位置就可以了。

图片

1、红框里面的dex文件就是我们对应编译出来的文件

2、鼠标左键单击对应的dex文件可以查看里面的具体内容

图片

3、需要注意的是,字体显示是斜体的,并不是真正的内容,需要找正正的字体的文件才是正确的

4、当你找到了对应的文件后,右键单击选择可以查看该文件的内容,这个文件默认是Smail后缀。

图片

jadx-gui工具虽然也可以查看Smail文件内容,并且比AndroidStudio更加的方便,但是如果我们是通过java代码直接去解析进行反编译,那么还是使用AndroidStudio更加的贴近我们的代码格式处理。

当然这个也因人而异。

Apktool 是一款逆向工程工具,主要用于Android应用的反编译(Decompiling)和再编译(Recompiling),它可以让你查看应用的资源文件和源代码。

  • 反编译APK文件
     
      

    这条命令会将APK文件反编译到一个目录中,目录名默认为APK文件的文件名。你可以通过选项指定输出目录:

    讯享网
  • 再编译已反编译的目录
     
      

    这条命令会将指定的目录重新编译成APK文件。默认情况下,输出的APK位于下。你也可以通过选项指定输出APK的路径:

    讯享网
  • 安装框架资源
     
      

    某些APK在反编译时需要特定的框架资源文件。这条命令可以将框架资源安装到Apktool的工作目录中,以便在反编译或再编译时使用。这个在后面的framework-res.apk提取替换会讲到。

  • 使用Apktool时,可能需要Java环境。确保系统已经安装了Java,并且环境变量已经设置。
  • 反编译和再编译的APK需要签名才能在设备上安装。可以使用工具对APK进行签名,后面会讲。

只要电脑里面安装了java环境,配置了环境变量,就可以直接在控制台输入keytool查看

讯享网
 

常用命令

讯享网

参数详解:

 
讯享网

查看示列:

 

和都是用于对Android APK文件进行签名的工具,但它们来自不同的项目,并且在一些细节上有所不同。签名对于Android应用的安装至关重要,因为Android系统要求所有安装的应用都必须经过签名。

是Android SDK的一部分,专门设计用于对Android应用包(APK文件)进行签名和验证。它支持对APK签名的所有最新要求和功能,包括对V2、V3签名方案的支持。

  • 签名APK
    讯享网

    这条命令使用指定的密钥库(keystore)和别名(alias)对APK文件进行签名。

  • 验证APK签名
     
      

    这条命令用于验证APK的签名是否有效。

提供了更多的选项,如设置签名算法、指定签名方案版本等,具体可以通过查看。

是一个更通用的工具,主要用于对Java归档文件(JAR)进行签名,但也可用于APK文件。相较于,可能不支持一些针对Android APK特定的签名特性和要求。

  • 签名APK
    讯享网

    这条命令使用指定的密钥库和别名对APK文件进行签名。和选项指定了签名和摘要算法。

  • 验证APK签名
     
      

    这条命令用于验证APK文件的签名。

  • 如果你在进行Android应用开发和发布,推荐使用,因为它支持Android APK签名的最新标准和要求。
  • 如果你在处理一些与Java密切相关的任务,或者需要一个更通用的签名工具,可能是一个不错的选择。

和主要用于对已经存在的APK文件进行签名,而不涉及从到的转换过程。

是 Android Studio、Android Gradle 插件和 Google Play 用于构建 Android App Bundle 的底层工具。 可将 app bundle 转换为部署到设备的各种 APK。

注意事项:不能使用 apksigner 对 App Bundle 进行签名,要对 App Bundle 进行签名,请使用 jarsigner。

官方文档:https://developerhttp://www.360doc.com/content/24/0607/17/tools/bundletool?hl=zh-cn

1、所需要的资源

  • bundletool.jar :下载地址 - https://github.com/google/bundletool/releases,相关文档:https://developerhttp://www.360doc.com/content/24/0607/17/tools/bundletool
  • 要签名的apk包
  • 签名文件&秘钥

2、命令示列

讯享网

注意:如果要直接使用,需要自建一个文件,并把它加到环境变量里面。内容填写如下:

 

最后面的 表示接收任意数量的参数

3、 命令的选项

标志说明–bundle=path (必需)指定您使用 Android Studio 构建的 app bundle 的路径。如需了解详情,请参阅 构建您的项目。–output=path (必需)指定输出 文件的名称,该文件中包含了应用的所有 APK 工件。如需在设备上测试此文件中的工件,请按照有关如何 将 APK 部署到已连接设备的部分中的步骤操作。–overwrite使用您通过 选项指定的路径覆盖任何现有的输出文件。如果您不添加此标志,而输出文件已存在,您会遇到构建错误。–aapt2=path指定 AAPT2 的自定义路径。 默认情况下, 包含自己的 AAPT2 版本。–ks=path(可选)指定用于为 APK 签名的部署密钥库的路径。如果您不添加此标志, 会尝试使用调试签名密钥为您的 APK 签名。–ks-pass=pass:password 或 –ks-pass=file:/path/to/file指定密钥库密码。如果您指定纯文本格式的密码,请使用 限定该密码。如果您要传递包含该密码的文件的路径,请使用 限定该路径。如果您使用 标志指定密钥库,而未指定 ,那么 会提示您从命令行输入密码。–ks-key-alias=alias指定要使用的签名密钥的别名。–key-pass=pass:password或 –key-pass=file:/path/to/file指定签名密钥的密码。如果您指定纯文本格式的密码,请使用 限定该密码。如果您要传递包含该密码的文件的路径,请使用 限定该路径。如果此密码与密钥库自身的密码相同,您可以省略此标志。–connected-device指示 针对已连接设备的配置构建 APK。如果您不添加此标记, 会为您的应用支持的所有设备配置生成 APK。–device-id=serial-number如果您有多个已连接的设备,请使用此标志指定要部署应用的设备的序列号。–device-spec=spec_json提供 文件的路径,该文件指定了您要针对其生成 APK 的设备配置。如需了解详情,请参阅有关如何 生成并使用设备规范 JSON 文件的部分。–mode=universal将模式设置为 。如果您希望 构建一个包含应用的所有代码和资源的 APK,以使该 APK 与应用支持的所有设备配置兼容,请使用此选项。 注意: 仅包含功能模块,这些模块在通用 APK 中的对应清单中指定 。如需了解详情,请参阅 功能模块清单。请注意,这些 APK 要比针对特定设备配置优化过的 APK 更大。但是,这些 APK 更便于与内部测试人员共享,例如想在多种设备配置上测试应用的测试人员。–local-testing启用 app bundle 进行本地测试。在本地测试时,由于无需上传到 Google Play 服务器,因此能够实现快速的迭代测试周期。 如需查看如何使用 标志测试模块安装的示例,请参阅 在本地测试模块的安装情况

4、安装到指定设备

如需从 APK 集部署您的应用,请使用 命令并使用 标志指定 APK 集的路径,如以下命令所示。如果您连接了多个设备,请添加 标志来指定目标设备。

讯享网

官方示例:

 

aab转apks重签名

如果要将这些 APK 部署到设备,您还需要添加应用的签名信息,如以下命令所示。如果您未指定签名信息, 会尝试使用调试密钥为 APK 签名。

讯享网

实例:

 

安装apks包

讯享网

apks转apk手动操作直接把apks当作是一个压缩包,把apks的后缀名改成zip解压,解压后的文件中会有一个apk包。

如果使用bash命令,可以参考:

 

ren行后面的命令解析:

这段命令是一系列在Windows环境下使用的批处理命令,旨在重命名一个文件为文件,然后使用WinRAR解压这个文件,并最后删除原文件和一个名为的文件。下面逐行解析这些命令:

  1. ren my_app.apks my_app.zip:
    • 这行命令使用了Windows的(或)命令,用于重命名文件。它将名为的文件重命名为。这通常是因为文件实际上是一个特殊格式的文件,重命名后可以使用标准的解压工具来打开。
  2. ‘C:Program FilesWinRARWinRAR.exe’ x -ibck my_app.zip:
    • 这行命令调用了安装在目录下的程序,使用参数来解压文件。参数是用来解压文件并保持原有的目录结构。
    • 参数让WinRAR在后台模式下运行,不显示界面和弹出窗口。这对于批处理操作很有用,因为它不会中断自动化流程。
    • 指定了要解压的文件名。
  3. del my_app.zip:
    • 使用命令删除文件。
  4. del toc.pb:
    • 最后,使用命令删除名为的文件。

整个命令序列的目的是将一个文件转换成标准的格式,然后解压它,最后清理所有不再需要的文件。

1、aab转为apks(参考上面的步骤)

2、apks后缀改为zip解压缩为apk

3、使用adb命令安装apk

讯享网

某些APK在反编译时需要特定的框架资源文件。这时候我们需要对我们的框架资源文件进行更新或者替换。未来避免更新后带来的各种问题,所以需要把更新前的框架资源文件备份一份。

判断是否安装有 framework-res.apk

 

连接对应的Android设备,这里我使用的是Android14设备,拉取设备上的框架资源文件到PC端。

图片


讯享网
 
讯享网
 

Allatori的介绍

1、allatori是第二代的java混淆器;

2、具有命名混淆,流混淆、字符串混淆以及水印技术等等强大的混淆功能, 因此对混淆后的代码进行逆向工程几乎是不可能的;

3、允许对需要混淆代码的应用程序添加有效期;

4、对代码混淆效果非常强,而且操作简单;

5、不足是混淆之后对程序的性能有较大的影响,混淆之后运行速度会有所降低(一般来说只要对代码进行混淆,多多少少都会对性能产生一定的影响的);

使用方法

1、首先从官网下载:http://wwwhttp://www.360doc.com/content/24/0607/17/

2、下载完解压,解压之后的目录是这样的:

图片

3、新建一个文件夹

图片

4、进入lib目录将allatori.jar复制到新建的test文件夹、进入tutorialstep01files目录将Clean.bat、config.xml、RunAllatori.bat复制到新建的test文件夹中

图片

5、将需要混淆的jar包拷贝到新建的test文件中

图片


6、修改Clean.bat的内容

讯享网

图片


7、修改RunAllatori.bat的内容

 

图片


  • java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
  • ①、-Xmx3550m:设置JVM最大可用内存为3550M.
  • ②、-Xms3550m:设置JVM促使内存为3550m.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存.
  • ③、-Xmn2g:设置年轻代大小为2G.整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8.
  • ④、-Xss128k:设置每个线程的堆栈大小.JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右.

8、修改config.xml

讯享网

图片


11、此时双击Clean.bat会删除混淆后的jar包以及log文件 12、混淆效果

  • (1)混淆前:

图片


  • (2)混淆后:

图片


打开.bat文件→另存为→编码改为ANSI格式,点击保存,替换原来的.bat文件就行。

项目构建失败解决

小讯
上一篇 2025-04-27 19:42
下一篇 2025-06-08 14:35

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/195883.html