
Win32
文章平均质量分 74
yeshahayes
这个作者很懒,什么都没留下…
展开
-
VC++并行编程学习(一)
并行模式库 (PPL) 提供命令式编程模型,以促进开发并发应用程序的可扩展性和易用性。 PPL 构建在并发运行时的计划和资源管理组件上。 通过提供并行作用于数据的泛型安全算法和容器,提高应用程序代码与基础线程机制之间的抽象级别。 使用 PPL 还可以开发通过为共享状态提供替代方案实现缩放的应用程序。 PPL 提供以下功能: 任务并行:基于 Windows 线程池来并行执行多个工作项原创 2016-07-16 15:25:56 · 3275 阅读 · 0 评论 -
PE文件操作-末尾添加节
有时候为了某些原因,需要在PE末尾添加节,比如加壳,补丁等等,需要对PE文件进行扩展。 在末尾添加节是最简单的方式,只需要做如下修改:修改FILE_HEADER中的节数目字段修改OPTIONAL_HEADER中映像大小字段在节描述符数组中添加新描述符在文件末尾添加新节数据首先找到文件最后一个节并计算出PE范围内的文件结尾,这里的末尾是指PE描述范围内的文件结尾,即最后一个节的结束:原创 2016-08-08 20:30:55 · 3307 阅读 · 1 评论 -
PE文件操作-动态加载
有时会有这样的需求,要把一个dll加载到进程空间或者对付地址空间随机化技术,这就需要自己实现一个PELoader。在PE文件中,许多数据在内存中的位置已经以RVA的形式在链接时给出,我们只需要根据节表的描述准确的按位置加载,大部分程序就可以正确运行了,但有几个类型的数据还是需要loader来调整的:IAT 在PE文件中,调用静态链接的DLL例程一般都是以call ds:[xxxxxxxxh]的原创 2016-08-14 12:34:18 · 1984 阅读 · 0 评论 -
PE文件操作-简单的加壳实现
处于一些原因,需要对PE文件进行加壳。所谓加壳就是有某种编码算法对原始文件数据进行编码,并使原始文件内容成为数据部分,而嵌进文件的解密代码成为主体。在loader加载加壳文件后,会将控制权交给解码程序,解码程序在完成解码后,再把控制权交给原始代码。 这个加壳程序是学习之用,所以只实现了最简单的可逆变换-异或运算。对文件操作用了内存映射文件,所以直接操作内存即可。 先说一下思路:对原始PE文件编码原创 2016-08-14 16:34:54 · 3827 阅读 · 0 评论 -
EDK2编译与OVMF编译
新版EDK修正了许多bug并且已经支持VS2015,这里就是在VS2015的环境下操作的。 首先下载EDK2 EDK2官方下载 这里下载的EDK2一开始式没有Win32编译环境的,需要自己编译: 打开CMD,定位到EDK2的BaseTools下,输入get_vsvars,执行完后输入vsvars32执行,这两部主要是配置VS编译环境。 除此之外要想编译还需要安装PYTHON27以及cx_F原创 2016-10-13 13:54:44 · 7511 阅读 · 1 评论 -
UEFI下Windows引导过程
引导文件 在UEFI安装完操作系统后,Windows至少使用两个分区,一个叫做ESP分区(EFI SYSTEM PARTITION),用于存放启动文件,另一个则是BIOS下正常的系统分区,不同的是,BIOS下引导文件是winload.exe,UEFI下引导文件式winload.efi,两者都是pecoff格式的,但UEFI用的是各种固件接口,而BIOS使用的是中断。有时还会有一个MSR分区,不过这原创 2016-10-13 13:25:32 · 25937 阅读 · 1 评论 -
Redis源码学习(1):adlist
redis中的adlist是一个简单的无环双向链表,主要逻辑在这两个文件中实现:adlist.hadlist.c结构也很简单,数据结构中最基本的结构。 添加节点代码:if (after) { node->prev = old_node; node->next = old_node->next; if (list->tail == old_node) {原创 2017-07-24 20:43:37 · 306 阅读 · 0 评论