游戏破解器与文件加解密

Clion输出中文乱码终极解决方案:
https://blog.csdn.net/qq_43302195/article/details/109009784

1. 游戏作弊器

工具的使用:
打开附件提供的修改器(Cheat Engine.exe) => 文件,打开进程,找到并选择正在运行的目标exe => 调试进程 => 输入值(eg:97) => 首次扫描,找到97对应的地址,右键修改其所对应的值,完成修改.

// 游戏作弊器
// C语言:地址的重要性
#include <stdio.h>
#include <windows.h>int main() {printf("游戏倒计时开始了....\n");int i;for (int i = 100; i > 0 ; i--) {printf("还剩下多少秒:%d, 内存地址是:%p\n", i, &i);Sleep(2000);}printf("恭喜,你已经赢得了游戏最高等级,碉堡了!\n");getchar();  //停留//最难的是地址的寻找,只要你能找到地址,就操作一切return 0;
}

2. 文件的读

//2. 文件的读
#include <stdio.h>
#include <stdlib.h> //文件的操作,是在这个头文件里面的
#include <string.h>int main() {//fopen打开文件的意思(参数1:文件路径 文件源, 参数2:模式r(读),w(写),rb(作为二进制文件读),rw(作为二进制文件写), 返回值:FILE结构体)//FILE * fopen(const char *, const char *);char * fileNameStr = "H:\\00C\\0C06\\Leo.txt";//既然是使用了r,你要提前准备好文件FILE * file = fopen(fileNameStr, "r");if (!file) {printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);exit(0); // 退出程序}//先定义缓存区域(容器)char buffer[10];//1.缓冲区buffer, 2.长度10, 3.文件指针变量 => 每次从file中读10个字符长度while (fgets(buffer, 10, file)) {printf("%s\n", buffer);}//关闭文件fclose(file);return 0;
}

3. 文件的写

//3. 文件的写
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {char * fileNameStr = "H:\\00C\\0C06\\LeoW.txt";FILE * file = fopen(fileNameStr, "w");if (!file) {printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);exit(0);}fputs("ni hao", file);//关闭文件fclose(file);return 0;
}

4. 文件的复制

//4. 文件的复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 二进制文件来复制 rb wb
int main() {char * fileNameStr = "H:\\00C\\0C06\\Leo.txt";  //来源char * fileNameStrCopy = "H:\\00C\\0C06\\LeoCopy.txt";  //目标//rb 读取二进制数据FILE * file = fopen(fileNameStr, "rb");//wb 写入二进制数据FILE * fileCopy = fopen(fileNameStrCopy, "wb");if (!file || !fileCopy) {printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);exit(0);    //退出程序}int buffer[512];    //512 * 4 = 2048int len;    //每次读取的长度//fread:参数1:容器buffer, 参数2:每次偏移多少int, 参数3:容器大小,这里输入错误,文件就会报废//sizeof(buffer) / sizeof(int) 等价与 514while ((len = fread(buffer, sizeof(int), 514, file)) != 0) {fwrite(buffer, sizeof(int), len, fileCopy);}//关闭文件fclose(file);fclose(fileCopy);return 0;
}

5. 文件大小的获取

// 文件大小的获取
#include <stdio.h>
#include <stdlib.h> // 文件的操作,是在这个头文件里面的
#include <string.h>int main() {//没有专门的文件大小获取API//(思路:)读取头指针 头指针挪动位置,挪动到最后,就可以求得文件大小char * fileNameStr = "H:\\00C\\0C06\\Leo.txt";  //来源// 既然是使用了rb,他会自动生成文件 0kbFILE * file = fopen(fileNameStr, "rb"); // file == 指针if (!file) {printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);exit(0); // 退出程序}// 都是操作指针来玩的// SEEK_SET(开头)  SEEK_CUR(当前)  SEEK_END(结尾)fseek(file, SEEK_SET, SEEK_END);// 走到这里之后:file有了更丰富的值,给你的file指针赋值,挪动的记录信息long file_size = ftell(file);printf("%s文件的字节大小是:%ld\n", fileNameStr, file_size);//关闭文件fclose(file);return 0;
}

6. 文件加密和文件解密

// TODO 【文件的加密】
// 文件加密 与 文件解密  二进制的方式来操作  .txt  .png  ...
#include <stdio.h>
#include <stdlib.h> // 文件的操作,是在这个头文件里面的
#include <string.h>
int main() {char * fileNameStr = "H:\\00C\\0C06\\Leo.png";  //来源char * fileNameStrEncode = "H:\\00C\\0C06\\LeoEncode.png";  //加密后的目标文件FILE * file = fopen(fileNameStr, "rb"); // r 必须字节提前准备好文件FILE * fileEncode = fopen(fileNameStrEncode, "wb"); // w 创建一个0kb的文件if (!file || !fileEncode) {printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);exit(0); // 退出程序}// 【加密 和 解密 的 思路】// 加密 == 破坏文件// 解密 == 还原文件 还原之前的样子// ---// 加密的想法:(全部)把每一个字节都拿出来,对每一个字节都全部处理, (部分加密:把某一部分内容拿出来处理)// TODO 加密的想法// while 循环遍历的时候  取出来的  10// 10 ^异惑 5   就变成这个效果1111/// TODO 解密的想法// while 循环遍历的时候  取出来的  1111// 1111 ^异惑 5  就变成这个效果10(还原)// 接收读取的值int c;// fgetc(文件指针)  返回值 EOF = end of filewhile ((c = fgetc(file)) != EOF) {// 加密操作fputc(c ^ 5, fileEncode); // 写入到 fileEncode  D:\Temp\IMG_encode.jpg(加密后的图片)}// 关闭文件fclose(file);fclose(fileEncode);
}// TODO 【文件的解密】
#include <stdio.h>
#include <stdlib.h> // 文件的操作,是在这个头文件里面的
#include <string.h>
int main() {char * fileNameStr = "H:\\00C\\0C06\\LeoEncode.png";  //来源char * fileNameStrDecode = "H:\\00C\\0C06\\LeoDecode.png";  //解密后的目标文件FILE * file = fopen(fileNameStr, "rb"); // r 必须字节提前准备好文件FILE * fileEncode = fopen(fileNameStrDecode, "wb"); // w 创建一个0kb的文件if (!file || !fileEncode) {printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);exit(0); // 退出程序}int c;while ((c = fgetc(file)) != EOF) {// 解密操作 1111 ^ 5 = 10;(还原)fputc(c ^ 5, fileEncode);}// 关闭文件fclose(file);fclose(fileEncode);
}

7. 字符串密码加密和解密

// TODO 【文件的加密,使用密钥】
#include <stdio.h>
#include <stdlib.h> // 文件的操作,是在这个头文件里面的
#include <string.h>
int mainT9() {char * fileNameStr = "H:\\00C\\0C06\\Leo.png";  //来源char * fileNameStrEncode = "H:\\00C\\0C06\\LeoEncode.png";  //加密后的目标文件// 密钥char * password = "123456"; // 我现在做的事情:我的密钥 必须生效FILE * file = fopen(fileNameStr, "rb"); // r 必须字节提前准备好文件FILE * fileEncode = fopen(fileNameStrEncode, "wb"); // w 创建一个0kb的文件if (!file || !fileEncode) {printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);exit(0); // 退出程序}int c;int index = 0;int pass_len = strlen(password);while ((c = fgetc(file)) != EOF) {char item = password[index%pass_len];// 1 2 3 4 5 6  1 2 3 4 5 6  1 2 3 4 5 6 ...printf("item:%c\n", item);fputc(c ^ item, fileEncode);index ++;}// 关闭文件fclose(file);fclose(fileEncode);return 0;
}// TODO 【文件的解密,使用密钥】
#include <stdio.h>
#include <stdlib.h> // 文件的操作,是在这个头文件里面的
#include <string.h>
int main() {char * fileNameStr = "H:\\00C\\0C06\\LeoEncode.png";  //来源char * fileNameStrDecode = "H:\\00C\\0C06\\LeoDecode.png";  //解密后的目标文件FILE * file = fopen(fileNameStr, "rb"); // r 必须字节提前准备好文件FILE * fileDecode = fopen(fileNameStrDecode, "wb"); // w 创建一个0kb的文件if (!file || !fileDecode) {printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);exit(0); // 退出程序}// 密钥char * password = "123456"; // 我现在做的事情:我的密钥 必须生效int c;int index = 0;int pass_len = strlen(password);while ((c = fgetc(file)) != EOF) {// index%pass_len => 1 2 3 4 5 6 1 2 3 4 5 6 1 2 ..fputc(c ^ password[index%pass_len], fileDecode);index++;}// 关闭文件fclose(file);fclose(fileDecode);return 0;
}

8. 上节课遗留知识点

#include <stdio.h>void substrAction3(char * result, char * str, int start, int end) {for (int i = start; i < end; ++i) {*(result++) = *(str + i);}
}int mainT11() {char * str = "Derry is";// char * result = "ABCDEFG"; (会报错,因为不准修改常量值)// char * result = NULL;  (会报错,因为不准修改NULL值)// char * result; (VS不允许野指针(严格))// char * result; // 这就是不通过的 才对的  VS 不通过对的// 在你的栈区开辟空间[推荐方式]char result[100] = "ABC";substrAction3(result, str, 3, 5);printf("%s\n", result);// 这两个地方搞晕了,// char arry1[]={'1','2'}; // 不会自动增加\0// 一级指针,字符指针,数组char * arry = "21"; // 会自动增加\0// char arry[10] = "12";// 不会自动增加\0char arry3[10] = "12";return 0;
}

9. 额外练习题

#include "stdio.h"
void MySort(int* array, int arraySize);
int main() {int array[10] = {23,325,3,656,1,-23,235,666,90,879};int length = sizeof(array) / sizeof(int);MySort(array, length);for (int i = 0; i < length; ++i) {printf("%d ", array[i]);}
}
void MySort(int *array, int arraySize) {int m,i,j;for (i = 0; i < arraySize - 1; ++i) {for (j = 0; j < arraySize - 1 - i; ++j) {if (array[j] > array[j + 1]) {m = array[j];array[j] = array[j + 1];array[j + 1] = m;}}}
}#include "stdio.h"
void UpperCase(char str[]) {for(size_t i = 0; i < sizeof(str)/sizeof(str[0]); ++i) {if ('a' <= str[i] && str[i] <= 'z') {str[i] -= ('a' - str[i] + 'A');}}
}
int main() {char str[] = "aBcDe";UpperCase(str);printf("%c ", str);
}#include <stdio.h>
int climbStairs(int n) {if (n <= 2) {return n;} else {int num1 = 1;int num2 = 2;int temp = 0;for (int i = 2; i < n; ++i) {temp = num1 + num2;num1 = num2;num2 = temp;}return temp;}
}
int main() {int n = 0;scanf("%d", &n);printf("%d ", climbStairs(n));
}

07_游戏破解器与文件加解密相关推荐

  1. 基于CH375的嵌入式USB文件加解密系统的设计

    基于CH375的嵌入式USB文件加解密系统的设计 [日期:2008-7-21] 来源:电子技术应用  作者:华中科技大学 电子与信息工程系, 湖北 武汉 430074 [字体:大 中 小] <s ...

  2. 使用拦截器进行数据加解密

    文章目录 使用拦截器进行数据加解密 1. 加解密工具 3. 加解密字段注解 3.1 加密注解 3.2 解密注解 4. 封装加解密工具 5. 拦截器 6. 不同框架配置说明 6.1 springboot ...

  3. java实现对文件加解密操作

    源文件: 加密后的文件: 解密后的文件: package com.gblfy.test;import java.io.*;/*** java 实现对文件加解密的方法** @author gblfy* ...

  4. GPG对文件加解密的简单实现

    解密时如何覆盖已经存在的解密后文件,而不是弹出询问框是否覆盖 初识GPG 加解密实现 gui加解密 生成密钥 命令行方式加解密 信任度设置 方法一 方法二 参考链接 解密时如何覆盖已经存在的解密后文件 ...

  5. 文件加解密(任意文件类型的文件)

    直接上代码: 支持任意类型的文件的加密和解密 可以自由修改密钥 需要修改文件路径 文件加解密. #define _CRT_SECURE_NO_WARNINGS #include <stdlib. ...

  6. 国密 SM4 文件加解密

    国密算法SM4 对文件加解密 说明:调用开源bcprov-jdk15on 加密算法工具,使用SM4算法,对文件进行加密.解密:文件流的操作使用hutool工具包来实现. 引用依赖 <depend ...

  7. CTF高手教你如何实现文件加解密破解

    0x01 前几日,在公司对客户单位的网站与APP进行授权渗透,在使用用户提供账号登录APP端进行抓包时,发现APP传输包与返回包均进行了加密 bp抓包界面如下: 为破解密文获取请求与传输包中内容,于是 ...

  8. 密码技术应用--SM4文件加解密

    记录一下对一些稍大文件进行SM4加解密的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客 var key = []byte("1234567812 ...

  9. 密码技术应用--AES文件加解密

    记录一下对一些稍大文件进行AES加解密的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客 var key = []byte("1234567812 ...

  10. 文件加解密,文件操作

     1.fseek,ftell,fread,fwrite(简单文件加密) #define _CRT_SECURE_NO_WARNINGS  //去掉安全检查 #include <stdio.h ...

最新文章

  1. c++自带的可持久化平衡树?rope大法好!(超详细解答 + 5道例题讲解,可直接替代可持久化的线段树、并查集、平衡树!)
  2. python基础:try...except...的详细用法
  3. [云炬学英语]每日一句2020.9.3
  4. 计算机和电子音乐之间的关系,浅析计算机音乐中算法作曲的特点及及作曲技法的对应关系.doc...
  5. Ms SQL Server 约束和规则
  6. (实模式+保护模式)模式切换的过程步骤(代码+文字解析)
  7. 交换机配置工具_二层网管交换机应用—环路检测
  8. 在实际项目中,如何选择合适的机器学习模型?
  9. 一文解锁加密算法的秘密
  10. 测试面试题,自动化测试与性能测试篇(附答案)
  11. 2022年考研数据结构_4 串
  12. linux根据端口号查询项目路径
  13. Visio直角连接线增加直角拐弯
  14. IMU预积分公式汇总
  15. 机器学习在学生成绩预测模型上的应用
  16. C#获取汉字首字母,多音拼音
  17. 数据库:sql 递归
  18. android背光系统,Android 的背光控制
  19. 数组:605.种花问题
  20. NO.65——人工智能学习:python实现广度优先搜索

热门文章

  1. 【说不得得半路出家】对一个html案例模版的小小修改
  2. python 函数 与 open打开文件的三种模式:r读、w写、a追加、
  3. Emulex FC HBA卡FW升级与驱动安装
  4. H5写搜索框:将搜索图标放入搜索框之内
  5. DSP程序中常出现的EINT、DINT、ERTM、DRTM、EALLOW、EDIS的理解
  6. [最新] Android 代码规范大全(Android开发速看)
  7. 计算机广告设计毕业论文,广告设计毕业论文题目
  8. 思翼FM30高频头转发模式
  9. 单相全桥逆变电路MATLAB仿真,原理图设计,单相全桥逆变器设计资料,ti的参考,可用做光伏并网逆变器
  10. 10g日志挖掘logmnr