【移动安全】ida idc脚本实现加密指令修改

针对移动应用中使用mprotect保护的加密函数,通过ida调试跟踪获取解密后的内存数据和加密算法,使用IDC脚本进行内存数据和指令的修改。脚本执行后,可在UE中永久修改SO文件,简化后续调试工作。
摘要由CSDN通过智能技术生成

移动应用中对so文件,有些函数用了mprotect进行保护,即将加密数据解密后再在内存执行,然后再将内存数据加密后写回原位置,通常解密后数据具有反调试功能。
破解应对措施:ida调试跟踪后内存加密数据解密还原及加密算法提取完毕后,将密钥的内存数据和修改后的内存数据地址作为idc脚本输入,打印输出生成的加密数据或指令,从而利用UE修改so,实现永久修改的目的,后续直接跟踪调试so即可。

将下面的脚本保存为xx.idc后在ida中shrift+F2导入执行即可。

import idaapi
import struct


#input 
def dump24c8(start, len, key, target):
 rawInc = idaapi.dbg_read_memory(start, len)
 offset = start-0x70d1a4c8
 rawIncByte = bytearray(rawInc)
 rawIncHex = struct.unpack('<I', rawInc)[0]
 print 'rawIncHex is ' + str(hex(rawIncHex))

 rawkey = idaapi.dbg_read_memory(key, 0x6C)
 rawkeyByte = bytearray(rawkey)  
 #rawkeyHex = struct.unpack('<I', rawkey)[0]
 #print 'rawkeyHex is ' + str(hex(rawkeyHex))
 #rawdex = "hello"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值