好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 babyrjw 于 2016-1-1 13:02 编辑
前面发了两个帖子 http://www.52pojie.cn/thread-448511-1-1.html, http://www.52pojie.cn/thread-448175-1-1.html
一直很简单,后来原作上了SE壳,我这边机器性能不行,不方便调试,分享出已阅读的部分代码,供大家参考
带壳跑比较简单,od挂上后,先alt+M 软件的rsrc 区段F2下断,F9运行,停下来后,执行以下四条od脚本,
repl 4031C9,#0F844E000000#,#EB5290909090#,14
repl 40399e,#0F8407000000B801000000EB05#,#90909090909090909090909090#,25
repl 4048F5,#7505E8B0878600#,#9090B8E4BBA800#,16
repl 40358F,#0F8494000000#,#E99500000090#,14
然后F9继续运行,到登陆窗口后,在OD的内存区域Ctrl+G,跳转到0xa8bbe4,从该地址开始的字节修改为以下数据,修改之前 取消 保持大小的勾
010000003B000000B5C7C2BCB3C9B9A60D0A310D0A322E322E322E320D0A313435303530373837300D0A340D0A3535350D0A360D0A300D0A3134363135303738373000
F9运行,然后在登陆窗口输入任意用户名密码登陆
登陆进入后第一个问题是,查询,和提交车票功能有bug,表现为,输入正确的验证码后程序不提交,重复弹出验证码,输入多次后,查询功能全部返回 未知错误。
外部行为观察:查询功能全部返回未知错误时,程序仍然继续向12306提交,这里的暗桩有两个可能:1是篡改了提交数据,2是篡改了返回结果,时间有限,并未继续跟进,如果其他感兴趣的,希望以下分析对您有帮助
查询订单的代码:
4604f2 这里进入查询线程,查询线程查询到票后,提交线程开始弹出验证码窗口,提交
441406 这里是查询线程的代码入口处44168A 这是查询12306后,12306返回的结果
提交订单的代码
447ECB 判断票是否售完,售完 jmp 44c1B9直接返回
447FDC 拼接url完成后,提交到12306 ConfirmPassenger/autoSubmitOrder
4480D5 判断是否 网络繁忙,稍后重试
448120 判断IP是否 被封
44829B 又提交一次12306 ConfirmPassenger/autoSubmitOrder
4483EB 判断是否12306服务器为响应1
448446 判断ip是否被封
4484AB 使用\r\n分割返回结果
4484E8 判断是否 12306服务器访问失败
448548 判断分割后的字符串为0,则是CDN问题,jmp 44c1b9结束,
4485AE 判断是否含有“result”,如果没有,未知错误,jmp 44c1b9结束,
4486D4 按#号分割后
448769 是否提交订单失败,jmp 44c1b9结束,
4487A2 是否票已售完,放弃提交2,jmp 44c1b9结束,
4487DB 是否余票不足,且不允许部分提交,jmp 44c1b9结束,
448981 getQueueCountAsync
448A80 判断是否含有 ticket:""
448A90 含有着直接跳转44836获取验证码,否则判断各种错误类型
448E54 取回验证码
448F2B 判断取回的验证码是否小于0x2328,大于则进行判断,小于 jmp 4496f5
接下来使用使用若快打码平台判断,返回结果可能是小图未匹配,文字未识别
验证码识别后就准备提交到12306,提交后判断返回结果
448F76 处应该是识别验证码
44D8B0 判断验证码识别方式,0,1,2,3,其中0好像是若快平台,2是手动选择
4496F5 判断是否网络繁忙
44979e 判断是否大于0x3E8,大于则获取验证码失败,
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|