逆向工程对抗之代码隐藏

很久前说过要发的,但U盘一直有问题,直到今天可以上网了。。。。(相互探讨下,也许还不是很成熟)

 

 

模块AB:可逆加密模块

模块BA:AB加密还原模块

模块DEX:由索引找相对偏移或由相对偏移找索引

模块R:产生指定范围随机数据

结构链PO:{索引,相对偏移}对

设备驱动M:OS常驻内存服务,在进程间传递信息

表T:记录系统各种状态,包括生成代码前状态、进程通信状态、OS修改状态等实行PR时系统状态,用于PR的决策

原始代码D:原始应用系统二进制数据

数据文件DA:存放系统中各组件代码的非原始形式,包括D,但不包含EXE文件首部

LOADER1:对OS下某一钩子

 EXE头文件H:存放DA中对应各组件代码的EXE头部二进制信息

OS内存空间文件K:一个EXE文件,只有EXE头部信息但没有实际代码的EXE文件,用于在内存中开辟一常驻空间

LOADER2:根据T、H、DA生成系统各组件代码

 CLEAN:将系统还原成初始状态并终止系统及清除进程K中所有代码数据——清零,并终止各管理进程。

系统协议PR: LOADER1下一钩子,用LOADER2取代码OS对PING回显请求的正常反应。然后启动命令PING 127.0.0.1并退出。当LOADER2被触发后,创建进程K,并将DA中各组件随机地存入K中相应位置——以模块为单位,通过M、DEX、T、H、BA(其中某些代码须连续用BA 3、4次才能正常还原到最初代码的二进制形态)。随后,LOADER2用类似LOADER1的方式启动在DA中的父进程O。

各组件载入后在内存中的状态由T记录。 O依据T,生成进程P、Q、R、S、TT,此五进程在DA中的代码相同,在K中的代码也相同(这是很显然的),但参数不同。P、Q、R、S、TT五进程轮流从DA中D的范围内(非连续)随机产生的一位置取出随机大小的二进制数据,再放到K范围内一随机偏移处——通过PO、R、DEX、M、T、BA。

P、Q、R、S、TT在O的管理下,根据执行需要生成D的代码(用BA还原)并执行。某一代码段在执行完毕后,O立即对内存中这段代码清零。M随机地对正在读K内数据的进程进行检查,当发现不是O、P、Q、R、S、TT时启CLEAN并终止自己。在O、P、Q、R、S、TT、M的管理下,D执行应用系统应有的功能。正常退出时启动CLEAN。

 以上是一模型,PR不变,改动H、DA、D、AB、BA、LOEADER等可构造对不同D的不同隐藏方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值