开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 12629|回复: 21
收起左侧

[技术专题] 实战逆向某APP算法(含有常规逆向思路)

[复制链接]
结帖率:100% (1/1)
发表于 2019-9-26 19:04:28 | 显示全部楼层 |阅读模式   山东省济宁市
本帖最后由 无非尘心 于 2019-9-26 19:42 编辑

APP的名字这里就不发出来了,仅仅是提供逆向的一个过程和方法,望对各位逆向同好们有帮助~


不管我们逆向什么APP,基本上都离不开如下的步骤:

1.抓包分析加密字段,了解什么字段进行了加密。

2.查看该APP是否有壳,若有壳,应先脱壳或者从内存中Dump出来smail(dex)代码。

3.拿到smail后转换成java代码,便于代码的阅读和分析。

4.通过查找加密字段(关键词搜索)找到代码逻辑位置。

5.若代码逻辑复杂或有混淆,可以采用Hook来定位关键点

当然以上只是常规的逆向过程,较为复杂的APP加密方法可能放到Native(常说的so层),也可能静态分析不好找到关键点,就要借助动态调试了,这些以后的文章在继续分享。


言归正传,下面实战逆向某APP的加密算法啊。


第一步:抓包分析该APP的加密参数 由于该APP在模拟器上跑不起来,这里采用真机进行调试。

这里我们先看登录,通过抓包可以看到报文如下图:

3.png



这里一共有三个参数:codeType(此值猜测为固定数 不进行分析),mobile(提交发送验证码的手机号),sign(请求加密)。


这里的sign就是我们本次要逆向分析的。此时他的值为:sign=2b9b87014724ac0a9c2fe6175e69f88adadaf020


通过经验判断,可能是使用了MD5加密或者SHA1加密,我们这里不改手机号,从新发一下验证码看看sign是否变化来确定是否明文拼接了时间戳

4.png



这里我们看到,重新提交登录后,sign并没有发生变化,接着我们改变手机号,看sign的值

5.png


此时sign的值发生了变化,那么这里我们可以基本确定:sign的加密的明文并没有加入时间戳等时刻变化字符,而是拼接了请求的参数和其他的固定值


此时三个值都要记录下来 codeType,mobile ,sign 。 为何?因为什么搜索的时候sign的字符可能会有很多,所以我们搜索的时候要多尝试搜索别的关键字,譬如codeType。



第二步:我们查看该APP是否有壳,很高兴,此APP并没有采用什么加固


1.jpg

既然没壳,那么就不需要Dump了,直接解压该APP提出来,当然更为妥当的是用apptool解包,这两种方法都可以,看各位的想法了。

2.jpg

这里我解压出来有两个dex文件,不知道核心代码在哪个dex文件里面,这两个我们都给他用dex2jar转换成jar

6.jpg

这里我们将dex转换成了java代码(因为毕竟是反编译,和原始的代码会有些许的差距 这里不影响下面的分析

打开jd-gui,将我们反编译回来的两个jar拖进去进行分析。我们这里搜索codeType这个关键字,sign根据经验来说,搜索出来的肯定有好多处。

10.jpg

通过搜索,我们定位到了关键点,三个参数我们都直观的看到了

11.jpg

这里我们看到,sign有一个关键词:sha1,跟我们最初的猜测可能使用了sha1加密不谋而合,知道了采用什么方式,我们就需要知道它对哪些参数进行了加密,我们 一步步的跟踪进行分析
我们点击进入sha1的这个方法,可以看到如下图:

12.jpg

代码还是比较清晰明了的,具体如下:

1.@#filestorm@#FST 将此参数放到参数的最前面
2.参数进行按照首字母进行取值拼接 后面跟#$
3.进行sha1加密,得到sign值

我们现在来进行检验是否正确:

13.jpg

最后得到了和我们sign一致的值,至此,我们的分析到此结束。

评分

参与人数 2好评 +1 精币 +3 收起 理由
偶来了 + 1 + 2 支持开源~!感谢分享
怀念ob + 1 楼主好人

查看全部评分


本帖被以下淘专辑推荐:

结帖率:30% (6/20)

签到天数: 3 天

发表于 2019-9-27 03:12:47 | 显示全部楼层   辽宁省鞍山市
看的不是很明白,谢谢大佬
回复 支持 反对

使用道具 举报

结帖率:38% (12/32)
发表于 2019-9-27 17:03:05 | 显示全部楼层   山东省济宁市
这不尘心大神嘛膜拜学习了
回复 支持 反对

使用道具 举报

结帖率:87% (46/53)

签到天数: 1 天

发表于 2019-9-28 16:07:17 | 显示全部楼层   重庆市重庆市
前面都能看懂,最后一步就懵逼了
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2019-9-28 18:02:05 | 显示全部楼层   山东省济宁市
怀念ob 发表于 2019-9-28 16:07
前面都能看懂,最后一步就懵逼了

以后再写文章更通透一点~
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2019-9-28 18:38:46 | 显示全部楼层   山东省济宁市
xuxianqianga 发表于 2019-9-27 03:12
看的不是很明白,谢谢大佬

下篇文章的时候回讲的更通透一点~
回复 支持 反对

使用道具 举报

结帖率:30% (6/20)

签到天数: 3 天

发表于 2019-9-29 12:13:57 | 显示全部楼层   辽宁省鞍山市
谢谢你的教程。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

结帖率:87% (46/53)

签到天数: 1 天

发表于 2019-9-29 21:11:59 | 显示全部楼层   重庆市重庆市
无非尘心 发表于 2019-9-28 18:02
以后再写文章更通透一点~

感谢大佬分享,受小弟一拜
回复 支持 反对

使用道具 举报

结帖率:87% (132/151)

签到天数: 1 天

发表于 2019-10-1 22:29:31 | 显示全部楼层   河南省郑州市
可以  后面那个sh1里的java代码 看的不是太明白  好几个stringBuilder 还有value什么的
回复 支持 反对

使用道具 举报

结帖率:83% (20/24)
发表于 2019-10-3 10:23:24 | 显示全部楼层   山东省青岛市
大佬可否更新视频语音教程
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表