hook RegisterNatives到假的native实现函数?
遇到个问题,我用frida hook RegisterNatives找对应native实现方法地址,找到了,但是感觉这个地址是假的,接受到的参数不对劲,打印不了发送的两个字符串,逆向的这个是一个游戏的mod插件,java层搞的UI给so层发消息,这个mod插件有hook能力,用的libshadowhook.so,进行不下去了,求帮助fnPtr='0x72855cc9a8 libmod.so!0x1839a8' method='public static native java.lang.String com.plugin_mod.message.send(java.lang.String,java.lang.String)'
后面怎么进行,求思路,这个so还是混淆过的应该
// local variable allocation has failed, the output may be wrong!
ssize_t sub_1839A8(int a1, const void *a2, size_t a3, int a4)
{
__int64 v5; // x19
int v6; // w9
int v7; // w8
int k; // w8
__int64 v9; // x0
int v10; // w8
bool v11; // zf
_BOOL4 v12; // w8
int v13; // w10
int i; // w8
_BOOL4 v15; // w8
_BOOL4 v16; // w8
int m; // w8
_BOOL4 v18; // w8
int j; // w8
_BOOL4 v20; // w8
_BOOL4 v21; // w8
__int64 v23; //
bool v24; //
bool v25; //
char *s1; //
int v27; //
bool v28; //
bool v29; //
bool v30; //
bool v31; //
bool v32; //
bool v33; //
bool v34; //
bool v35; //
bool v36; //
const char *v37; //
v23 = *&a4;
v24 = ((((x_101 - 1) * x_101) ^ 0xFFFFFFFE) & ((x_101 - 1) * x_101)) == 0;
v25 = y_102 < 10;
v5 = *&a1;
v6 = 1571333055;
while ( 1 )
{
while ( 1 )
{
while ( 1 )
{
while ( 1 )
{
v7 = v6;
if ( v6 <= 827620742 )
break;
if ( v6 <= 1571333054 )
{
v6 = -1494488739;
if ( v7 != 827620743 )
{
v6 = v7;
if ( v7 == 1427777092 )
{
byte_228940 = v27 != 0;
v6 = -1732137972;
}
}
}
else if ( v6 == 2096439659 )
{
byte_228944 = v27 != 0;
v6 = 2031294483;
}
else if ( v6 == 2031294483 )
{
byte_228944 = v27 != 0;
if ( (y_102 < 10) ^ ((((x_101 - 1) * x_101) & 1) == 0) | !((y_102 > 9) | ((x_101 - 1) * x_101) & 1) )
v6 = 827620743;
else
v6 = 2096439659;
}
else if ( (v24 ^ v25) & 1 | (v24 && v25) )
{
v6 = -528760743;
}
else
{
v6 = 81433655;
}
}
if ( v6 <= -528760744 )
break;
if ( v6 == -528760743 )
{
v30 = (((x_103 - 1) * x_103) & 1) == 0;
v34 = y_104 < 10;
for ( i = 951118017; ; i = 598058311 )
{
while ( i <= 1844820888 )
{
if ( i == 598058311 )
{
v37 = (*(*v5 + 1352LL))(v5, a3, 0);
v15 = ((((x_103 - 1) * x_103) ^ 0xFFFFFFFE) & ((x_103 - 1) * x_103)) == 0;
if ( (y_104 < 10 && v15) | (y_104 < 10) ^ v15 )
i = 1844820889;
else
i = 2021235784;
}
else if ( (((v30 && v34) | v30 ^ v34) & 1) != 0 )
{
i = 598058311;
}
else
{
i = 2021235784;
}
}
if ( i == 1844820889 )
break;
(*(*v5 + 1352LL))(v5, a3, 0);
}
s1 = v37;
v32 = (((x_103 - 1) * x_103) & 1) == 0;
v36 = y_104 < 10;
for ( j = 951118017; ; j = 598058311 )
{
while ( j <= 1844820888 )
{
if ( j == 598058311 )
{
v37 = (*(*v5 + 1352LL))(v5, v23, 0);
v20 = (((x_103 - 1) * x_103) & 1) == 0;
if ( (y_104 < 10 && v20) | (y_104 < 10) ^ v20 )
j = 1844820889;
else
j = 2021235784;
}
else if ( (!v32 ^ !v36) & 1 | (v32 && v36) )
{
j = 598058311;
}
else
{
j = 2021235784;
}
}
if ( j == 1844820889 )
break;
(*(*v5 + 1352LL))(v5, v23, 0);
}
v27 = atoi(v37);
v28 = strcmp(s1, aL) == 0;
v21 = (((x_101 - 1) * x_101) & 1) == 0;
if ( (y_102 < 10 && v21) | (y_102 < 10) ^ v21 )
v6 = -886218259;
else
v6 = 81433655;
}
else if ( v6 == -396896598 )
{
v16 = ((((x_101 - 1) * x_101) ^ 0xFFFFFFFE) & ((x_101 - 1) * x_101)) == 0;
if ( (y_102 < 10 && v16) | (y_102 < 10) ^ v16 )
v6 = 2031294483;
else
v6 = 2096439659;
}
else
{
v29 = ((((x_103 - 1) * x_103) ^ 0xFFFFFFFE) & ((x_103 - 1) * x_103)) == 0;
v33 = y_104 < 10;
for ( k = 951118017; ; k = 598058311 )
{
while ( k <= 1844820888 )
{
if ( k == 598058311 )
{
v9 = (*(*v5 + 1352LL))(v5, a3, 0);
v10 = (x_103 - 1) * x_103;
v11 = ((v10 ^ 0xFFFFFFFE) & v10) == 0;
v12 = ((v10 ^ 0xFFFFFFFE) & v10) != 0;
v13 = v11;
v37 = v9;
if ( (y_104 < 10) ^ v13 | (y_104 <= 9 && !v12) )
k = 1844820889;
else
k = 2021235784;
}
else if ( (((v29 && v33) | v29 ^ v33) & 1) != 0 )
{
k = 598058311;
}
else
{
k = 2021235784;
}
}
if ( k == 1844820889 )
break;
(*(*v5 + 1352LL))(v5, a3, 0);
}
v31 = (((x_103 - 1) * x_103) & 1) == 0;
v35 = y_104 < 10;
for ( m = 951118017; ; m = 598058311 )
{
while ( m <= 1844820888 )
{
if ( m == 598058311 )
{
v37 = (*(*v5 + 1352LL))(v5, v23, 0);
v18 = (((x_103 - 1) * x_103) & 1) == 0;
if ( (y_104 < 10 && v18) | (y_104 < 10) ^ v18 )
m = 1844820889;
else
m = 2021235784;
}
else if ( (((v31 && v35) | v31 ^ v35) & 1) != 0 )
{
m = 598058311;
}
else
{
m = 2021235784;
}
}
if ( m == 1844820889 )
break;
(*(*v5 + 1352LL))(v5, v23, 0);
}
v6 = -528760743;
}
}
if ( v6 != -1732137972 )
break;
if ( !strcmp(s1, &qword_21A4B8) )
v6 = -396896598;
else
v6 = -1494488739;
}
if ( v6 != -886218259 )
break;
if ( v28 )
v6 = 1427777092;
else
v6 = -1732137972;
}
return (*(*v5 + 1336LL))(v5, &byte_21A4C0);
}
页:
[1]