- 博客(4)
- 收藏
- 关注
原创 基于Protobuf和Libuv实现RPC
公司要把产品转架构,虽然和我们驱动开发没什么关系,但还是抱着看热闹的心态研究了下和架构相关的一些问题。这阶段主要研究了下RPC这个东西。 RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络
2016-08-23 17:03:11 3793
原创 PE文件操作-简单的加壳实现
处于一些原因,需要对PE文件进行加壳。所谓加壳就是有某种编码算法对原始文件数据进行编码,并使原始文件内容成为数据部分,而嵌进文件的解密代码成为主体。在loader加载加壳文件后,会将控制权交给解码程序,解码程序在完成解码后,再把控制权交给原始代码。 这个加壳程序是学习之用,所以只实现了最简单的可逆变换-异或运算。对文件操作用了内存映射文件,所以直接操作内存即可。 先说一下思路:对原始PE文件编码
2016-08-14 16:34:54 3692
原创 PE文件操作-动态加载
有时会有这样的需求,要把一个dll加载到进程空间或者对付地址空间随机化技术,这就需要自己实现一个PELoader。在PE文件中,许多数据在内存中的位置已经以RVA的形式在链接时给出,我们只需要根据节表的描述准确的按位置加载,大部分程序就可以正确运行了,但有几个类型的数据还是需要loader来调整的:IAT 在PE文件中,调用静态链接的DLL例程一般都是以call ds:[xxxxxxxxh]的
2016-08-14 12:34:18 1883
原创 PE文件操作-末尾添加节
有时候为了某些原因,需要在PE末尾添加节,比如加壳,补丁等等,需要对PE文件进行扩展。 在末尾添加节是最简单的方式,只需要做如下修改:修改FILE_HEADER中的节数目字段修改OPTIONAL_HEADER中映像大小字段在节描述符数组中添加新描述符在文件末尾添加新节数据首先找到文件最后一个节并计算出PE范围内的文件结尾,这里的末尾是指PE描述范围内的文件结尾,即最后一个节的结束:
2016-08-08 20:30:55 3235 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人