能力值:
( LV2,RANK:10 )
|
-
-
26 楼
请教一下,这里dump 代码的操作,data = idaapi.dbg_read_memory(0xEF214000, 0xEF2158CC - 0xEF214000) 这里面的这个地址是怎么定位的。
|
能力值:
( LV6,RANK:80 )
|
-
-
27 楼
八味茶
请教一下,这里dump 代码的操作,data = idaapi.dbg_read_memory(0xEF214000, 0xEF2158CC - 0xEF214000) 这里面的这个地址是怎么定位的。
ida调试 ctrl+s 可以看到各个so在内存映射的地址区间;或者从 /proc/{pid}/maps表中查询
|
能力值:
( LV5,RANK:60 )
|
-
-
28 楼
JimmyJLNU
这个应该是腾讯为应用宝SDK定做的,官网直接加固的应该是libshella-2.*.*.so,libshellx-2.*.*.so,鹅厂真是一个出人才的地方,大数字的libjiagu.so都被破解,并 ...
腾讯给了你多少钱 我阿里巴巴给你三倍
|
能力值:
( LV5,RANK:60 )
|
-
-
29 楼
v12 = 0x2B; v11 = 0x99u; v10 = 32; v9 = 21; v3 = (unsigned __int64)(unsigned int)dword_4008 << 16;// 0x100028cc << 16 v7 = (unsigned __int16)dword_4008; v6 = (unsigned __int16)dword_4008 - ((unsigned int)dword_4008 >> 16); _mprotect(i + ((unsigned int)dword_4008 >> 16), (v6 + 4095) & 0xFFFFF000, 3);// mprotect(loadbase + 0x1000, 0x2000, Read_Write) for ( j = HIDWORD(v3); j <= v7; ++j ) // 解密代码区加密部分(0x1000~0x28cc) { v4 = *(_BYTE *)(i + j); *(_BYTE *)(i + j) ^= (unsigned __int8)(((v11 - v10) ^ j) + v9) ^ v12; *(_BYTE *)(i + j) += v10 & v9 ^ v11; v12 += (v11 + v10 - v9) & v4 & j; v11 += (j + v12) ^ v4; v10 ^= (v4 - v12) ^ j; v9 += j - (v4 + v12); } _mprotect(i + HIDWORD(v3), (v6 + 4095) & 0xFFFFF000, 5);// mprotect(loadbase + 0x1000, 0x2000, Read_Exe) 与实际的dump地址,,data = idaapi.dbg_read_memory(0xEF214000, 0xEF2158CC - 0xEF214000) 原来是伪代码有问题,v3,v7,v6要实际调试才能知道
最后于 2018-8-31 10:42
被学编程编辑
,原因:
|
能力值:
( LV5,RANK:60 )
|
-
-
30 楼
象这种壳,有办法直接拿到解密后的so吗
|
能力值:
( LV5,RANK:60 )
|
-
-
31 楼
longpoxin
调试步骤:
1. adb shell am start -D -n {pkgname}/{Activity}
2. ida android_server放到手机,运行,PC端idapro远程连接、 ...
我调的是抹掉section的,一jdb connect.进程就崩溃了。。。
IDA7.0有BUG,得用IDA6.8
最后于 2018-8-31 10:43
被学编程编辑
,原因:
|
能力值:
( LV6,RANK:80 )
|
-
-
32 楼
学编程
象这种壳,有办法直接拿到解密后的so吗
可以从linker的 soinfo 中获取各个section信息,重新拼接出一个so
|
能力值:
( LV5,RANK:60 )
|
-
-
33 楼
楼主,请教个问题,采用am start -D -n 调试Jni_OnLoad的形式,那个APK里面用的是最原始的libYSDK.so吗,还是被替换抹去section的包?
|
能力值:
( LV5,RANK:60 )
|
-
-
34 楼
楼主,调试JNI_OnLoad的过程中,由于IDA分析的是解密后的SO,而APK内部用的是原始的SO.出现此界面 选择哪个可以好
最后于 2018-9-4 15:03
被学编程编辑
,原因:
|
能力值:
( LV5,RANK:60 )
|
-
-
35 楼
楼主,请教个问题:)
v8 = dlopen(&cur_so_path, 0); v7 = (int (__fastcall *)(int, int))dlsym(v8, "JNI_OnLoad");// 调用真正的JNI_OnLoad,当前这个JNI_OnLoad算是壳JNI_OnLoad吧
我在调试JNI_OnLoad过程中,cur_so_path是一个路径(/data/app/***/libYSDK.so dlsym返回的结果是0
这个是正常的吗,看你的分析应该是一个值才对
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
学编程
楼主,请教个问题:)
v8 = dlopen(&cur_so_path, 0);v7 =  ...
那是调用原始so的JNI_Onload,如果原始so不存在JNi_onload肯定是返回0呀
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
学编程
楼主,调试JNI_OnLoad的过程中,由于IDA分析的是解密后的SO,而APK内部用的是原始的SO.出现此界面选择哪个可以好
选no
|
能力值:
( LV5,RANK:60 )
|
-
-
38 楼
顶
最后于 2018-10-30 16:21
被学编程编辑
,原因:
|
能力值:
( LV5,RANK:60 )
|
-
-
39 楼
顶
最后于 2018-10-30 16:22
被学编程编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
是呀,那true_code 没有JNI_onload 他给你返回什么?当然是0
|
能力值:
( LV5,RANK:60 )
|
-
-
41 楼
seandong
是呀,那true_code 没有JNI_onload 他给你返回什么?当然是0 赞一个
最后于 2018-10-30 16:19
被学编程编辑
,原因:
|
能力值:
( LV5,RANK:60 )
|
-
-
42 楼
顶
最后于 2018-10-30 16:18
被学编程编辑
,原因:
|
能力值:
( LV5,RANK:60 )
|
-
-
43 楼
longpoxin
可以从linker的 soinfo 中获取各个section信息,重新拼接出一个so
感觉难度不小,他的soinfo只有symtab,strtab,bucket是真正SO的,其他的都是shell的。
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
这个影响动态调试吗
|
能力值:
( LV6,RANK:80 )
|
-
-
45 楼
天堂猪
这个影响动态调试吗
没明白是指什么影响动态调试?壳没有发现有反调试,实际调试也没碰到坑。
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
还有没有完整还原so的分析打算呢
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
lscmxl
liblegu.so = 乐固,这套方案我也实现过,非常相似但做的更多。
实现这套方案的话,需要对壳so进行格式修改吧,对hash 表 sym表 str表都要对照target so进行修改吧?
|
|
|