吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3348|回复: 10
收起左侧

[C&C++ 转载] C++编程隐藏变量,避免CE对内存搜索

[复制链接]
endriver 发表于 2022-3-25 13:06

通过重载INT,隐藏内存中的数据,来避免CE等内存搜索工具对内存的锁定与修改。

1 普通程序模拟。输入'A'增加金钱,’S‘减少金钱,’X'用于退出程序。

#include <iostream>
using namespace std;

int money = 2000;
int main()
{
    cout << "A 增加,S减少,X退出\n";
        do
        {
            char x;
            cin >> x;
            if (x=='x'||x=='X') break;
            if (x == 'a' || x == 'A') money = money + 10;
            if (x == 's' || x == 'S') money = money - 10;
            cout << "金钱为:" << money << endl;
        } while (true);

}

程序执行截图:

执行

执行

2 Cheat Engine分析

操作

操作

输入2000后,进行搜索。

结果

结果

可以很轻松的找到在内存中的地址,并修改。

并可能通过谁修改了这个值,来找到相应位置的汇编代码,来更改程序。

3 加密程序

原理:将INT在内存中的位置给打乱,防止内存搜索软件对程序进行搜索。程序只是简单介绍了实现该方法的技巧。

class hint
{
    char* mem[4];//4个字节的内存空间
public:
    hint(int val = 0);
    ~hint();
    operator int();//重载int
    void operator=(int val);//重载=
};

hint::hint(int val)
{
    mem[0] = new char;//动态分配内存
    mem[1] = new char;
    mem[2] = new char;
    mem[3] = new char;
    cout << "mem[0]" <<(void*) (mem[0]) << " mem[1]" << (void*)mem[1] << " mem[2]" <<(void*)mem[2] << " mem[3]" << (void*)mem[3] << endl;
    *this = val;
}

hint::~hint()
{
    delete mem[1];//删除内存
    delete mem[2];
    delete mem[3];
    delete mem[0];
}

hint::operator int()
{
    int val;
    char* read = (char*)&val;
    read[3] = mem[0][0];
    read[1] = mem[1][0];
    read[0] = mem[2][0]^ 0x21;//防止只剩个位数时,对内存的搜索
    read[2] = mem[3][0];
    return val;
}

void hint::operator=(int val)
{
    char* read = (char*)&val;  //读取int值的地址
    mem[0][0] = read[3];        //打乱放入内存中
    mem[1][0] = read[1];
    mem[2][0] = read[0]^ 0x21;
    mem[3][0] = read[2];
}

hint money=2000;//其它程序不变

4 后记

此笔记是根据腾讯课堂上某某云培训机构的C++课堂的一节内容进行整理,为避免广告嫌疑,就不提该机构的名称了。程序看上去简单,但包含的知识不少。指针数组,动态内存分配,类的重载等,值得好好研究掌握,特此分享共同进步。

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yuechu 发表于 2022-3-25 15:21
这是哪位师兄?
超级大碰碰 发表于 2022-3-25 15:26
如果是我的话,我选择把变量数据跟服务器同步,那数据具体应该是多少,服务器说了算。
 楼主| endriver 发表于 2022-3-25 15:36
 楼主| endriver 发表于 2022-3-25 15:39
超级大碰碰 发表于 2022-3-25 15:26
如果是我的话,我选择把变量数据跟服务器同步,那数据具体应该是多少,服务器说了算。

课程里有介绍。搜内存只是个突破点。如果能搜到内存,就能找到相关的程序。通过修改程序,就可以改变程序的运行规则,这样跟服务器同步就没有任何关系了。当然这里主要是介绍一种编程思路。
sam喵喵 发表于 2022-3-25 18:17
endriver 发表于 2022-3-25 15:39
课程里有介绍。搜内存只是个突破点。如果能搜到内存,就能找到相关的程序。通过修改程序,就可以改变程序 ...

哪个机构的课啊,有视频分享吗
archmagee82 发表于 2022-3-25 21:23
问题是很多游戏开发者就算这样.还是被 风灵月影 大师给破了
 楼主| endriver 发表于 2022-3-26 19:38
archmagee82 发表于 2022-3-25 21:23
问题是很多游戏开发者就算这样.还是被 风灵月影 大师给破了

这就是矛盾之争。会永远斗争下去,看谁的手段高了。
 楼主| endriver 发表于 2022-3-26 19:39
sam喵喵 发表于 2022-3-25 18:17
哪个机构的课啊,有视频分享吗

这个是收费课程,没报名是看不了的。
xinyu 发表于 2022-3-27 07:13
超级大碰碰 发表于 2022-3-25 15:26
如果是我的话,我选择把变量数据跟服务器同步,那数据具体应该是多少,服务器说了算。

两者都用上不是更好?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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