《加密与解密》学习笔记(二) - 加密算法和PE文件
2016-08-09 14:00
344 查看
又看了两章,果然越来越难,准备先做些题,用到哪些知识再学。这次还把罗云彬老师书中的TLS(线性局部存储)给学了。
6加密算法 6.1单向散列算法 哈希算法,任意长度消息压缩至固定长度,不可逆 MD5,SHA,PIPE-MD,HAVAL,N-Hash 6.1.1MD5(消息摘要算法) 原理略 结果 将任意长度的字符串变幻成128位的大整数,不可逆 错误用法 if(MD5(用户名) == 序列号) 正确的注册码; else 错误的注册码; //序列号明文,这样就很容易破解 工具:KANAL MD5变形 改变初始化4个常数 改变填充方法 改变Hash变换的处理过程 6.1.2SHA(安全散列算法) 跟MD5很像 6.2对称加密算法 6.3非对称加密算法 6.4CRC32、Base64 6.5常用库 Miracl大数库/C/C++ FGInt/ 10PE文件格式 10.1PE的基本概念略 基地址 RVA FOV 10.2MS-DOS头略 10.3PE头 10.4节 10.5导入表、导入地址表 10.6绑定导入表 10.7导出表 10.8重定位表 10.9资源表 10.10TLS初始化 --------------------------------- -补充:《PE》第九章线程局部存储- --------------------------------- 9.1Windows进程与线程 9.1.1Windows体系结构 分层:用户模式+内核模式 API调用转到ntdll.dll(桥梁)中,转到内核ntoskrnl.exe中运行 9.1.2.1内核模式进程创建 创建进程 创建线程绑定进程,否则进程无用,进程上可有多线程 9.1.2.2 创建进程,线程就跟着创建好了 9.2线程局部存储 解决多线程变量同步问题,定义一套数据结构,不同的线程拥有不同的值 在进程中创建全局表,通过线程ID去获取/写入数据 9.3动态TLS——无法确定线程的数量 调用TlsAlloc向进程申请索引,创建空间 每个线程 TlsSetValue TlsGetValue 调用TlsFree收回空间 //一个索引作为参数,系统自己搞定多线程到底用哪个,全局变量最大40h(64Byte) 9.4静态TLS 无需调用API函数,在PE文件内部定义变量,.tls,类似导入表,通过结构的描述,系统自动处理 定位 第10个 组成 IMAGE_TLS_DIRECTORY32 StartAddressOfRawData //TLS模板起始地址,VA,需有重定位信息,创建线程被复制 EndAddressOfRawData //TLS模板结束地址,VA,需有重定位信息,不包括0 AddressOfIndes //TLS索引的位置 AddressOfCallBacks //TLS回调函数数组指针,一个线程创建时调用一次,结束时调用一次 SizeofZeroFill //填充0的个数 Characteristics //保留 补充 TLS数据初始化和TLS回调函数都在入口点之前执行,很多病毒或外壳程序利用这一点执行一些特殊操作 程序结束时,回调函数又被执行一次。一般的TLS回调函数都是空的 --------------------------------- -补充------------OVER------------ --------------------------------- 10.12延迟加载导入表 10.13异常表
相关文章推荐
- 《WINDOWSPE权威指南》学习笔记(二)- PE文件结构及字段说明
- 《Inside Microsoft IL Assembler》学习笔记4:.net中PE文件的结构
- 《0day安全》学习笔记1——PE文件
- 关于PE可执行文件的修改
- PE文件格式详解(1)
- PE文件格式详解(6)
- PE文件格式详解(5)
- PE可执行文件“减肥”实例
- PE文件添加节显示启动信息...
- PE文件格式详解(六)
- PE文件格式详解(四)
- 关于PE可执行文件的修改
- 编译输出的PE文件的执行过程
- (转载)win32 PE 文件格式
- PE文件格式详解(七)
- PE文件格式详解(7)
- win32 PE 文件格式
- JIURL PE 格式学习总结(一)-- PE文件概述
- PE文件格式详解(一)
- [转贴]浅析.NET Framework对PE文件格式的扩展