在IDA中改写so库里的C代码

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); //这 是检测栈平衡 对于我们翻译来说 不用管它

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值