×

反编译exe文件 exe文件 反编译

exe文件能不能反编译?如何反编译android应用以及重编译,签名和对齐优化

admin admin 发表于2022-07-13 02:31:15 浏览100 评论0

抢沙发发表评论

exe文件能不能反编译

它本身无法编译。请参阅:program:#includestdio.hvoidmain()和程序:#includestdio.hvoidmain()未区分5071行的汇编。如果编译时使用/o2,然后使用汇编,然后使用回编,则是行的数量。是不同的。显然不可能编译到原始文件中。除非您开发一个新的编译器并以注释方法编写源程序,否则您都可以将其编译回去。

如何反编译android应用以及重编译,签名和对齐优化


首先,了解一下我们为什么需要反编译apk
大部分情况下,是由于想本地化一款优秀的应用,才需要做这事儿;又或者进行少量的smali修改以达到想要的效果(如添加归属地,使3G版Nexus 7支持Wi-Fi热点)。
下面我们先准备运行环境和工具
建立工作目录,如.\workspace\apktoolbox (下面同样以此路径为例)
必不可少的JDK:Oracle Java下载,安装完成后把《jdk-inst-path》\bin添加到$PATH环境变量中
反编译和重编译工具apktool:Google Code下载,按平台下载(一个apktool-install-《platform》-《ver》-tar.bz2,一个apktool《ver》.tar.bz2,下载完成后解压至.\workspace\apktoolbox\bin
密钥文件,共4组。test/shared/media/platform,从android source中获取,分别对应不同共享用户ID时签名所需(查看应用AndroidManifest.xml第二行android:sharedUserId项 ),放到.\workspace\apktoolbox\bin下
test - 无android:sharedUserId项
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
签名工具signapk.jar,放到.\workspace\apktoolbox\bin下
对齐优化工具zipalign(从android sdk中获取,在tools目录下),放到.\workspace\apktoolbox\bin下
准备工作完成
接下来我们就要开始工作了(以本地化工作为例)
把待反编译的apk放到.\workspace\apktoolbox\apks下
在命令行模式下进入.\workspace\apktoolbox\bin目录,输入以下命令进行解包(反编译)
apktool d ..\apks\《apkfile》.apk ..\apks\《outdir》
.\workspace\apktoolbox\apks\《outdir》\res下的values目录(英文原版)和values-r《locale》目录(本地化)就是我们需要的对象。
本地化工作完成后,在命令行中输入以下命令进行重新打包(重新编译)
apktool b ..\apks\《outdir》
.\workspace\apktoolbox\apks\《outdir》\dist目录下会生成重新打包后的apk(未签名,未对齐优化)
重新打包完成后,在命令行中输入以下命令进行签名(根据实际情况选用密钥,这里以test密钥为例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\《outdir》\dist\《apkfile》.apk ..\apks\《apkfile》_signed.apk
签名完成后,在命令行中输入以下命令进行对齐优化
zipalign -f -v 4 ..\apks\《apkfile》_signed.apk ..\apks\《apkfile》_zipaligned.apk
《apkfile》_zipaligned.apk就是我们最终需要的apk了。
完成
部分apk需要系统框架资源,没有的话在重新打包时会报错,这种情况下我们只需要先安装一下对应系统框架即可(从你目标ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中输入以下命令进行安装
apktool if ..\apks\framework-res.apk

如何反编译Android 的apk/dex/odex,获得源码

APK简介,DEX

当我们编译一个安卓项目时,整个项目将被包装到.APK文件中。此文件实际上是标准的zip文件,因此您可以使用Decompression工具打开它。此APK文件通常包含程序的代码(在该程序中(在classs.dex文件),资源文件,证书,清单文件等。对我们来说,最重要的是class.dex文件,因为编译字节键放置在此文件中。我们稍后提到的反编写是为此DEX文件。-反编译

反填充普通APK文件:

对于普通APK/DEX文件的抗复杂性,实际上有许多工具,包括:

  • 字节码查看器:可见的集成工具。老实说,它不容易使用,不够稳定,并且代码的质量是中等的。

  • dex2jar + jd_gui: 这两个工具组合还可以, 用起来比ByteCode Viewer麻烦一些,但比较稳定,生成代码质量中等。

  • 在线反填充工具JADX: