memset(&v17, 0, v8 + v9 + 3);
// v17 = “”
strcat(&v17, v7);
// v17 = v17 + v7
strcat(&v17, &unk_27A0);
//像这样的 就是IDA没翻译出来 是数据段 选中unk_27A0 双击进去
.rodata:000027A0 unk_27A0 DCB 0x65 ; e ; DATA XREF: Java_com_utils_JNIUtils_urlEncodeFromJNI+82o
.rodata:000027A0 ; .text:off_1828o …
.rodata:000027A1 DCB 0x68 ; h
.rodata:000027A2 DCB 0x61 ; a
.rodata:000027A3 DCB 0
4个字符 e h a 0 最后的0代表结束
所以上面这段 意思就是 unk_27A0 = “eha”
result = (v4->functions->NewStringUTF)(v4, &v24);
// result = v24 虽然严格来说这么写是不对的 但差不多意思就这样的 只是不同平台下的编码啥的不同
if ( v27 != *v18 )
_stack_chk_fail(result); //这 是检测栈平衡 对于我们翻译来说 不用管它