android敏感字符串加密,[原创]开源llvm字符串加密pass

本文探讨了在程序中如何处理未初始化的数据段(BSS),特别是对字符串数组和结构体数组的解密和初始化。通过示例展示了如何将解密后的数据存储在栈上,并提供了全局变量初始化的实现方式,确保解密后的数据正确还原和使用。
摘要由CSDN通过智能技术生成

在未初始化数据段(bss)解密数据.ollvm yag00的实现是解密到栈上,Armariris,Hikari都是在数据段原地还原.如对字符串数组的处理

static const char * const const_string_array[] = {"aaa", "bbb", "ccc"};

我处理后

static char dec_aaa[4], dec_bbb[4], dec_ccc[4]; // 解密后的"aaa", "bbb", "ccc"

static char *dec_const_string_array[3]; // 解密后的const_string_array

static void __global_variable_initializer_const_string_array(char *dec_const_string_array[])

{

// ...

// 解密"aaa", "bbb", "ccc"到dec_aaa, dec_bbb, dec_ccc

// 开始初始化dec_const_string_array

dec_const_string_array[0] = dec_aaa;

dec_const_string_array[1] = dec_bbb;

dec_const_string_array[2] = dec_ccc;

}

对结构体数组处理类似.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值