好友
阅读权限20
听众
最后登录1970-1-1
|
大家也多多送点免费热心哈,我也有动力继续更新
本人技术水平有限,因为我在分析的时候是通过word 文档写出来的,分析流程是在word文档里面完成的。这里图片没有,我文字流程上传到附件里面的,
此文仅限学习交流,因为分析得比较仓促,word文档只是我在边分析,边写出来的,里面全部都是个人想法
POST https://mapi.4399api.net/user/box/android/v1.0/log-in.html HTTP/1.1Content-Length: 173Content-Type: application/x-www-form-urlencodedHost: mapi.4399api.netConnection: Keep-AliveUser-Agent: 4399GameCenter/4.7.0.26(android;xiaomi 8;5.1.1;540x960;WIFI;1322.352;a4399)Accept-Encoding: gzipmauth: mareacode: 422800mauthcode: SM-DEVICEID: 20200326001043964fd95e7eddf8c9488cb8764cd01bc80181881b00f7a24em-id: 00%3A81%3Aa7%3A06%3Ac1%3A43a-id: cf291fb402b63fece-id: 865166028184599mdeviceId: 865166028184599pauth: s-id: 460005523373818mudid: 1094gpgEdBptNoZEa0tMUf606
dateline=1585152691&deviceIdentifier=865166028184599&info=1&model=xiaomi+8&password=lKbiScPzO7%2BARbqYcynHTQ%3D%3D&sign=0809033c79e0897036c8abef08b67371&username=yutao531315
第一步,进行抓包操作。看到关键字段,password 字段,密码字段,采用加密算法是 贝斯64算法
sign name 未加密定位按钮事件方法方法1 通过搜索网址信息v1.0/log-in.html 在类中位置是 Lcom/m4399/gamecenter/plugin/main/controllers/user/LoginFragment; ,定位到 onClick(Landroid/view/View;)V 关键 方法
这里我们就找到突破口了,这是我们还通过另外一种方式来定位关键点,主要是用于灵活定位关键点,采取多种方法方法2 通过ui分析工具,抓取到按钮id名称,通过搜索名称,索引到按钮id ,接着搜索按钮id 0x7f3b0729 同样可以定位到关键点,
关键点,onclick 按钮事件定位到了以后,接着就要查看java代码。找到相对应的类 Lcom/m4399/gamecenter/plugin/main/controllers/user/LoginFragment;
分析java 逻辑。OnFocusChangeListener 成功进入到 java层逻辑 代码,LoginFragment 是继承自a方法,接口 按钮监听事件,以及OnFocusChangeListener 处理控件焦点改变的事件
通过onclick 事件里面的 login_button 按钮,定位到此处是我们点击登录按钮调用的逻辑
通过索引,定位到此处是设置 ,Password 以及name 的值。 继续跟踪。进入loadData 类
看到 super 关键字,调用loadData 方法继续进入
看到通过层层定位,找到了一个抽象方法
public abstract void buildRequestParams(String str, ArrayMap arrayMap);
这个因为是 这里是实现的抽象方法 ,这个类也是抽象类buildRequestParams
抽象方法表示的是 ,定义却未实现的类,
同时抽象方法所在的类,也要用abstrac 进行修饰,说明是抽象类,
抽象类是不能直接进行调用的,需要子类继承自抽象类,而抽象类方法的实现,在子类实现
成功找到抽象方法定义位置,调用了buildRequestParams
成功定位到sig字段位置
调用了buildSignValue 方法
而继续通过,AppNativeHelper 字段调用getServerApi
public static final native String getServerApi(String str);看到了一个native 修饰的方法,说明sig 字段是在so层实现的。到这里,我们就已经把sig 字段来源定位出来了。 通过java代码分析,得出程序是调用 libm4399.so getServerApi(String str); 传入的参数是一个str 字符串 而str 字符串集,是通过这个算法得出的,具体查看传入的字符串是什么值,可以通过hook public String buildSignValue(String str) { return AppNativeHelper.getServerApi(str);} 这个方法打印参数信息,hook代码这里就不写了,比较长当然也可以通过动态调试small 代码查看。
!分析到这里以后,此协议关键字段,sig的来源,就已经理清楚了,下面还有一个pasword字段。其实通过之前的分析,我们已经看到了,password 的字段的来源,但是我们本着寻根问底的原则,一定还是要跟着程序的执行流程,寻找突破点。
通过跟踪,发现还是调用了一个抽象方法。 找到其实现的位置。
Passward 字段这时候也就出来了,很明显看得出来是 通过dexcbc算法来实现
Native 修饰的关键词,都是通过so 来实现的
到这里4399 java层逻辑就分析完了。
POSThttps://mapi.4399api.net/user/box/android/v1.0/log-in.html HTTP/1.1Content-Length: 173Content-Type:application/x-www-form-urlencodedHost: mapi.4399api.netConnection: Keep-AliveUser-Agent:4399GameCenter/4.7.0.26(android;xiaomi 8;5.1.1;540x960;WIFI;1322.352;a4399)Accept-Encoding: gzipmauth: mareacode: 422800mauthcode: SM-DEVICEID:20200326001043964fd95e7eddf8c9488cb8764cd01bc80181881b00f7a24em-id: 00%3A81%3Aa7%3A06%3Ac1%3A43a-id: cf291fb402b63fece-id: 865166028184599mdeviceId: 865166028184599pauth: s-id: 460005523373818mudid: 1094gpgEdBptNoZEa0tMUf606 dateline=1585152691&deviceIdentifier=865166028184599&info=1&model=xiaomi+8&password=lKbiScPzO7%2BARbqYcynHTQ%3D%3D&sign=0809033c79e0897036c8abef08b67371&username=yutao531315 第一步,进行抓包操作。看到关键字段,password 字段,密码字段,采用加密算法是 贝斯64算法 sign name 未加密定位按钮事件方法方法1 通过搜索网址信息v1.0/log-in.html 在类中位置是 Lcom/m4399/gamecenter/plugin/main/controllers/user/LoginFragment; ,定位到 onClick(Landroid/view/View;)V 关键方法 这里我们就找到突破口了,这是我们还通过另外一种方式来定位关键点,主要是用于灵活定位关键点,采取多种方法方法2 通过ui分析工具,抓取到按钮id名称,通过搜索名称,索引到按钮id ,接着搜索按钮id 0x7f3b0729 同样可以定位到关键点,
关键点,onclick 按钮事件定位到了以后,接着就要查看java代码。找到相对应的类
Lcom/m4399/gamecenter/plugin/main/controllers/user/LoginFragment;
分析java 逻辑。OnFocusChangeListenerfile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg
Native 修饰的关键词,都是通过so 来实现的
到这里4399 java层逻辑就分析完了。
哦 对了,这里应该搞个总结,
总的来说,我们是分析了,password 字段,跟sig字段的来源,password 是通过加载libm4399.so 调用里面的
desCbcEncrypt(String str); 这个方法来得到加密密码
sig 字段是 getServerApi(str); 字段获取,都是在so层实现的。
要是大家觉得还行,评分超过50 + ,我会在下面的时间在把 so层动态调试,给走一遍。!希望能给予大家一些帮助, 谢谢大家啦
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|