初学者,希望各位大佬勿喷,原本想搞一下这个盒子的签到功能,方便每天签到,但是没想到倒在门口了,记录一下过程,后续技术精进了再研究或者看看有没有大佬感兴趣的,可以顺着思路继续研究下去
先抓两个登录的包,对比发现短时间内就传递的参数改变了,首先就分析参数,发现发送的参数是加密的,我们需要获取到没有加密的参数 直接搜索域名后缀,定位到这,点击loadData方法进去,具体的发送逻辑就在这
原本是想直接hook的,但是没想到居然闪退了,继续附加了几次,确定是有检测(更换端口也无效),尝试打印启动的线程,最后追踪到 libmsaoaidsec.so 这里就闪退了 ai分析很大可能是这里,尝试将其hook掉,但是技术不到位,虽然hook掉了,软件也卡在进入页面不进去了,正当要深入研究so的时候,朋友给我展示了一波学会搜索的重要性 原来早就有大佬分析过了【地址:https://bbs.kanxue.com/thread-285811.htm】,感谢Bileton大佬的分享,靠着第一个替换函数直接过了
首先hook一下loadData,发现最后面的参数打印出来是Object,按x看看哪里调用,但是发现出来的结果太多了,想一一分析根本做不到,所以直接加个堆栈打印
跟踪堆栈发现上层是loginByUsernameAndPassword方法,直接过去看看是做了啥,代码有点长,直接ai分析,确定是登录逻辑的位置 hook最后传递的new方法,看看参数,str是账号、str2是密码,还是明文,看来加密的地方不在这,那重点就放在loadData方法里面的逻辑了 这个方法里面的代码也太长,我这就不截图了,有兴趣的可以下载APP看看,一开始分析逻辑没发现什么异常点,所以hook了最后发送网络请求部分看看参数,没想到有意外的发现,密码已经加密了,还多了个sign,直接搜索名称看看 password搜索不到,sign出来的数据太多了,最后是username有新的收获,搜索到了这里,和参数很像,查看调用是来源于buildRequestParams方法,然后看看这个方法的调用,出来的第一个结果在loadData方法里面有使用,那基本上确定了这个就是密码的加密地方了
追踪desCbcEncrypt,来到了这里,发现是so层的,IDA打开 呃呃呃,点击进去发现不仅字符串加密了, 逻辑也加密了,完全看不到信息和进行反编译,一开始以为是so被加固了尝试从内存里面将so进行dump,然后修复打开,但是发现变化不大,通过打印出来的注册地址,跳转过去,也没办法转换c 后面觉得很眼熟,搜索了一下,才发现貌似是孤挺花ollvm,但是个人目前能力有限,没办法继续分析下去了
COLUMN_PACKAGE_SIGN的定义就是sign,最终来到getServerApi,也是so层
就一个时间戳
java层的话不算很简单,但也不是很难,费点时间还是能分析个七七八八的,但是参数最终都是走到so,关键算法都是在其中,但是个人目前技术有限,暂时没办法分析下去了,就先这样吧
[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!
mb_cfjwplfo 您好,可以把这个libms的so文件跟创建的线程id发我一份吗[em_092]