程序员养蛊指南

说在前头

看了下blog列表里一堆的坑没填,再加上期末考。但是我还是要义无反顾的开坑啦!!

项目地址:https://github.com/pantsugroups/pantsuWorld

PantsuWorld

胖次群的一款自动化的脚本对战类RTS游戏

说白了就是一群程序员在养蛊。

头脑风暴&思考过程:草稿本

流程

程序为一个沙箱,在立体的坐标系中释放几个初始"对象"。

最初始对象相当于脚本在游戏中的实例化。

对象可以建造"对象",武器,和建筑物。

对象也可以开采资源,战斗,自毁等等。

对象建造"对象"必定是需要资源和父母双方,各种拥有不同的DNA和权重

然后按照神经网络对几个方向(具体还没确定)进行变异生成。

变异的越久,需要的资源越多。

如果发生事件,事件只会上报给消息发生所在地的单位。

然后由该单位像周围单位传递消息

直到传递到大本营为之

How to play?

沙箱完成时,将放出SDK。届时可以实用自己调用。

游戏脚本会上传到服务器运行。

脚本(蛊)编写指南

API调用请参考:api.md (还未开始)

内部实现详情请参考:archive.md

Other

本群官网:www.minipanz.com

Tags: 开坑

曲式分析?编曲指南?

开头

现在是音乐系的学生了!

设备也到了,

开个新贴,整理些这部分的心得。

mixo-Lydian

适合中世纪,异族风情

走向是I-VII-IV

Lydian

未知,但又明亮。适合让人探索的感觉

重点强调I IV和III V这几个音。和弦一般用I II都行,还可以插入个VII

Tags: 音乐

HOOK 技术

详解各种奇淫绝技。

部分手写部分搬运。

重在自己的理解,或者找个时间,武器化这部分程序。

最终目标: 实现一个带有各种HOOK的汇总工具包

遇到的坑

pragma comment 只对微软编译器有效,GCC没用,得用-l来连接

IAT HOOK

内存版本

这个需要进入到宿主文件的内存空间,所以一般用DLL注入到宿主文件

原理就是普通的计算IMAGE_IMPORT_DESCRIPTOR在内存空间的地址。

然后修改IMAGE_IMPORT_DESCRIPTOR.FirstThunk.u1.Function的地址为我们的函数地址

其中几个重点:

GetModuleHandle(NULL);
// 获取主模块(EXE)的地址

PVOID WINAPI ImageDirectoryEntryToData( 
__in   PVOID Base, 
__in   BOOLEAN MappedAsImage, 
__in   USHORT DirectoryEntry, 
__out  PULONG Size );

获取内存中IAT导入表的虚拟地址。

//Base为要获得导入段所在模块的基地址。它一般是GetModuleHandle的返回值。

//MappedAsImage,它为true时,系统将该模块以映像文件的形式映射,否则以数据文件的形式映射。

//DirectoryEntry,要获得的段的索引。此函数不仅仅能够获得导入段的地址,根据此索引的不同,该函数返回对应段的地址。此处我们使用 IMAGE_DIRECTORY_ENTRY_IMPORT表示我们要获得导入段的地址。

//Size返回表项的大小

目录文件

  • iat/memory/target.c 实例,直接封装在代码中的HOOK,没使用装载器
  • iat/memory/dll.c dll封装版本(纯搬运)

代码参考:

文件区块修改版本

直接操作PE文件,修改IAT导入表导入DLL的地址。

这样的好处是在程序最初的加载就已经执行我们的代码,

并且不需要使用注入等容易被检测的敏感动作。

缺点是不能针对单独函数hook,

或者说与其是hook。完全是无中生有添加了一个DLL引用。

未完待续。。。

Tags: none
文章总数:144篇 分类总数:3个