看了下枫叶辅助的源码

社区服务
高级搜索
猴岛论坛跑跑卡丁车看了下枫叶辅助的源码
发帖 回复
正序阅读 最近浏览的帖子最近浏览的版块
29个回复

[经验心得]看了下枫叶辅助的源码

楼层直达
小枫工作组

ZxID:17878826

等级: 上尉
举报 只看楼主 使用道具 楼主   发表于: 2014-01-17 0
基本就是通过特征码搜索内存,得到一个call IAT的地址,在读取IAT地址,接着填入fake_timeGetTime.
不过hook代码很不错。
由此引发一个有趣的问题,究竟游戏中的速度是什么呢,它是如何用程序代码体现出来的?
为此我自己想了一种双重控制的POC代码(不能慢速,有待改进下,只是简单实现,很基础)
所谓慢速就是游戏循环时间快于游戏速度。用以下代码会导致无输出。
以下是自己的实现,代码很简单:

#include "stdafx.h"
#include <WINDOWS.H>
#include <TIME.H>
#include <CSTDIO>
#include <IOSTREAM>
#pragma comment(lib, "winmm.lib")
class TimeCls
{
public:
    TimeCls():origTime(0),curTime(0),cycle(0),interval(2000),speed(1000)
    {  ;  }
    void begin()
    {
        printf("My While Begin");
        printf("\n当前毫秒数:0x\x20\x20\x20\x20\x20\x20\x20\x20");
        while (0 != (origTime=timeGetTime()))
        {    
             /* 如果间隔大于速度,或秒数。此处可控制循环时间。如果需要保持一致则用速度,如果需要秒数则用1000 */
            while (((curTime=timeGetTime())-origTime)<interval);
            cycle=(curTime-origTime)/speed;
            for (cycle;cycle!=0;cycle--)
            {
                printf("\b\b\b\b\b\b\b\b%08x",curTime);
            }
        }
        printf("My While End;");
    }
protected:
private:
    DWORD origTime; //保存时间
    DWORD curTime; //当前时间
    DWORD cycle;     //补间周期
    DWORD interval;  //循环速度
    DWORD speed;    //游戏速度
};
int main(int argc, char* argv[])
{
    TimeCls* cls = new TimeCls();
    cls->begin();
    return 0;
}

特点在于这种方法可以确保时间和帧率是对的上的。
也就是说两次timeGetTime间隔哪怕是2秒、3秒、10秒都不会导致不同步或者跳帧的存在。
晚上回去看看支持慢速的循环控制该怎么去写。

[ 此帖被小枫工作组在2014-01-17 14:11重新编辑 ]

际遇之神

惩罚

老婆生了个儿子,开心的到处发饼,花了DB5

本帖de评分: 9 条评分 DB +25
DB+1 2014-01-18

看起来略屌

DB+2 2014-01-18

老婆生了个儿子,开心的到处发饼,花了DB5

DB+1 2014-01-17

那个枫叶是山寨的,,,方法都是菊花原创的..........

DB+3 2014-01-17

看起来好厉害的样子!

DB+10 2014-01-17

我完全看不懂~

DB+5 2014-01-17

❤未来十全大补丸  补补更健康❤

DB+1 2014-01-17

大神来了·顶!!!

DB+1 2014-01-17

补间周期不解.

DB+1 2014-01-17

太牛了,版主快来补分

ziy15289

ZxID:1183747

等级: 中将
逆风的方向,更适合飞翔。我不怕万人阻挡,只怕自己投降
举报 只看该作者 29楼  发表于: 2014-01-18 0
好厉害的  看不懂   膜拜大神
の翔d7a3

ZxID:20723741

等级: 准尉
举报 只看该作者 28楼  发表于: 2014-01-18 0
看起来略屌
newbadboy

ZxID:10496826

等级: 少将
http://events.tiancity.com/image/popkart/signiture/bf39d692ed9134bdc64cb089238527f6.jpg
举报 只看该作者 27楼  发表于: 2014-01-18 0
老婆生了个儿子,开心的到处发饼,花了DB5
丶翘楚巛c

ZxID:18296222

等级: 大将

举报 只看该作者 26楼  发表于: 2014-01-18 0
撸过
烟消丨灬云散

ZxID:12400286

等级: 大将
盗用哥的头像、对哥的图像有意见木有小JJ

举报 只看该作者 25楼  发表于: 2014-01-17 0
那个枫叶是山寨的,,,方法都是菊花原创的..........
_Lacorey丶

ZxID:25284962

等级: 大尉
纯娱乐
举报 只看该作者 24楼  发表于: 2014-01-17 0
看不懂 大神加油
- -
3毛钱

ZxID:38812431

等级: 中尉

举报 只看该作者 23楼  发表于: 2014-01-17 0
大内高手高手高高手~~~~佩服
Mr.Noname

ZxID:18203466

等级: 中将
举报 只看该作者 22楼  发表于: 2014-01-17 0
看起来好厉害的样子!
奢華

ZxID:24230132

等级: 少将

举报 只看该作者 21楼  发表于: 2014-01-17 0
大婶跟版主有矛盾吗?  怎么威望扣成负的了?
奢華

ZxID:24230132

等级: 少将

举报 只看该作者 20楼  发表于: 2014-01-17 0
暴躁头像
xuri258

ZxID:12209874

等级: 元帅

举报 只看该作者 19楼  发表于: 2014-01-17 0
大神换头像了啊。。完全看不懂代码,。,。,。
为电脑能开机丶

ZxID:18563743

等级: 大校
一场游戏丶一场梦, 不过是短暂瞬间
举报 只看该作者 18楼  发表于: 2014-01-17 0
回 13楼(小枫工作组) 的帖子
明白了.
朗夜丶那颗星

ZxID:28005757

等级: 少尉
知我者谓我心忧不知者谓我何求
举报 只看该作者 17楼  发表于: 2014-01-17 0
不明觉厉
伪坚强 

ZxID:32465799

等级: 元老

举报 只看该作者 16楼  发表于: 2014-01-17 0
看不懂!
Blessing丶安康

ZxID:27913333

等级: 元帅
有些事,一但错过,那么一生都没有如果。。

举报 只看该作者 15楼  发表于: 2014-01-17 0
不懂啊
跑吧都是狗

ZxID:19391447

等级: 大将
我当刷子那些年
举报 只看该作者 14楼  发表于: 2014-01-17 0
易语言太深奥
小枫工作组

ZxID:17878826

等级: 上尉
举报 只看该作者 13楼  发表于: 2014-01-17 0
回 4楼(为电脑能开机丶) 的帖子
假设主体循环刷新两次,游戏代码才执行一次。
或者主题循环刷新一次,游戏代码执行两次。
这就涉及到速度的问题了。
假设,因为线程切换导致主体循环两次刷新的间隔非常大,那么按照我的代码应该要执行游戏代码 (间隔/速度) 次,这就是补间。很好理解的。
 言

ZxID:24488174

等级: 元老
配偶: 丨23、
水至清则无鱼,人至贱则无敌

举报 只看该作者 12楼  发表于: 2014-01-17 0
不懂
Czx。

ZxID:23639182

等级: 少将
HD丨Chopper

举报 只看该作者 11楼  发表于: 2014-01-17 0
不懂
« 返回列表
发帖 回复