加密与解密笔记

1.散列算法

1.1.MD5算法

1.2.SHA算法

1.3.SM3算法

2.对称加密算法

2.1.RC4流算法

生成一种密钥流的伪随机流,与明文通过异或操作混合

2.2.TEA算法

分组长度64位,密钥长度128位,采用feistel网络

2.3.IDEA算法

分组长度64位,密钥长度128位,采用3种不同代数群上的操作

2.4.BlowFish算法

分组长度64位,密钥长度可变,采用feistel网络

2.5.DES算法

分组长度64位,密钥长度48位,采用feistel网络

2.6.AES算法

分组长度128位,密钥长度128,192,256位,采用状态二维数组

2.7.SM4算法

分组长度128位,密钥长度128位

3.非对称加密算法

3.1.RSA算法

安全性在于大素数的因式分解问题

3.2.ElGamal算法(数字签名)

安全性在于有限域上计算离散对数的困难性

3.3.DSA算法(数字签名)

安全性在于有限域上计算离散对数的困难性

3.4.ECC算法

将取代RSA,成为主流的公钥算法

3.5.SM2算法

也是基于椭圆曲线公钥密码算法,更先进,更安全。

4.DLL注入

4.1.静态注入

  • 修改输入表
  • DLL劫持

4.2.动态注入

  • 远程线程注入
  • APC注入法:线程苏醒时检查有没有APC交付给自己
  • SetThreadContext法:挂起线程,系统会保留线程的上下文环境,恢复线程时线程会从之前保存的eip开始执行。可以将线程挂起,写入shellcode,把eip设置成shellcode的地址
  • 内核KeUserModeCallback法
  • SetWindowHookEx消息钩子注入:注册全局钩子,要求HOOKPROC必须在dll中,系统在其他进程调用HOOKPROC时,如果发现目标DLL未加载就调用KeUserModeCallback法。
  • AppInit_DLLs注册表项注入:加载suer32.dll,会调用loadAppDll函数读取注册表项。
  • 输入法注入

4.3.DLL注入防范

4.3.1.驱动层防范

  • KeUserModeCallback防全局消息钩子注入
  • 拦截进程打开、读、写以及创建远线程、发送APC等操作
  • 检测非法模块

4.3.2.应用层防范

  • 通过hook loadlibraryEx函数防范全局钩子,输入法注入等
  • 在DllMain中防范远程线程:线程创建阶段回想进程中所有已经加载的模块发送DLL_THREAD_ATTACH通知。
  • 枚举并查找当前进程中的非法模块和可疑内存

5.HOOK技术

5.1.address hook

  • IAT
  • EAT
  • user32.dll的回调函数表
  • IDT
  • SSDT/Shadow SSDT
  • C++虚函数表

5.2.Inline hook

  • jmp(5字节)
  • push/retn(6字节)
  • mov eax,xxx/jmp eax(7字节)
  • call hook
  • hotPatch hook 一个短跳加一个长跳:比较通用

5.3.基于异常处理的hook

VEH+INT3

5.4.Hook的检测与恢复

  • Address Hook的检测:寻找原始的address与当前address进行对比
  • inline hook检测;自行加载PE映像,对代码所在的节进行检查或比对。

6.加壳技术

(1)保存入口参数
(2)获取壳本身需要使用的API地址:GetProcAddress,GetModuleHandle,LoadLibrary。
(3)解密源程序各个区块的数据
(4)IAT的初始化
(5)重定位项的处理
(6)跳到OEP

7.脱壳技术

7.1.寻找OEP

  • 根据跨段指令寻找OEP
  • 用内存访问断点寻找OEP:.text段设断
  • 栈平衡原理寻找OEP:对esp设断
  • 根据编译语言特点寻找OEP

7.2.重建输入表

(1)通过API调用找到IAT表
(2)使用ImportREC使用OEP和IAT偏移量重构IAT

7.3.构造重定位表

(1)找到重定位的代码
(2)找到重定位表的RVA
(3)重定位

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值