看了下枫叶辅助的源码

社区服务
高级搜索
猴岛论坛跑跑卡丁车看了下枫叶辅助的源码
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
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

太牛了,版主快来补分

Yannisss

ZxID:18019362

等级: 上将

举报 只看该作者 沙发   发表于: 2014-01-17 0
深奥
  

ZxID:20257829

等级: 上将
               易趣卡盟

举报 只看该作者 板凳   发表于: 2014-01-17 0
大神你好

People laugh at me too insane, I laugh others see through
嗷嗷的叫啊啊

ZxID:19789667

等级: 大将
举报 只看该作者 地板   发表于: 2014-01-17 0
太牛了,版主快来补分
为电脑能开机丶

ZxID:18563743

等级: 大校
一场游戏丶一场梦, 不过是短暂瞬间
举报 只看该作者 4楼  发表于: 2014-01-17 0
补间周期不解.
来去自如灬

ZxID:36602603

等级: 一代君主
玩的开心  跑的快乐

举报 只看该作者 5楼  发表于: 2014-01-17 0
水平有限 看不懂。
为电脑能开机丶

ZxID:18563743

等级: 大校
一场游戏丶一场梦, 不过是短暂瞬间
举报 只看该作者 6楼  发表于: 2014-01-17 0
(curTime-origTime)/speed;
老芋头.

ZxID:23196754

等级: 一代君主

举报 只看该作者 7楼  发表于: 2014-01-17 0
不懂
引用
奇點

ZxID:22849680

等级: 元帅

举报 只看该作者 8楼  发表于: 2014-01-17 0
我也不懂啊
小枫工作组

ZxID:17878826

等级: 上尉
举报 只看该作者 9楼  发表于: 2014-01-17 0
其实游戏速度基本都是比循环慢的。等我晚上好好研究下。

际遇之神

惩罚

发帖后一心想要帖子火起来,付DB6给大大走后门

小枫工作组

ZxID:17878826

等级: 上尉
举报 只看该作者 10楼  发表于: 2014-01-17 0
回 4楼(为电脑能开机丶) 的帖子
关系到跳帧
Czx。

ZxID:23639182

等级: 少将
HD丨Chopper

举报 只看该作者 11楼  发表于: 2014-01-17 0
不懂
 言

ZxID:24488174

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

举报 只看该作者 12楼  发表于: 2014-01-17 0
不懂
小枫工作组

ZxID:17878826

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

ZxID:19391447

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

ZxID:27913333

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

举报 只看该作者 15楼  发表于: 2014-01-17 0
不懂啊
伪坚强 

ZxID:32465799

等级: 元老

举报 只看该作者 16楼  发表于: 2014-01-17 0
看不懂!
朗夜丶那颗星

ZxID:28005757

等级: 少尉
知我者谓我心忧不知者谓我何求
举报 只看该作者 17楼  发表于: 2014-01-17 0
不明觉厉
为电脑能开机丶

ZxID:18563743

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

ZxID:12209874

等级: 元帅

举报 只看该作者 19楼  发表于: 2014-01-17 0
大神换头像了啊。。完全看不懂代码,。,。,。
« 返回列表
发帖 回复