软件保护技术

课程名称:软件保护技术

上课教师:白洪欢

为信息安全专业选修课程,是可怕的白洪欢老师上的课,鉴于上学期的汇编语言的绩点最后只拿到了3.6,恐怕这学期的软保也要薄纱我均绩了😭。

本学期的主要内容就包括

  1. 基础知识:dos、windows的exe文件头。
  2. 脱壳技术。
  3. 给exe打补丁,给exe增加一个功能。

绪论

软件保护的分类

保护:把exe和某个硬件介质建立联系,给exe加壳。

  1. 软盘指纹,将软件和软盘关联,进行加密,即软盘指纹。通常根据软盘上的一些特征进行校验。
    光盘指纹也是光盘上一些特殊的部分,但是如Deamon tools等软件可以完全复制一张光盘为iso文件。
  2. 序列号:跟机器特征码相关,通常和网卡的mac地址,硬盘的序列号相关。
    作者:sn=f(MachineCode)sn = f(MachineCode)
    用户电脑:MachineCode=f1(sn)MachineCode = f^{-1}(sn)​​
    网卡的mac可以通过注册表修改,而硬盘的序列号相对较难修改。​
    VMProtect在对exe加壳时会对原exe中的某些指定函数作虚拟化加密,从而防止脱壳。将原先的x64/x86汇编转换成另一种新的汇编代码,再创建VM虚拟机运行这些代码,来防止静态调试破解。
  3. 加密锁(dongle)
    包括hasp、sentinel、sense(深思)、rockey(飞天诚信)等品牌。加密锁有配套的开发包(sdk),里面包含加密锁相关的函数,如read_dog(),write_dog()等。

软保的重要手段:加壳

加壳前:

1
2
3
main:
...
stop:

加壳后:

1
2
3
4
5
6
main:
***
stop:
shell:
...;将***的内容还原为原先的内容
jmp main


软件保护技术
http://example.com/2024/09/09/Software-Protection/
作者
Penner
发布于
2024年9月9日
许可协议