前天晚上与司南谈论了最新的加密方法,昨天和今天找了几位,其中有2位是**行家,一直认为方法简单易用,难以**。
其思路基于COM接口技术:
1.假使程序共有10个函数f0(),f1(),...f9(),顺序编程
2.创建2个结构体s0,s1
3.s0中有2个重要的成员,其中ptr为指向s1的结构指针,fn为函数的个数
4.s1中只有一种数据类型即函数指针,F0,F1,..F9对应指向函数f0(),f1(),...f9(),Fx指向f9()后的空函数fx()
即f0()(),f1(),...f9()的长度为L0=f1()-f0(),L0=f2()-f1(),L3=f3()-f2(),...L9=fx()-f9(),
函数调用方式:
s0->ptr->F0(),s0->ptr->F1,...s0->ptr->F9()
Hex文件上传远程加密网站,并提供s0装载位置即首地址
远程加密过程分两个阶段
1.ISP
每次将f0(),f1(),...f9()打乱,F0,F1,...F9顺序不变值变化(函数位置移动),即每个Hex文件每次传送都不一样
网站记住s0,s0全部成员后填充为空!!!,这样isp过程即使拦截也无法知道s0,s1
2.IAP
IAP运行指针在isp时也填充为空,这样isp无法知道IAP程序在何处。IAP指针只有一处
IAP命令参数及调用地址由IAP与串口通讯动态得到,也想就恢复了s0和s1,程序后将IAP入口指针清零,防止下钩子
IAP传送用密文传送
程序 |