-
-
[原创][原创]AliCrackme_1.apk第一题解题
-
发表于: 2015-1-23 12:41 2143
-
0x01:希望没有标题和格式要求。
0x02:密码:581026
0x03:解题思路:
1.首先运行查看apk,只有一个页面,和输入框,随便输入01234,提示错误,
查看log发现有log信息:有table/pw/enPassword 三个提示
2.apktool 反编译,首先查看java代码查看大致逻辑:
大概逻辑为:获取用户输入str1 ,获取字典str2 ,获取最终密码str3 ,
将str1 和str2 进行运算后结果得str4
比较str3 和str4 得出结果
3.接下来主要分析 str1和 sr1 运算。
java代码逻辑已经混乱,开始查看smail语句
将str1和str2进行运算主要函数为:bytesToAliSmsCode,参数为str2,str1.getBytes("utf-8")
分析函数功能为:根据str1的Ascii值在str2中获取对应index字符串
4.验证:编写javademo,获取pw输出字符串在table中index,然后转换成char。
获取密码:581026
javademo代码:
分析完毕,第一次发帖,编辑框不熟悉,格式方面见谅了...
ps:smail 语法其实没太看明白,看到了charAt(),然后就猜测的...
大概用了一个小时,中间忙其他的了
估计有些人看到log就能猜测是index了吧
0x02:密码:581026
0x03:解题思路:
1.首先运行查看apk,只有一个页面,和输入框,随便输入01234,提示错误,
查看log发现有log信息:有table/pw/enPassword 三个提示
2.apktool 反编译,首先查看java代码查看大致逻辑:
大概逻辑为:获取用户输入str1 ,获取字典str2 ,获取最终密码str3 ,
将str1 和str2 进行运算后结果得str4
比较str3 和str4 得出结果
3.接下来主要分析 str1和 sr1 运算。
java代码逻辑已经混乱,开始查看smail语句
将str1和str2进行运算主要函数为:bytesToAliSmsCode,参数为str2,str1.getBytes("utf-8")
分析函数功能为:根据str1的Ascii值在str2中获取对应index字符串
4.验证:编写javademo,获取pw输出字符串在table中index,然后转换成char。
获取密码:581026
javademo代码:
/** * 根据key找到字典inde,index为ascii值,进行转换获取真实index */ private static void findChar() { String str = "一乙二十丁厂七卜人入八九几儿了力乃刀又三于干亏士工土才寸下大丈与万上小口巾山千乞川亿个勺久凡及夕丸么广亡门义之尸弓己已子卫也女飞刃习叉马乡丰王井开夫天无元专云扎艺木五支厅不太犬区历尤友匹车巨牙屯比互切瓦止少日中冈贝内水见午牛手毛气升长仁什片仆化仇币仍仅斤爪反介父从今凶分乏公仓月氏勿欠风丹匀乌凤勾文六方火为斗忆订计户认心尺引丑巴孔队办以允予劝双书幻玉刊示末未击打巧正扑扒功扔去甘世古节本术可丙左厉右石布龙平灭轧东卡北占业旧帅归且旦目叶甲申叮电号田由史只央兄叼叫另叨叹四生失禾丘付仗代仙们仪白仔他斥瓜乎丛令用甩印乐"; String[] key = {"义","弓","么","丸","广","之"}; StringBuffer sb = new StringBuffer(); for (int i = 0; i < key.length; i++) { char ch = (char) str.indexOf(key[i]); ; sb.append(""+ch); } System.out.println("gotIt:"+sb.toString()); System.out.println(":)"); }
分析完毕,第一次发帖,编辑框不熟悉,格式方面见谅了...
ps:smail 语法其实没太看明白,看到了charAt(),然后就猜测的...
大概用了一个小时,中间忙其他的了
估计有些人看到log就能猜测是index了吧
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
看原图
赞赏
雪币:
留言: