太阳高照 發表於 2025-4-8 13:31:00

安卓逆向手动解包-打包流程

<h3 id="起因">起因</h3>
<p>由于大多教程教学修改apk包都是用androidkiller,但是本人尝试发现,一部分安装包会出现解包错误,或者打包后无法安装的情况,因此,摸索了许久,学会了手动拆包和打包</p>
<h3 id="准备工具">准备工具</h3>
<p>下载地址<br>
apktool:https://apktool.org/<br>
android-sdk(其中的zipalign,apksigner):https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn<br>
java-sdk(其中keytool):https://www.oracle.com/cn/java/technologies/downloads/</p>
<h3 id="解包命令">解包命令</h3>
<pre><code class="language-shell">apktool d input.apk -o outputdir
</code></pre>
<p>其中<code>input.apk</code>是你要解包的apk,<code>outputdir</code>是解包后保存的文件夹<br>
解包后就可以对apk进行愉快的修改了</p>
<h3 id="打包">打包</h3>
<p><strong>打包压缩</strong></p>
<pre><code class="language-shell">apktool b inputdir -o output.apk
</code></pre>
<p>其中<code>inputdir</code>是你要解包路径(刚刚解包的apk路径),<code>output.apk</code>是打包后apk路径<br>
<strong>值得注意的是:如果不填<code>-o output.apk</code>的参数默认打包在<code>inputdir</code>中的<code>dest</code>文件夹中</strong><br>
<strong>对齐</strong><br>
重点:<strong><mark>在android10+后apk要进行对齐,否则会安装失败</mark></strong>这是为什么你apk安装不上</p>
<pre><code class="language-shell"> zipalign.exe -v -p 4 input.apk output.apk
</code></pre>
<p>其中<code>4</code>是对齐的字节(以4字节对齐)<br>
可以通过这条命令来可以检测apk是否对齐</p>
<pre><code class="language-shell">zipalign.exe -v -c input.apk
</code></pre>
<p><strong>签名</strong></p>
<pre><code class="language-shell">apksigner.bat sign --ks input.jks --v1-signing-enabled true --v2-signing-enabled true --out output.apk input.apk
</code></pre>
<p><code>--v1-signing-enabled true --v2-signing-enabled true</code>启用v1/v2签名<br>
<code>--ks input.jks</code>签名文件<br>
那么问题来了input.jks在哪里可以获得呢?<br>
其实也非常的简单</p>
<pre><code class="language-shell">keytool -genkeypair -keyalg RSA -keypass 123456 -storepass 123456 -keysize 2048 -validity 3650 -keystore output.jks
</code></pre>
<p>其中<br>
<code>-keyalg RSA</code> 加密方式RSA<br>
<code>-keypass 123456</code> 密钥的访问密码(保护私钥)<br>
<code>-storepass 123456</code>密钥库的访问密码(保护整个 .jks 文件)<br>
<code>-keysize 2048</code>密钥长度(2048 位,安全性较高)<br>
<code>-validity 3650</code>证书有效天数(10 年)<br>
<code>-keystore output.jks</code>生成的密钥库文件名</p>


</div>
<div id="MySignature" role="contentinfo">
    <p>本文来自博客园,作者:ClownLMe,转载请注明原文链接:https://www.cnblogs.com/ClownLMe/p/18814424</p><br><br>
来源:https://www.cnblogs.com/ClownLMe/p/18814424
頁: [1]
查看完整版本: 安卓逆向手动解包-打包流程