| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 706 人关注过本帖
标题:关于CE的一个问题
取消只看楼主 加入收藏
后卿
Rank: 4
来 自:网络
等 级:业余侠客
威 望:1
帖 子:302
专家分:295
注 册:2016-10-22
结帖率:81.71%
收藏
已结贴  问题点数:20 回复次数:2 
关于CE的一个问题
程序代码:
int main()
{
    int gold = 1000;
    char* p = (char*)&gold;
    char* mem[4]{};
    mem[0] = new char;
    mem[1] = new char;
    mem[2] = new char;
    mem[3] = new char;
    mem[0][0] = p[3];
    mem[1][0] = p[0];
    mem[2][0] = p[2];
    mem[3][0] = p[1];
    int val = 0;
    char* p1 = (char*)&val;
    p1[0] = mem[1][0];
    p1[1] = mem[3][0];
    p1[2] = mem[2][0];
    p1[3] = mem[0][0];
    gold=val;
    while (1)
    {
        std::cout << "gold的数量为===>" << gold;
        system("pause");
        gold += 100;
    }
    system("pause");
}

今天做了一个实验,不想让别人用CE搜到gold的值,像上面这样写,可以吗?
搜索更多相关主题的帖子: new char pause system int 
2023-04-27 11:47
后卿
Rank: 4
来 自:网络
等 级:业余侠客
威 望:1
帖 子:302
专家分:295
注 册:2016-10-22
收藏
得分:0 
有个朋友说
在游戏里面,可以通过把数据打乱的方式保证游戏数据不会被搜索到
比如int gold=1000
当我们用CE在程序中搜1000时,可能就会找到gold的真实地址,
但是如果我们把gold在内存中的存储方式打乱,比如
gold=1000四个字节,然后把每个字节打乱并将每一份保存起来
当需要显示gold时,再把保存好的一份重新组合就能显示
我知识水平不够,不理解的地方是,当把它重新组合的时候,组合完毕后
不就再内存中有一个完整的gold了吗,不还是能被搜索到??
2023-04-27 19:08
后卿
Rank: 4
来 自:网络
等 级:业余侠客
威 望:1
帖 子:302
专家分:295
注 册:2016-10-22
收藏
得分:0 
回复 3楼 东海ECS
程序代码:
#include <iostream>
class hint
{
private:
    char* mem[4]{};
public:
    hint(int val);
    operator int();
    void operator =(int f_gold);
    ~hint();
};
hint::hint(int val)
{
    mem[0] = new char;
    mem[1] = new char;
    mem[2] = new char;
    mem[3] = new char;
    *this = val;
}
hint::~hint()
{
    delete mem[0];
    delete mem[1];
    delete mem[2];
    delete mem[3];
}
hint::operator int()
{
    int val{};
    char* read = (char*)&val;
    read[0] = mem[1][0];
    read[1] = mem[3][0];
    read[2] = mem[2][0];
    read[3] = mem[0][0];
    return  val;
}
void hint::operator=(int val)
{
    char* p = (char*)&val;
    mem[0][0] = p[3];
    mem[1][0] = p[0];
    mem[2][0] = p[2];
    mem[3][0] = p[1];
}
int main()
{
    hint gold{ 100 };
    while (1)
    {
        std::cout << "gold的数量为===>" <<gold;
        system("pause");
        gold = gold + 100;
    }
    system("pause");
}

那为什么我这么写,CE 就搜索不到gold的数值了呢
我的意思是最简单的搜索搜索不到,如果是高手 的话可能还是会搜素到

[此贴子已经被作者于2023-4-28 10:55编辑过]

2023-04-28 09:51
快速回复:关于CE的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.122312 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved