-
-
[原创][原创][原创]解题思路
-
发表于: 2015-1-26 13:46 2416
-
1. 运行程序在log中看到了
01-26 13:16:57.008: I/lil(16424): table:一乙二十丁厂七卜人入八九几儿了力乃刀又三于干亏士工土才寸下大丈与万上小口巾山千乞川亿个勺久凡及夕丸么广亡门义之尸弓己已子卫也女飞刃习叉马乡丰王井开夫天无元专云扎艺木五支厅不太犬区历尤友匹车巨牙屯比互切瓦止少日中冈贝内水见午牛手毛气升长仁什片仆化仇币仍仅斤爪反介父从今凶分乏公仓月氏勿欠风丹匀乌凤勾文六方火为斗忆订计户认心尺引丑巴孔队办以允予劝双书幻玉刊示末未击打巧正扑扒功扔去甘世古节本术可丙左厉右石布龙平灭轧东卡北占业旧帅归且旦目叶甲申叮电号田由史只央兄叼叫另叨叹四生失禾丘付仗代仙们仪白仔他斥瓜乎丛令用甩印乐
01-26 13:16:57.008: I/lil(16424): pw:义弓么丸广之
真正的密码就是“义弓么丸广之”中每个汉字在table中的索引。
2. 用IDA打开crackme.so找到Java_com_yaotong_crackme_MainActivity_securityCheck函数
R2中存放着密码,直接修改后面的3条指令,把密码打出来。
3. 真正的dex已经被隐藏,通过改写源码在ActivityThread.java中的handleBindApplication函数,在mInstrumentation.callApplicationOnCreate(app); 调用后面把classloader中所有注册了的cookie 指向的dex dump出来,dump出来的dex 中所有方法的codeoff都需要修正,所以又把dex中codeoff指向的那一片内存dump出来,跟原来dump出来的dex拼在一起,然后用baksmali解包,再smali打包,完整的dex就出来了,剩下的就是逆向这个dex。通过在smali中插日志的方式,最终把密码确定。
01-26 13:16:57.008: I/lil(16424): table:一乙二十丁厂七卜人入八九几儿了力乃刀又三于干亏士工土才寸下大丈与万上小口巾山千乞川亿个勺久凡及夕丸么广亡门义之尸弓己已子卫也女飞刃习叉马乡丰王井开夫天无元专云扎艺木五支厅不太犬区历尤友匹车巨牙屯比互切瓦止少日中冈贝内水见午牛手毛气升长仁什片仆化仇币仍仅斤爪反介父从今凶分乏公仓月氏勿欠风丹匀乌凤勾文六方火为斗忆订计户认心尺引丑巴孔队办以允予劝双书幻玉刊示末未击打巧正扑扒功扔去甘世古节本术可丙左厉右石布龙平灭轧东卡北占业旧帅归且旦目叶甲申叮电号田由史只央兄叼叫另叨叹四生失禾丘付仗代仙们仪白仔他斥瓜乎丛令用甩印乐
01-26 13:16:57.008: I/lil(16424): pw:义弓么丸广之
真正的密码就是“义弓么丸广之”中每个汉字在table中的索引。
2. 用IDA打开crackme.so找到Java_com_yaotong_crackme_MainActivity_securityCheck函数
R2中存放着密码,直接修改后面的3条指令,把密码打出来。
3. 真正的dex已经被隐藏,通过改写源码在ActivityThread.java中的handleBindApplication函数,在mInstrumentation.callApplicationOnCreate(app); 调用后面把classloader中所有注册了的cookie 指向的dex dump出来,dump出来的dex 中所有方法的codeoff都需要修正,所以又把dex中codeoff指向的那一片内存dump出来,跟原来dump出来的dex拼在一起,然后用baksmali解包,再smali打包,完整的dex就出来了,剩下的就是逆向这个dex。通过在smali中插日志的方式,最终把密码确定。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
看原图
赞赏
雪币:
留言: