红警DIY论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 356|回复: 19

关于Ares的几个问题

[复制链接]
发表于 2020-2-27 22:55:00 | 显示全部楼层 |阅读模式
好久没来了。不知Ares最近有什么新功能?还有类似的补丁吗?

----以上是问题----

上次下载了一份Ares2.0的源代码,本来想自己改一下,结果发现只能用VS2013以上版本编译,然后我的老电脑(2008年的)根本运行不了VS2013,新电脑装的又是Linux……
最后一气之下决定自己从头写一个可以用MinGW编译的补丁(当然参考了Ares源代码)。目前框架差不多好了,已经实现了MOD放在其他目录运行的功能。只是Ares那么多功能,也不知道我能不能完全实现……


 楼主| 发表于 2020-2-28 15:48:55 | 显示全部楼层
我这个补丁和Ares的实现方式有所区别。Ares用的是调试API,我用的是VEH。此外,我更注重于基础功能,目前最先做的就是MOD与主程序分离。接下来可能能还会支持更多的文件格式。
 楼主| 发表于 2020-2-29 13:56:10 | 显示全部楼层
框架写好了,然后不知道该写什么了……
要理解Ares的代码还是比较费劲的。毕竟七八年没碰MOD,原本的逻辑什么的几乎已经忘光了……
 楼主| 发表于 2020-3-1 21:20:55 | 显示全部楼层
没人回答吗?
没人回答,也罢。我就继续吧。反正就算已经有了类似的补丁,我这个也可以多提供一种选择。
发表于 2020-3-2 08:48:57 | 显示全部楼层
挺强的
 楼主| 发表于 2020-3-3 14:19:30 | 显示全部楼层
现在有一种在写操作系统的错觉……异常处理程序里包含了大量上下文切换,还有堆栈切换……快变成任务调度器了……
发表于 2020-3-3 14:25:17 | 显示全部楼层
nb,资瓷!
 楼主| 发表于 2020-3-3 14:44:29 | 显示全部楼层
其实Ares的最大问题在于,它的Hook代码依赖于VS生成的栈帧结构,因而无法支持MinGW。语法之类的都还是小事。我的程序依赖的二进制特征只有调用约定,而这是不同编译器通用的。
发表于 2020-3-3 17:23:38 | 显示全部楼层
你用的 MinGW.org 还是 mingw-w64 的 GCC?calling convention 应该是兼容的,除了 member functions returning struct types 有 hidden pointer 和 this 的反序、`long double` 是 12 个字节、还有 AVX 的 stack alignment 问题以外(但是这些 YR 都用不上)倒也没什么其它的坑。
改内存这种基本操作基本就是 VirtualProtect 加上写权限然后 OOXX 再加回去就是了,x86 的 EXE 是必须加载到固定虚拟地址的,DLL 倒是没什么所谓的,HMODULE 可以当基址用。
 楼主| 发表于 2020-3-3 18:46:52 | 显示全部楼层
LH_Mouse 发表于 2020-3-3 17:23
你用的 MinGW.org 还是 mingw-w64 的 GCC?calling convention 应该是兼容的,除了 member functions retur ...

我用的w64。

这不是YR本身的问题,是Ares的问题。Ares的代码里有直接在内联ASM里jmp到外部的,这明显依赖于编译器生成的栈帧结构了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY官方论坛

GMT+8, 2020-3-31 03:34 , Processed in 0.016465 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表