美文网首页
dump解密后的so并修改原so

dump解密后的so并修改原so

作者: Alanone0x0 | 来源:发表于2020-06-25 16:07 被阅读0次

先执行IDA动态调试步骤

在JNI_ONLOAD下断点,越往后越好,按ctrl+s查看节点信息,后面的R表示读,W表示写,X表示执行

我们需要的so变成了三个部分,第一个RX表示里面是代码区,对我们没用,最主要的是找到原so文件中被混淆的数据区,其实只需要 RW

image-20200606161832018

但是如果要还原整个so程序的时候,这时候就全都需要弄下来,里面的debug也是需要的

image-20200625155339362

复制上图中的start和end的值到文件中,后面用,执行脚本把so dump出来,如下图,start和end替换成上图中的值,然后点击run即可dump出来,代码如下

image-20200606161256615 image-20200606163338756
# so的dump
static main(void)
{
auto fp, start, end, size;
start = 0x792F1000;
end = 0x79302000;
fp = fopen("D:\\r.so", "wb");
for ( ; start < end; start++ )
fputc(Byte(start), fp);
}

# dex的dump如下,本质相同
static main(void)
{
auto fp, dexAddress, end, size;
dexAddress = 0xA7019000;
size = 0xA701B000;
end = dexAddress + size;
fp = fopen("D:\\classes.dex", "wb");
for ( ; dexAddress < end; dexAddress++ )
fputc(Byte(dexAddress), fp);
}

需要一个bt脚本,ELFTemplate.bt,把下图中2个文件全放进010 Editor 软件中,然后拖入ELFTemplate.bt,在原始so文件中(libnet_crypto.so)中按F5进行解析,接下来目标是把已经解密后的rw.so中的解密部分复制到原始的so文件中

image-20200606164217912

把rw.so中的解密部分复制到 libnet_crypto.so 对应部分,注意此时前面6行是不需要的

image-20200606164927410 image-20200606165111683

复制的目标位置如下

image-20200606170120190 image-20200606172216657

点击下面 char_s_data 进到data的位置,上面说了前面6行是不要的,所以下面红框中的6行是略过的,从 91 9A 04 00的地方开始粘贴,然后 ctrl+s 保存

image-20200606173857839

此时已经完成,so变成了解密后的数据

image-20200606175152461

注意:因为上面我们只复制了数据区,所以基本没啥错误(红区)的地方,但是如果上面的数据区的中间部分有跳转部分,那么dump出来的跳转部分就会多了动态调试的基址,这时候需要把原来so中关于跳转的部分(一般来说是乱码)直接复制到修改的so文件即可,如下图

image-20200606181749276

相关文章

网友评论

      本文标题:dump解密后的so并修改原so

      本文链接:https://www.haomeiwen.com/subject/nebsfktx.html