我有一个 android apk,它在启动时检查设备“android ID”以查看它是否与 dex 中嵌入的值匹配(如果我正确理解代码)。请参见下面的示例:
protected void onServiceConnected() {
super.onServiceConnected();
if (!Intrinsics.areEqual(Settings.Secure.getString(getContentResolver(), "android_id"), "c76462954894d143")) {
this.isSupportedDevice = false;
Toast.makeText((Context)this, "Not supported device!", 1).show();
return;
还有这里:
protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(2131427356);
if (!Intrinsics.areEqual(Settings.Secure.getString(getContentResolver(), "android_id"), "c76462954894d143")) {
Toast.makeText((Context)this, "Not supported device!", 1).show();
finish();
}
}
我正在尝试一个简单的修改来修改存储在apk中的android id“c76462954894d143”以匹配一个新的设备android id来克服启动时的检查。
至此我走的是baksmali dex到smali的路线,修改了android id被引用的两个区域,smali回到dex。压缩文件备份。使用 jarsign 签名,然后使用 zipalign。
在具有匹配的 android id 的新设备上安装该应用程序后,该应用程序的外观和功能与它一样,但启动检查失败。
你对我可能会出错的地方或我应该考虑什么来克服这个问题有什么建议吗?
感谢任何帮助。
谢谢你。