能力值:
( LV12,RANK:1010 )
|
-
-
26 楼
牛鼻,android大牛,学习了
|
能力值:
( LV9,RANK:310 )
|
-
-
27 楼
跪拜博士大牛!
|
能力值:
( LV17,RANK:1820 )
|
-
-
28 楼
常备武器库,结合动态分析,果然高效啊
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
厉害,各种奇淫技巧
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
前来学习!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
大牛真是神啊!第三题我也是把进程的内存dump出来的,不过里面搜索出来的dex都不正确。不知道问题出在哪里?
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
围观一下,恭喜楼主
|
能力值:
( LV4,RANK:55 )
|
-
-
33 楼
谢谢大牛分享....能给下apk吗?我等渣渣拿不到后几题的apk
|
能力值:
( LV3,RANK:20 )
|
-
-
34 楼
别用百度了,用Google
|
能力值:
( LV3,RANK:20 )
|
-
-
35 楼
DIAS:Automated Online Analysis for Android Applications PDF在这里,不知道你们能不能看:
http://xplorebcpaz.ieee.org/stamp/stamp.jsp?tp=&arnumber=6984671
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
第三题算法相关的代码:
http://akana.mobiseclab.org/index.jsp?type=result&md5=HW27879e3820a3ca5487e66e7b3417f6a170f0dcb5d9ccf4a4c619b24bbc6e3ab080dad30f2c3bffe1def2bd74749ce23b
给大家参考
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
apk能不能发出来下
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
apk不是原版的啊。
另外,第四题的那个libmobisec.so保护的挺好,ida,甚至包括我们的解析工具,都完全失效了。比如说动态节区的打印的信息如下,完全是我们之前没遇到,值得学习。
index d_tag d_val_or_d_ptr
0 0x60198899 -1988738981
1 0x74389238 -1039113264
2 0xe4194519 -594982116
3 0x12a1cca9 1285437848
4 0xc89c6495 -935030432
5 0xc6d4c35f -1848102621
6 0x50950898 1684645620
7 0x8a90424 943252561
8 0x431073c -1862184825
9 0xbeccb25c 572517296
10 0xd4894c1c -863408356
11 0xc489721c -1131834596
12 0x47349122 1205084888
13 0xe3090390 -991386749
14 0xd02c2430 672402664
15 0x9bdc4241 -386939863
16 0x4a9c8482 -363248496
17 0xfa140bb4 -32548080
18 0x8dc2f063 -795603891
19 0x9f29a80d -1541829864
|
能力值:
( LV3,RANK:30 )
|
-
-
39 楼
DIAS论文是收费的啊
|
能力值:
( LV4,RANK:45 )
|
-
-
40 楼
大家可能需要的论文
就是文中提及到的
希望有人翻译一下。
thx
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
好像不是同一篇
http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6984671
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
论文原作者表示放一个更为完整的版本吧
见附件
|
能力值:
( LV5,RANK:60 )
|
-
-
43 楼
所以我把从0x1284到0x129C的地方都NOP了,在0x12AC的地方调用log函数。
这个arm汇编,nop指令对应的机器码是啥哈
|
能力值:
( LV5,RANK:60 )
|
-
-
44 楼
我采用 指令所在地址+4+偏移量=跳转目标地址
这个偏移量算出来不对。
正确的公式是?
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
感觉很高端的样子啊
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
麻弊,简直是膜拜!!学霸太强了!有你一半功力就不得了了。
|
能力值:
( LV5,RANK:60 )
|
-
-
47 楼
arm汇编的BL 比较好算
指令所在地址A ,目标地址B
(B-(A+8))/4
Thumb就比较复杂了,目前没找到通用的公式。
|
能力值:
( LV5,RANK:60 )
|
-
-
48 楼
第二题
Java层没做什么,直接把输入放到底层的libcrackme.so里做了判断。发现JNI_Onload里做了些处理,接着securityCheck里面最后有判断,将输入和一个wojiushidaan做比较。输入后发现密码错误,因此可以猜测前面一大段逻辑的作用就是会把这个最终的字符串改掉。其实只需要知道最终判断时候那个地址上的值就行了,先尝试了调试,发现一旦attach就退出,做了反调试。注意到比较之前有个android_log_print函数,因此可以直接利用这个函数做打印。我选择patch方法是直接把这个函数往下移,因为在0x12A4地址处正好有需要的数据给了R2,所以我把从0x1284到0x129C的地方都NOP了,在0x12AC的地方调用log函数。把patch好的so直接放回去,随便输入就能看到最终比较的密码了。
原版的汇编
.text:00001284 92 FF FF EB BL __android_log_print
.text:00001288 00 00 95 E5 LDR R0, [R5]
.text:0000128C 04 10 A0 E1 MOV R1, R4
.text:00001290 00 20 A0 E3 MOV R2, #0
.text:00001294 A4 32 90 E5 LDR R3, [R0,#JNINativeInterface.GetStringUTFChars]
.text:00001298 05 00 A0 E1 MOV R0, R5
.text:0000129C 33 FF 2F E1 BLX R3
.text:000012A0 60 10 9F E5 LDR R1, =(CheckPassword - 0x5FBC)
.text:000012A4 07 20 91 E7 LDR R2, [R1,R7] ; CheckPassword
.text:000012A8
.text:000012A8 loc_12A8 ; CODE XREF: Java_com_yaotong_crackme_MainActivity_securityCheck+120j
.text:000012A8 00 30 D2 E5 LDRB R3, [R2]
.text:000012AC 00 10 D0 E5 LDRB R1, [R0]
.text:000012B0 01 00 53 E1 CMP R3, R1
我改之后的汇编
.text:00001284 00 00 A0 E1 NOP
.text:00001288 00 00 95 E5 LDR R0, [R5]
.text:0000128C 00 00 A0 E1 NOP
.text:00001290 00 00 A0 E1 NOP
.text:00001294 00 00 A0 E1 NOP
.text:00001298 00 00 A0 E1 NOP
.text:0000129C 00 00 A0 E1 NOP
.text:000012A0 60 10 9F E5 LDR R1, =(off_628C - 0x5FBC)
.text:000012A4 07 20 91 E7 LDR R2, [R1,R7] ; off_628C
.text:000012A8
.text:000012A8 loc_12A8 ; CODE XREF: Java_com_yaotong_crackme_MainActivity_securityCheck+120j
.text:000012A8 04 00 A0 E3 MOV R0, #4
.text:000012AC 02 10 A0 E1 MOV R1, R2
.text:000012B0 87 FF FF EB BL __android_log_print
.text:000012B4 05 00 00 1A BNE loc_12D0
在修改当中,发现.text:00001288 00 00 95 E5 LDR R0, [R5]
改为00 00 A0 E1,程序在没进入函数前,程序就会崩溃。
DDMS的提示为:
02-05 06:39:32.430: A/libc(2490): Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1), thread 2490 (yaotong.crackme)
为什么会崩溃呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
菜鸟问一句,拜读了那篇论文,是将下载那个Indroid压缩文件直接用第三方recovery刷,还是要单独编译啊,是用mmm吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
第五题的话我做了。。感觉就那个复杂的算法不知道怎么搞?楼主说暴力破解。可我看了算法复杂度有2^128呢。不知如何处理。
|
|
|