android动态加载so破解,[原创] 记一次so文件动态解密

写在前面

整个程序基本上就是一个 动态注册 + so函数加密 的逻辑,中间加了一些parser的东西

主要考察了elf文件结构的一些知识以及在攻防对抗中防止IDA静态分析的姿势

题目描述

找到flag

WriteUp

360加固,先脱壳,看入口函数MainActivity

f326ac5f79862f228065d89c698cccef.png

具体的逻辑写到so里了,使用IDA打开so文件,先看有没有.init和.init_array,发现只有.init_array节,

7cc8c3c159ef3a7abb7254470d8472af.png

跟进去一看又是字符串解密函数,解密之后,代码如下(这里我根据解密后的数据进行了重命名)

unsigned int datadiv_decode4192348989750430380()

{

v29 = 0;

do

{

v0 = v29;

Find_ooxx_failed[v29++] ^= 0x14u;

}

while ( v0 < 0x10 );

v28 = 0;

do

{

v1 = v28;

mem_privilege_change_failed[v28++] ^= 0xD3u;

}

while ( v1 < 0x1B );

v27 = 0;

do

{

v2 = v27;

kanxuetest[v27++] ^= 0x63u;

}

while ( v2 < 0xA );

v26 = 0;

do

{

v3 = v26;

Hello_from_Cjiajia[v26++] ^= 0x3Fu;

}

while ( v3 < 0xE );

v25 = 0;

do

{

v4 = v25;

test[v25++] ^= 0xF3u;

}

while ( v4 < 4 );

v24 = 0;

do

{

v5 = v24;

sig_Ljava_lang_Object_Z[v24++] ^= 0xFAu;

}

while ( v5 < 0x15 );

v23 = 0;

do

{

v6 = v23;

com_kanxue_test_MainActivity[v23++] ^= 0x2Du;

}

while ( v6 < 0x1C );

v22 = 0;

do

{

v7 = v22;

maps[v22++] ^= 0xF5u;

}

while ( v7 < 0xD );

v21 = 0;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值