开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 17752|回复: 17
收起左侧

[交流] 安卓app数据模拟分析----so库函数简单加密篇

[复制链接]

结帖率:90% (9/10)
发表于 2015-4-21 23:20:30 | 显示全部楼层 |阅读模式   广东省江门市
此文章纯属位了锻炼我语言组织能力的而发的,如果有什么地方说得不够专业或者不好,请一笑而过。。。。


(适合有一点基础的人看。。。。)
app下载地址:http://www.2094.cn/

实验目的:找出登陆sign的加密方法

通过关键字(“sign”)的搜索,和根据个人经验判断可以定位在这里(看图)ps:有些关键字不是直接暴露在java代码里的,app开发者机智一点的会把关键字,封装在so库里面然后通过一个函数调用的,这样你怎么搜索页搜索不到关键字的。。。所以你的去看反汇编so库了


然后用jd-gui定位到此代码里,查看代码继续分析,


点一下NativeMD5Utile这个函数然后就会自动跳转到该函数处



然后一看到System.loadLibrary对不熟悉so反汇编的人就会大骂一声。靠~但反正都找到这里为何不继续往下,也许so加密没有我们像得那么复杂泥。

因为需要分析so库,所以我们要吧下载回来的apk后缀改成zip打开,定位到lib-----armeabi,把里面的libutil.so解压出来备用。

下面反汇编我们需要用到 IDA Pro 这个软件,具体下载地址我就不给了,自己百度去。。。。这个都懒得百度就不用往下看了。。。。


打开软件,把libutil.so拉进去,选择ARM,点击set,点击ok,然后看图




进去后我们看左边的函数列表,这个so库的开发者不够机智所以保护机制不是很好,jin调用的函数都没经过加密,加壳什么的就直接出现在左边的函数列表上了,不过大多数安卓用的so库主要函数是不直接出现在左边的列表上的,这个你反汇编其它app的so库时,自己留意一下




双击我们那个加密的函数NativeMD5Utile我们可以看到出现一大片arm汇编指令,这个我也看不懂,于是也是靠猜的。。。。看不懂不要紧,我们可以利用ida pro的F5一键反汇编成伪c代码,虽然有时候也是看不懂,但是好理解和好猜一点。。。。


选择函数,按下F5键



可以看到(我是猜的)把一个字符串和参数传进来的值进行md5加密,这时我们直接去双击jstringTocharAppendKey这个函数,但狗血的时这个函数不能F5,所以直接看arm指令(下面就靠猜和经验)




找到如图一串字符,下面就可以猜到(参数值+这个字符串)md5,先这样,返回去看java代码

回到md5加密这个函数,可以看到有两个参数,第一个直接不用管它,不要问为什么!我智商解释不了。。。第二个参数paramr.a(),跟进去看看点一下参数paramr隔壁那个r自动跳转



进去该函数,找到a()这个方法如下图




下面就看你会不会一点java了,不会的话就靠猜了~


扩展一下,java的post提交通常都是用一个集合提交的
格式是xxxx.put(参数,值)
然后把xxxx.toString()这样提交上去的


所以上面代码,我们可以猜到先把这个集合排序一下
java提供了直接排序的方法sort


直接排序数字数组等基本类型的可以用 Arrays.sotr()


集合就用Collections.sotr(集合,排序规则)

下面用代码来演示一下这个函数(图上面是用 new s(this),其实他是新建一个类实现Comparator这个接口),而我的演示时直接匿名类,结果都是一样的







排序后可以发现,规则是根据ascii码的大小从小到大排序的(在看演示)


a=97 c=99 A=65而上上图中的o1.compareTo(o2)返回的是o1的ascii码-o2的ascii码

97-99=-2
99-65=43
97-65=32

所以:a,c,A排序后就是A,a,c

看完上面后基本就完工了,下面就是验证加密的准确性了
r=user%2Fnewlogin&username=fuckyou&password=as123456
排序后(这个sort排序可以直接精易模块里的数组_排序()命令也可以用js的sort直接排序,js代码下面给出)
password=as123456&r=user%2Fnewlogin&username=fuckyou

然后就是MD5了(排序后的值加上刚才在so库里面找到的字符串MD5)
MD5(”password=as123456&r=user%2Fnewlogin&username=fuckyou“+“Xsdrf#@sdg$#^fh54342DFert2Deert”)

经本人测试,加密的的sign是可用的(不要问为什么不直接给代码,因为这只是分析思路)


本人技术也不咋的,所以有很多地方也是靠猜的,多猜猜,多动动手就会积累到经验{:soso__3110130392203091378_3:}

本人看完下面就结束,如有批评请好好说!

js 排序代码

function a(str)
{
var lin=str.split("&");
lin.sort();
return lin.join("&");
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点评

tm的又说漏了一些。。。。。   广东省江门市  发表于 2015-4-21 23:24

评分

参与人数 5好评 +5 精币 +28 收起 理由
zhangjun1314 + 1 + 2 支持开源~!感谢分享
ixiaobai + 1 + 4 牛逼啊,向楼主学习了
简简箪箪 + 1 + 2 饭大大 厉害 H大大是不是也应该来装
sjx168 + 1 ceshi555
Hoibben + 1 + 20 米饭好厉害哦~

查看全部评分

本帖被以下淘专辑推荐:

结帖率:0% (0/1)
发表于 2017-8-24 07:41:30 | 显示全部楼层   湖南省湘潭市
        支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)
发表于 2016-2-13 11:46:54 | 显示全部楼层   湖南省长沙市
学习了,为什么是libutil.so这个文件呢?

点评

看前面。System.loadLibrary("util"); 前缀lib是自动添加的   广东省佛山市  发表于 2016-2-16 19:40
回复 支持 反对

使用道具 举报

发表于 2016-2-8 16:54:04 | 显示全部楼层   江苏省泰州市
看下ida的使用
回复 支持 反对

使用道具 举报

结帖率:64% (18/28)
发表于 2015-11-14 16:53:53 | 显示全部楼层   广东省梅州市
app数据分析多半都是靠关键字猜的。
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2015-10-29 21:06:41 | 显示全部楼层   辽宁省鞍山市
这才叫教程。是怎么分析的流程,而不是给出结果,上来发出结果后来的学员没任何帮助。官方更新后。只有源码的帖子没任何用处。
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2015-10-29 20:57:34 | 显示全部楼层   辽宁省鞍山市
谢谢这么好的教程
回复 支持 反对

使用道具 举报

发表于 2015-7-4 21:55:42 | 显示全部楼层   广东省梅州市
哈哈  笑死我了   都是靠猜的啊    我一般是复制到百度看看大体是啥意思   然后在猜
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2015-5-16 22:17:57 | 显示全部楼层   江苏省常州市
我靠   都是牛牛啊  
回复 支持 反对

使用道具 举报

发表于 2015-5-5 22:38:35 | 显示全部楼层   四川省德阳市
总结一下。基本靠猜的~
回复 支持 反对

使用道具 举报

结帖率:47% (8/17)
发表于 2015-5-5 19:10:30 | 显示全部楼层   上海市上海市

+1
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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