00:00
大家好,本节案例内容是安卓逆向案例9.1某新闻加密参数分析和还原。我们在进行安卓镜像的时候,首先需要准备好环境,我这里是开了两个模拟器,一个是安卓五的系统和一个安卓七的系统。然后安卓五的系统主要用来抓包,因为它可以避免那个SS校验SSL校验会比较方便一点。另外我们可以通过夜神模拟器的这个文件入手,来进行一些文件或者APK的传输。我们首先打开抓包工具Charles进行接口分析。然后启动该新闻APP。我们选择一个接口,让它进行呃,抓包分析。可以通过CTRLF查找这个数据的位置来确定接口。
01:01
可以发现,现在已经找到这个get请求了,是这个Co list。在这个接口当中,有两个动态参数,一个是时间戳和一个算签名。我们可以再分析一下接口,发现它是一个动态加密的,那我们接下来就来分析这个分值是如何生成的。先关掉抓包工具。然后我们接下来要反编译APP,反编译的第一步需要进行查壳。嗯,我们导入这个APK。先把APK导出到本地。然后复制一下路径。用我们的查壳工具来进行查壳。
02:03
嗯,发现该IP可以未加固,或者我们没有检测到加固,那此时是可以直接用我们的gad gadx来进行反编译。为了节省内存,先把那个模拟器给关掉了。嗯,找到我们的目标APP。然后进行反编译。这里等他加载一下,我们可以先查看一下这个APP的一个自愿文件,来确定一下它的包名和版本。点击资源文件,然后找到这个安卓mini。
03:00
我们一般找的时候,直接在上面搜索PA等号就能找到报名,然后在该行的最左边就有这个version name就是它的一个APP版本。确定无误之后。我们就可以进行去文件资源的一个检索,另外在这个JDX当中是可以查看这个APP的签名的。接下来我们就呃在导航当中点击搜索文本,这里GADX会把所有的代码都进行。都在内存中进行加载,所以说会比较缓慢,呃,我们先等一下。大家在使用的时候需要把这个内存调整一下。因为它默认的内存是4G。对现在大部分APP。
04:04
都是不能够,呃,支持他去反边的。我们看书中的介绍,可以直接去搜索这个关键词进行定位。嗯,马上加载完成。现在我们来搜索这个S关键词。可以发现有24个结果,因为我之前已经是确定过了。另外在我们分析这种自定义加密的时候,它一般都是在这个自己的报名当中,它那些公共报名中,我们可以先去忽略掉这里,直接定位到这个com点顶端里里边。
05:05
然后找到这个C的位置,可以发现这里有一个MD5方法和一个SB2参数。这个MD5方法你可以观察分析,它大概率是一个通用的MD5方法。我们可以后边再调试一下,然后分析这个SD2参数。可以发现它是由这个进行to string之后的字符串,然后这个呃,就是一一个空字符串,然后进行拼接之后生成的。它拼接的内容是这个intri,然后这个intra是一个salt map就是一个有序的集合。可以看到拼接是以等号,这个KV6就是一个等号字符串。
06:04
然后这一段就是把这个STEMKV提取出来,然后用等号进行拼接。那我们接着往上看一下。看一下这个哈,Map。可以发现在上面是六了一个哈希map,然后它里边是存放了这个form data当中的参数。嗯,他把那个。Form data的KV进行了添加,然后以及还有这个APPID。还有这个,呃。Time,还有这个时间戳都进行了添加。另外,因为我们分析的接口当中是没有token的,所以可以忽略掉它。此时这个静态分析是已经完成了,我们就能知道这个。具体的加密方法和一个加密参数。
07:00
那我们接下来进行动态调试,来查看一下这个参数是否和我们分析的一样,先启动freedom。嗯,用ADB进行连接。然后启动我们的FDA。启动之后,我们就执行我们书中的一个代码。这个代码是比较简单的。嗯,我们大概自己看一下就可以理解。就是填写上包名,然后还有这个类名,还有方法名就行。呃,运行这个代码,然后打开APP来触发请求。
08:01
可以发现现在是已经耗到了这个分值。它的一个参数和一个加密结果。我们接下来就是确定一下哪一个是我们这个接口请求时触发的就行。你可以参照书中的这个结果进行对比。这个sin的生成规则就是把URL的参数pumps按照K值排序,然后再用等号拼接,最后加上定制这个APP secret进行MD5即可。
09:06
嗯,第一节的案例分析就到这里了,我们大家自己动手来调试一下。另外,书中有这个代码还原,我们可以拿出来进行测试。就是我们对它的算法进行一个还原。嗯。可以发现已经成功返回数据。说明我们的还原已经成功。
10:00
好,本节案例到这里就结束了。
我来说两句