R2eP SP 1

不记下来是真的会忘……

创建 Prilo APK 时要做的各种事情:

(1)准备好原始的 9.10.1 版本 apk。

(2)apktool.bat d “klb.android.lovelive.9.10.1.apk” -o temp(这个以后大概不用重复了)

(3)修改 temp/AndroidManifest.xml,修改包名,修改 root 相关的地方(这个以后大概不用重复了)

(4)修改 temp/apktool.yml,修改版本号。

(5)修改 temp/smali/klb/android/GameEngine/GameEngineActivity.smali,修改 root 相关的地方(这个以后大概不用重复了)

(6)(追记)在 temp/smali/klb/android 目录下对 *.smali 进行全文查找,替换包名(约 133 处)。这个目录下的一个子目录也相应地替换包名(这个以后大概不用重复了)

(7)(追记)修改 res/values/strings.xml,修改 app_name,并且将一些 url 替换为 404。

(8)修改 lib/*/libGame.so,修改 RSA 公钥(这个以后大概不用重复了)

(9)解压 temp/assets/AppAssets.zip:

(10)替换 common/datetime.lua(这个以后大概不用重复了)

(11)替换 MTLmr3m.ttf(这个以后大概不用重复了)

(12)修改 config/*_info.json。

(13)重新打包 AppAssets.zip,修改 temp/assets/version 内的校验码。

(14)apktool.bat b temp -api 31 -o prilo_1.0.0.60.0_unsigned.apk

(15)(参考资料:https://phpseclib.com/docs/x509)

<?php
use phpseclib3\File\X509;
use phpseclib3\Crypt\RSA;
require __DIR__.'/../vendor/autoload.php';

$CAPrivKey = RSA::createKey();
$CAPrivKey = $CAPrivKey->withHash('sha256')->withMGFHash('sha256')->withPadding(RSA::ENCRYPTION_PKCS1 | RSA::SIGNATURE_PKCS1);
$CAPubKey = $CAPrivKey->getPublicKey();
$CASubject = new X509;
$CASubject->setDN([
    'CN' => 'eisIF Prilo',
    'O' => 'eis',
]);
$CASubject->setPublicKey($CAPubKey);
$CAIssuer = new X509;
$CAIssuer->setPrivateKey($CAPrivKey);
$CAIssuer->setDN($CASubject->getDN());
$x509 = new X509;
$x509->makeCA();
$x509->setStartDate('2023-03-14 00:00:00 +0000');
$x509->setEndDate('2039-05-06 23:59:59 +0000');
$x509->setExtensionValue('id-ce-keyUsage', ['digitalSignature', 'nonRepudiation'], false, true);
$result = $x509->sign($CAIssuer, $CASubject);
echo "private key for CA cert (can be discarded):\r\n\r\n";
echo $CAPrivKey;
echo "\r\n\r\nCA cert to be imported into browser:\r\n\r\n";
echo $x509->saveX509($result);
echo "\r\n";

setExtensionValue(‘id-ce-keyUsage’, …) 至关重要!

手动将输出存到 key_public.pem,key_private.pem(仅此一次,密钥不可更换,否则以后无法覆盖更新只能卸载重装)

(16)重要!openssl pkcs8 -topk8 -in key_private.pem -out key_private.der -outform DER -nocrypt 标红的参数至关重要!

(17)java -jar signapk.jar key_public.pem key_private.der prilo_1.0.0.60.0_unsigned.apk prilo_1.0.0.60.0.apk

(18)apksigner verify –max-sdk-version 30 ….apk

完。(hopefully I didn’t miss something)

Leave a comment

Your email address will not be published. Required fields are marked *