android逆向之旅-欧洲杯足彩官网

一、前言

最近有一个同学,发给我一个设备流量访问检测工具,但是奇怪的是,他从gp上下载下来之后安装就没有数据了,而在gp上直接安装就可以。二次打包也会有问题。所以这里就可以判断这个app应该是有签名校验了,当然还有其他的校验逻辑,我们打开这个app界面如下,没有任何数据:

二、应用分析

下面就来简单分析这个app,不多说直接使用jadx工具打开:

我们在使用的过程中会发现需要授权vpn权限,所以就断定这个app利用了系统的vpnservice功能开发的,直接在xml中找到入口,然后进入查看配置代码:

继续跟踪查看内部逻辑:

在worker类中,看到有一些核心的native方法,开发过vpnservice都知道,拦截数据等操作一般都会放到native去做,主要原因是性能会高点。不多说直接使用ida打开libwebd.so文件,直接搜索nativeinit函数,为什么搜索这个函数呢?因为一看这个是初始化操作,而没有数据的话那些校验判断只会在这里,所以直接看这个函数实现:

继续往下看,他到底做了哪些验证,这里主要包括了三处验证,具体如下:

第一处验证:验证安装渠道是否为gp,这里利用了系统的getinstallerpackagename方法来做判断,这个方法在很早的android版本就有了,但是这个方法有很大使用问题,后面会介绍。因为gp安装器包名是:com.android.vending,这里直接判断如果安装器不是gp就不进行拦包操作了。

第二处验证:应用签名校验,这个已经是最普遍的校验方法了,这里不多解释了,直接使用kstools工具进行爆破即可破解签名校验。

第三处验证:这个主要验证xml中的android:debuggable=”true”这个属性值,我们之前如果想调试这个app的话,一般都会手动反编译改这个属性为true的。但是我们现在不需要调试,也没必要进行修改。这个验证对于我们来说没什么影响。

看到上面的三处验证,其实对于我们现在掌握的技术来说,都不难,特别是签名校验,完全可以使用kstools工具来搞定,一键化操作,不了解kstools工具的同学可以看这篇文章:;这里同学自己使用工具操作一下即可过了这个验证。而第三处验证可以说没什么影响,不用管它。主要来看第一处验证。有的同学说破解也简单,直接修改cbz指令即可。但是这个就缺失了一些技巧,我们要的不是结果,而是学习的过程。接下来看看我是怎么破解这个校验的。又要多介绍一些知识点了。

三、破解方案

破解这个安装渠道大致有两个方案,一个是利用kstools工具源码修改一下,拦截getinstallerpackagename方法,然后修改返回值即可,如下:

直接返回这个包名的的安装器就是gp的,这样在打包就可以给多人使用了。这个不多介绍了,感兴趣的同学去下载源码自己操作实践一下即可:

还有一种超级简单的方式,直接使用命令 pm install -i[指定安装器包名] apk文件,这个命令应该又很少人知道,但是这个简单的一个命令就可以在这里很方便的破解,可以指定一个app的安装器。

我们安装之后,可以在系统的 /data/system/packages.xml 中查看应用对应的安装器名称:

而这里又说道一个知识,就是系统的这个packages.xml文件,他就是设备安装成功的应用的一些详细信息,包括使用到的权限,签名信息,安装渠道,各种标志等。之前有人问怎么获取设备中的应用安装渠道来源,其实可以从这个文件中获取到。从这里看到这个应用现在的确是从gp上安装的了,也说明了上面的那个pm命令的确有效。

这时候我们再看看应用的拦截是否有效果了:

看到了,这里开始拦截设备的数据包了,从这里看这款app的确很有用,对于我们开发来说,也算是一个很好的工具了,破解之后可以珍藏使用了。

对于第一种方式破解是最好的,因为那样可以给多个人使用,而对于第二种命令指定安装器的安装方式,一般小白用户肯定不知道。对于第一种方式破解只需要修改kstools源码即可。

四、总结

好了到这里我们就破解成功了,可以愉快的使用这个app了,但是从上面来看了解到了新的防护策略就是判断应用是否来自于指定应用市场。有的同学可能立马想到了,为了防止二次打包,可以在应用中判断是否来自于主流的应用市场渠道,如果不是就不走正确的逻辑了,这个也算是一个防护策略了,不过可惜的是这个想法是不可行的,如果可行就有很多app早这么干了。原因是因为这个系统方法:getinstallerpackagename,大家可以自己测试这个方法,会发现:如果一个app是系统应用,那么这个返回值可能是设备自带的应用市场。如果一个app是第三方应用,从gp上安装,这个值一定是com.android.vending;而如果是其他渠道,比如国内的应用包,手机助手,豌豆荚等。就有可能是null值,而是用pm这样的命令,或者系统自带的安装器安装的第三方应用也有可能是null值,也就是说:这个系统api返回的应用安装器名称极不稳定,完全就是不靠谱的方法,至少在国内没法使用的。所以几乎可以忽略这个方法的。但是为何这个app敢这么干呢?其实我也很好奇。不过有一点可以说明就是这个app开发商就认定了此app只在gp上发布,其他渠道都不发布,这样只认定gp上下载的app才算是合法的。比如一个国外用户,用了华为手机使用非gp渠道下载了这个app,那么可惜这个人也是不能使用的。我也很好奇这个app的开发商为何要这么做?反正国内的app应该都不会这么做的。因为这个方法的返回值极不稳定。

但是不能说这个方法不靠谱,我们在后面的逆向就要忽略这个防护,后面我们在破解app依然遵从不变法则:全局搜索signature字符串来判断是否有签名校验,全局搜索getinstallerpackagename方法是否有安全渠道验证。不管是在ida还是jadx中搜索,都是如此。
  • 大小: 11 kb
  • 大小: 14 kb
  • 大小: 20.3 kb
  • 大小: 50.3 kb
  • 大小: 24.6 kb
  • 大小: 45.3 kb
  • 大小: 18.8 kb
  • 大小: 16.1 kb
  • 大小: 42.6 kb
  • 大小: 8.3 kb
  • 大小: 34.1 kb
  • 大小: 42.4 kb
来自:
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 一、前言 最近有一个同学,发给我一个设备流量访问检测工具,但是奇怪的是,他从gp上下载下来之后安装就没有数据了,而在gp上直接安装就可以。二次打包也会有问题。...我们在使用的过程中会发现需要...

  • 服务器是it基础设施的关键,但是网络攻击每天都在发生。it governance报告显示,仅在2020年11月就有586,771,602条泄露记录。...而当攻击者绕过安全防线发起攻击时,往往都有行为、进程的足迹可以溯源,有.

  • 文章不断更新中..... 20191013 白皮书丨大数据产业发展呈现八大趋势 《2019中国大数据产业发展白皮书》深度解读之一 《2019中国大数据产业发展白皮书》深度解读之二 《2019中国大数据产业发展白皮书》深度解读...

  • 这则漫画中有两只狗:一只黑狗站在电脑椅上,爪子扶着键盘。它望向站在地上、表情迷茫的另一只狗,兴奋地说:「在互联网上,没人知道你是一条狗。 (on the internet, nobody knows you’re a dog.)画中那只狗的...

  • 在此背景下开发的binary authorization for borg(bab) 系统已经在谷歌生产环境中实现了全面覆盖:任何人在生产环境中以任何服务的身份运行任何软件包之前,都必须为目标服务建立一个足够强的bab安全策略。...

  • 1269.利用office宏及powershell的针对性攻击...1267.android安全开发之zip文件目录遍历2016-06-23 1266.search-guard 在 elasticsearch 2.3 上的运用2016-06-23 1265.签名加密破除-burp插件在app接口fuzz中的运用201

  • ethical technical hackers and leets (newport beach, ca) | meetup 命令执行waf绕过技巧总结 - freebuf互联网安全新媒体平台 vectra_cognito_cve_2018_14889_14890_14891.pdf 微信赌场——h5棋牌游戏渗透之旅 - i...

  • 从机制与策略探究linux内核设计之道 陈莉君:西安邮电 16 growing the android ecosystem arm.ppt 钟晓峰– arm中国战略合作经理 17 perfevent与intel pmu介绍 林铭:intel开源技术中心 18 ...

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • stm32单片机fpga毕设电路原理论文报告基于ide硬盘的数字图像存储技术研究本资源系百度网盘分享地址

  • 适合rust入门。深入浅出,事无巨细,远胜市面上所有入门书。而且是免费的

  • vb语言vb房屋租凭管理系统毕业设计(源代码 系统)本资源系百度网盘分享地址

  • 这个示例代码,我们实现了一个用 c 语言判断一个数是否为素数的函数,并通过 main() 函数来测试这个函数。整个过程简单明了,代码结构清晰,易于理解和修改。这个示例展示了 c 语言中函数的定义和调用,以及条件判断和循环等基本语法的使用。

  • 层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例

  • 1、嵌入式物联网单片机项目开发实战,每个例程都经过实战检验,简单好用。 2、代码同系列芯片理论是通用的。其他单片机型号请自行更改。 3、软件下载时,请注意下载方式以及对应的下载工具。 4、技术v:wulianjishu666; 5、如果接入其他传感器,请查看发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。

  • 四脚板凳u型焊接端子冲压成形机sw18可编辑_零件图_机械工程图_机械三维3d建模图打包下载.zip

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

global site tag (gtag.js) - google analytics
网站地图