反向工程“你的使用说明书”小记

那是2018年的四月三日,我,还有几个同学,做了网易云音乐的小测试。
测试的背景是这样的:输入用户名和性别,选择性别,做六个题。题是听一段音乐,从三个选项中选出你认为最接近的。做完题后,会得到一张图片上有你的使用说明书,三条文字。
这以后几天,我的老师杨老师,给了我一个任务:反向工程 网易云音乐测试的代码。
我先是试了几次,感觉得到的答案挺不一样的,粗略估计穷举工作量没完,放弃了穷举。
然后是。用谷歌浏览器看代码。看文件夹,看到了存放问题图片素材的文件夹,标号最多到15(后来知道有16),一共六个。于是我猜测,问题是从15个问题中随机生成的。
代码是html调用两段js,最开始我不会看,经老师提示用Astyle,我自己百度找到了js代码格式化工具,华哥说,浏览器*(chrome and firefox)都有pretty print功能,可以一行行看代码。此时我对JavaScript这个语言知之甚少。
我先是漫无目的的遍历代码。两万多行,第一个大收获是找到了说明书的文本。一共66条,我的乖乖,这要穷举,得穷举到猴年马月去。
接下来是以各种关键词在代码中搜索,遨游。notepad++看代码很好。比较给力的一个关键词是“spec”,直指结果。然后我又试图去找一些中间结果的变量,函数,都没找到尽头。代码是混淆过的,许多变量名是n,N,A,a,U,u。函数名也乱七八糟。
此时是有点崩溃的,老师给予我的一个建议是二分修改代码,调试。据说firefox有此种功能,然而我并未找到支持此种功能的插件。
然后我学了两天的JavaScript。发现它也只是一门编程语言,也是有作用域的,也是要定义函数的。一开始的神秘感消失了,并且坚信有一天会做出来的。
昨天,我把代码下载到本地,然而并没想我期待的一样运行起来。我对这个网站的运行环境并不了解。
终于在今天,我在关键词spec附近找到了判断spec的逻辑。是的,跟听什么歌选什么选项毫无关系,跟性别倒是有一点关系。把66个spec根据标签和性别,能分成几个不同的类,check函数中判断能否选择,详见图片。值得一提的是,spec备选项中有一个属性叫foodie,翻译成中文可以是“吃货”。生成了文字之后,还要转成图片。不过怎么转成图片我没有找出来。可能那个函数不在这个文件里。



杨老师提醒我,为长期工作记录日志。八天里我记录了两天。期待下一次工作我的进步。

猜你喜欢

转载自www.cnblogs.com/gaoyb348/p/8856192.html