【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

admin 2024年12月22日02:03:28评论61 views字数 1956阅读6分31秒阅读模式
Android去除自签名校验
APK文件修改前后会有哪些不同:

1.大小;

2.APK文件的MD5;

3.dex、resxml、arsc文件也是不一样的,png/mp3/mp4/dat等是一致所有具有反编译过程的文件,重打包后,HASH都是变化的;

AndroidKiller对apk的反编译时,反编译的文件有resxml、classes.dex、arsc(string.xml/valus.xml)

png/mp3/mp4/dat等资源文件,是不参与反编译和编译过程。

4.签名校验

Android Killer 自带的签名:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

签名文件

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

使用Android Killer 工具对 apk 文件进行验证签名,就是用 androidkiller.keystore 文件对 apk 文件进行验证签名。

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

多了一个 META-INF 文件:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

与正版 apk 文件的 META-INF 文件是不一样的。

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
所以说,只需要验证签名就可以知道是否进行二次打包
区分Apk是签名校验还是文件校验

(dex校验、AndroidManifest.xml校验、so/dll校验、APK包体的大小/MD5校验放在服务器)的一种方式:

1.删除APK包体内的META-INF,重新签名,安装运行,如果运行失败,就一定有签名校验;

META-INF 中的签名文件不一样,AndroidKiller 软件有自己的签名文件,app 作者有自己的签名文件。

可能还有APK的MD5校验/大小校验;

2.借助Xposed+核心破解,在保持APK中的META-INF不变的时候,修改dex,如果运行失败,那就是dex校验;

遇到签名校验的情况,搜索的关键词:

getPackageManager->getPackageInfo->signatures  就是签名信息

Android常见的自校验
Java代码混淆

定制混淆字典

常规abcd等混淆方式对逆向的干扰程序并不是很大,所以需要一个变态的字典

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

比较变态的混淆

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

加花

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
APK签名校验

当一个程序包被黑客反编译、篡改、重打包后,apk的签名信息一定是发生改变,利用这一特性,开发者可以对正在运行的程序包进行正盗版的校验。

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

Java获取签名信息

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
JNI层对签名做正盗版签名信息校验

JNI反射获取签名信息

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
APK通用签名去除方式
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
比较安全的获取签名信息的方法

首先通过 sourceDir或getPackageCodePath来获取APK的安装路径,然后解析RSA的签名信息。

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
APK的文件校验

当一个程序包被黑客反编译、篡改、重打包后,不仅仅只有签名信息发生了改变,还有重新编译的classes.dex、xml、修改过的so/dll、apk的整体包等,这些都能成为判断包体是否经过修改的依据。

关键词

  • nsourceDir
  • ngetPackageCodePath
  • ngetPackageResourcePath

遇到签名校验的情况,搜索的关键词:

getPackageManager->getPackageInfo->signatures  就是签名信息

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
案例展示

sign签名信息校验

整体包MD5校验

classes.dex/so/dll/META-INF等文件校验。

某银行 apk:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

复制 apk 文件,用 Bandzip 打开,删除签名文件:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

使用 Android Killer 软件对它进行 apk 签名:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

新生成的_sign.apk 文件发现无法安装到模拟器:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

显示签名验证失败!

打开 Android Killer 查找【签名】:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

双击进入,注释,不让它跳转,发现报错:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

查看报错第一行:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

找到这张图片 getcode.png,路径就在报错第二行:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

删除原 getcode.png ,把下面 icon.png 复制重命名为 getcode.png

重新编译,成功:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

先卸载前面安装的正版 apk 文件,再安装上面编译好的 apk 文件:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

安装成功:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

是不是太简单了,就改了一个跳转,就完成了,不要慌,下面我们从代码角度,细说一下这个签名:

首先进入 Java 代码环境:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

搜索【签名】

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

代码可观性不是很好,我们使用 Jadx 搜索一下:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

遇到签名校验的情况,搜索的关键词:

getPackageManager->getPackageInfo->signatures  就是签名信息

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

a 函数返回一个 MD5 值,选中,右键,查找用例:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

双击,进入第一个,查看一下:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

选中,右键,跳到声明:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验
【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

new d 是一个线程,getString(R.string.signSafe),获取一个提示语,可以在【资源文件】-【ressoures.arsc】-【res】-【values】-【strings.xml】中找到 signSafe:

【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

通过关键词,我们可以一步步挖掘代码的含义。后面对于签名我们还会分享几个案例,敬请期待吧!

END

原文始发于微信公众号(安全君呀):【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月22日02:03:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Android(安卓)安全逆向05】某银行 | Android APP 去除自签名校验https://cn-sec.com/archives/3537253.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息