首页
社区
课程
招聘
[求助]so 动态加载一段汇编不懂 忘各位大神指点一下。
发表于: 2017-10-17 15:59 2530

[求助]so 动态加载一段汇编不懂 忘各位大神指点一下。

2017-10-17 15:59
2530
加载so之后有这么一段汇编

不明白最后R3里面是什么? 这个 _ctype_ptr 点击之后跳转到 

点击_ctype_ 跳转到


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 19097
活跃值: (1420)
能力值: ( LV15,RANK:936 )
在线值:
发帖
回帖
粉丝
2
已经跟进到libc.so中了。
应该是判断字符类型吧,下面是android源码中的代码:


onst char _C_ctype_[1 + CTYPE_NUM_CHARS] = {
0,
_C, _C, _C, _C, _C, _C, _C, _C,
_C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C,
_C, _C, _C, _C, _C, _C, _C, _C,
_C, _C, _C, _C, _C, _C, _C, _C,
   _S|(char)_B, _P, _P, _P, _P, _P, _P, _P,
_P, _P, _P, _P, _P, _P, _P, _P,
_N, _N, _N, _N, _N, _N, _N, _N,
_N, _N, _P, _P, _P, _P, _P, _P,
_P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U,
_U, _U, _U, _U, _U, _U, _U, _U,
_U, _U, _U, _U, _U, _U, _U, _U,
_U, _U, _U, _P, _P, _P, _P, _P,
_P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L,
_L, _L, _L, _L, _L, _L, _L, _L,
_L, _L, _L, _L, _L, _L, _L, _L,
/* determine printability based on the IS0 8859 8-bit standard */
_L, _L, _L, _P, _P, _P, _P, _C,

_C, _C, _C, _C, _C, _C, _C, _C, /* 80 */
_C, _C, _C, _C, _C, _C, _C, _C, /* 88 */
_C, _C, _C, _C, _C, _C, _C, _C, /* 90 */
_C, _C, _C, _C, _C, _C, _C, _C, /* 98 */
_P, _P, _P, _P, _P, _P, _P, _P, /* A0 */
_P, _P, _P, _P, _P, _P, _P, _P, /* A8 */
_P, _P, _P, _P, _P, _P, _P, _P, /* B0 */
_P, _P, _P, _P, _P, _P, _P, _P, /* B8 */
_P, _P, _P, _P, _P, _P, _P, _P, /* C0 */
_P, _P, _P, _P, _P, _P, _P, _P, /* C8 */
_P, _P, _P, _P, _P, _P, _P, _P, /* D0 */
_P, _P, _P, _P, _P, _P, _P, _P, /* D8 */
_P, _P, _P, _P, _P, _P, _P, _P, /* E0 */
_P, _P, _P, _P, _P, _P, _P, _P, /* E8 */
_P, _P, _P, _P, _P, _P, _P, _P, /* F0 */
_P, _P, _P, _P, _P, _P, _P, _P  /* F8 */
};

const char *_ctype_ = _C_ctype_;


// TODO: fix the header file so we don't have to duplicate all this inlined stuff.

#if 1 /* ndef NDEBUG */
int isalnum(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_U|_L|_N)));
}

int isalpha(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_U|_L)));
}

int iscntrl(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _C));
}

int isdigit(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _N));
}

int isgraph(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N)));
}

int islower(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _L));
}

int isprint(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N|_B)));
}

int ispunct(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _P));
}

int isspace(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _S));
}

int isupper(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _U));
}

int isxdigit(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_N|_X)));
}
2017-10-17 17:13
0
雪    币: 38
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
确实是判断字符的,谢谢
2017-10-18 15:52
0
雪    币: 38
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
oooAooo 已经跟进到libc.so中了。应该是判断字符类型吧,下面是android源码中的代码:onst char _C_ctype_[1 + CTYPE_NUM_CHARS] = { 0, _C, _C, _ ...
谢谢
2017-10-18 15:52
0
游客
登录 | 注册 方可回帖
返回