带你玩一波骚操作,如何破解抓包工具Charles!

一、前言

我们在进行应用开发过程中有时候可以需要进行抓包测试数据,比如模拟服务端的下发数据和我们客户端的请求参数数据,特别是测试人员在进行测试的过程中都会进行抓包,当然我们在破解逆向的过程中也是需要用到抓包工具,因为我们抓到数据包可能就是我们破解的突破口,那么我们可能常用的都是Fiddler工具,但是这个工具有一个弊端就是只能在Windows系统中使用,但是还有一个厉害的工具就是跨平台工具Charles,之所以他是跨平台的就是因为他使用Java语言开发的,而且也非常好用。但是这个工具有一个不好的地方就是有一个购买功能,如果不购买的话当然可以使用,但是有时间限制和各种提示,看着也挺烦的,网上也有相应的破解教程,但是并没有破解的步骤,所以这个就由我来做吧。

二、逆向分析

首先我们去官网下载一个Charles工具,这里下载了Mac中的工具:https://www.charlesproxy.com/download;下载之后直接安装就可以了,然后我们打开使用:

image.png

这时候我们看到上面有一个提示就是30天的试用期,然后每次开启都有这样的提示,而且进入使用的时候当需要查看一条请求信息的时候也会需要等待很久,感觉特别不舒服,所以我们需要破解他,破解他是因为他是跨平台的,的确在Mac系统中这个工具还是非常重要的,其次是他是Java编写的,破解难度低,要是Windows中的工具让我去破解,那就很困难不去这折腾了。所以从这一点看我们Android中把重要信息放到so中去做是多么重要。好了我们看到这个提示我们操作也比较简单,因为是Java编写的,所以Mac中安装之后直接取应用程序中右键显示程序包内容:

image.png

显示包内容之后,我们就可以去Java文件夹中查找一个charles.jar文件了,然后直接jd-gui直接打开即可:

image.png

用jd-gui打开charles.jar之后,直接全局搜索字符串:This is a 30 day trial version…

image.png

然后点击进入查看:

image.png

看到这里就发现一个方法了,然后在点击进入查看:

image.png

看到这里接下来我们就开始修改这个方法的返回值来看看效果,不过这里我们修改返回值可以有两种方式,当然第一种方式是最开始我能想到的,因为在几年前我弄过这个东西,就是修改第三方的SDK中的功能,比如打开日志等,这时候就需要去修改他们的jar包内容了,那时候的操作非常简单思路也很清晰,因为我们知道jar中的是class文件,我们可能没有或者很难去修改class文件,但是我们可以修改smali文件,所以思路就是把jar转化成dex文件,这个直接用dx命令即可,然后在把dex弄成smali文件直接修改即可,然后在打包回去。当然我们也可以直接编写一个对应的Java文件,然后编译成class文件替换jar中的位置,但是这么操作有版本问题,很难控制。当然这里我们都没有采用这种方式,因为这种方式的实现成本太大,因为这个jar的结构:

image.png

这么看到这个结构很复杂,所以这么操作直接把jar转化成dex会出现一些问题,所以这里我们用一个新的办法,以后大家都可以用这种方式直接操作jar文件,其实准确说直接操作class文件,我们知道编译之后的class文件很难改变,就可以用这种方式进行改变,这个就是javassist,其实之前我们用过asm这个库也修改过class文件的。这个原理都差不多,接下来我们就在AndroidStudio中直接操作吧。

三、破解修改

首先我们导入这个库,然后开始编写代码直接操作,关于这个库的具体用法可以自行搜索查阅:

image.png

AndroidStudio中可以新建Java工程然后进行操作,具体如何新建Java工程可以自行搜索,这里不做太多的介绍了,因为最近RxJava这个框架很火,所以这里就利用这个框架进行了简单的使用,也让大家体会到这个框架的作用:

image.png

看到RxJava框架会把代码变得更有顺序化,代码简洁明了,以后再Android中会用到更多,大家可以去我的小密圈看看我总结的这个框架的用法,然后我们直接运行即可,然后在目录下就生成了一个新class文件,然后直接找到我们修改后的jar文件:

image.png

看到这里我们就把之前分析的那两个方法修改了,然后我们在把这个破解之后的jar文件替换成原有的charles.jar运行即可:

image.png

启动软件之后看到没有任何过期提示,使用过程中也没有任何提示了,然后我们可以愉快的抓到抖音的请求数据了,关于更多抖音的破解知识可以去我的小密圈查看:

好了到这里,我们就成功的破解了charles工具了,为了安全考虑本文涉及资源可以去编码美丽小密圈自取。

本文的目的只有一个就是学习逆向分析技巧,如果有人利用本文技术进行非法操作带来的后果都是操作者自己承担,和本文以及本文作者没有任何关系,本文涉及到的代码项目可以去编码美丽小密圈自取,欢迎加入小密圈一起学习探讨技术

四、总结

大家可以看到这一次破解其实是非常简单,就是因为Charles用了Java语言开发,当然这个是多平台的前提,那么有人好奇为啥Charles不直接进行授权key作为处理,这样就需要强制购买才可以使用了,但是还是那句话,一个工具类app首先他的功能肯定是在本地的,只是一个开关控制一项功能是否开启,那么如果他用了Java这种比较弱的简单逆向语言开发,他怎么防护都没有用,开关只是0和1问题。本文我们学习到了一种新的操作class文件的方法,这个方法对于以后操作都会用到,比如Android中很常用的热修复框架Robust,他的内部需要在编译阶段修改class文件插入代码,就用了这个库文件。当然还有其他案例,在本文中我们也看到了RxJava这个框架的好处,他能够把代码变得非常简洁,同时要说的是现在很多应用都用了这个框架以及Retrofit网络框架,这两个框架对于开发过程中的确很好,但是当我们反编译应用查看代码就很蛋疼了,因为这两个框架把代码简洁化,很难读懂的。

原文链接:http://www.520monkey.com/archives/1295

你可能感兴趣的:(带你玩一波骚操作,如何破解抓包工具Charles!)