这是最简单的题目,都在java层。
反编译后看关键源代码:
由于对android程序不熟悉,完全忽略了android.util.Log.i函数。后来看了大牛的writeup,才知道onClick函数里面的3个android.util.Log.i用输出日志信息的方式告诉了密码本、密码,以及猜测的结果。
我用的是标准的分析方法。跟进access$0函数。
密码生成规则是
这个代码的意思就是将用户的输入转成字节数组p4,以p4的每一个字节为索引,在密码本p3中找出对应的字符。这里需要注意的是p3是utf8编码,中文对应3个字节(一个字符),而ascii对应1个字节。
密码本和题目设置的密码(winhex提取):
逆推用户的输入就是找passwd的每一个字在密码本中的索引,输出索引对应的ascii值就可以了。
由于本人的python处理中文编码不过关,所以老老实实在winhex里面3个字节3个字节的搜索,手工计算了。
因为utf8中文字符3个字节,所以winhex里面的偏移要除以3.
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。