各位游戏大佬大家好,今天小编为大家分享关于不root能不能使用gg修改器的内容,轻松修改游戏数据,赶快来一起来看看吧。
本文分享自华为云社区《》,作者:云存储开发者支持团队。
ASAN全称:Address Sanitizer,google发明的一种内存地址错误检查器。目前已经被集成到各大编译器中。
在c/c++开发过程中,经常出现内存异常使用的问题,比如踩内存,被踩的内存如果未被使用对外无影响。而一旦使用了被踩的内存,可能会出现进程core,死循环,进入异常分支等等各种千奇百怪的问题。这个时候要去定位这段内存为什么被踩,相当困难,因为已经错过了案发现场。如果不幸,遇到了这种问题,常用手段是:
1)分析被踩内存的特征值,比如是否是一个magic值,然后从代码库中找特征值,分析代码,缩小排查方向。
2)找到必现条件,通过gdb的watch功能,watch被踩的内存地址,一旦被踩,gdb将会打出踩内存的堆栈。
根据作者的经验,出现踩内存的问题需要消耗大量的人力定位。少则一人周,多种数人月。而这类问题,往往是由于某个低级编码错误引起的。
所以,我们迫切的希望,能在踩内存的第一现场就把凶手抓住,而不是在破坏已经表现出来的时候再去分析定位。而asan就能达到这个目的,它会接管内存的申请和释放,每次的内存的读写都会检查,因此可以做到快速的定位踩内存的问题。在asan之前也有其他的内存分析工具,但是asan是这些工具中比较优秀的,并不会损失大量的性能和内存(官方数据,性能下降两倍,而valgrind下降20倍:https:///google/sanitizers/wiki/AddressSanitizerComparisonOfMemoryTools)。
1、堆 OOB(堆内存越界)
int main(int argc, char **argv) {
int *array = new int[100];
array[0] = 0;
int res = array[argc + 100]; // BOOM
delete [] array;
return res;
}
2、栈外界栈越界
int main(int argc, char **argv) {
int stack_array[100];
stack_array[1] = 0;
return stack_array[argc + 100]; // BOOM
}
3、Global OOB(GlobalOutOfBounds 全局变量越界)
int global_array[100] = {-1};
int main(int argc, char **argv) {
return global_array[argc + 100]; // BOOM
}
4、UAF(UseAfterFree 内存释放后使用)
int main(int argc, char **argv) {
int *array = new int[100];
delete [] array;
return array[argc]; // BOOM
}
5、UAR(UseAfterReturn 栈内存回收后使用,该功能还存在少量bug,默认未开启,开启ASAN_OPTIONS=detect_stack_use_after_return=1)
int *ptr;
__attribute__((noinline))
void FunctionThatEscapesLocalObject() {
int local[100];
ptr = &local[0];
}
int main(int argc, char **argv) {
FunctionThatEscapesLocalObject();
return ptr[argc];
}
6、UMR(uninitialized memory reads读取未初始化内存)
7、Leaks(内存泄露)
现在大部分编译器已经集成了支持asan的能力,编译的时候加上编译选项即可。
常见的编译选项:
本文使用的是华为 EulerOS v2r9 版本。
下面开始我们的阿桑之旅
1、写个bug,写一个释放后的内存还在使用的例子。
#include <stdlib.h>
int main()
{
int *p = malloc(sizeof(int)*10);
free(p);
*p = 3;//该程序正常情况下并不会导致进程core,因为free后的内存被glibc的内存分配器缓存着
return 0;
}
2、加上编译选项编译:gcc -fsanitize=address -g ./test.c -lasan -L /root/buildbox/gcc-10.2.0/lib64/ 其中-L指定的是 libasan.so 存放的位置。
3、指定asan的so的目录,export LD_LIBRARY_PATH=/root/buildbox/gcc-10.2.0/lib64/,执行./a.out执行程序,将可以看到asan报错。指出了内存异常使用的位置和原因。
4、在工程中,我们更希望程序遇到错误能不中断,而继续执行下去,我们可以使用 -fsanitize-recover=address 方法。这次我们更改下代码,多引入几个错误。
#include <stdlib.h>
int main()
{
int *p = malloc(sizeof(int)*10);
free(p);
*p = 3; //错误1.释放后继续使用
p = malloc(sizeof(int)*10);
p[11] = 3;//错误2,越界写
return 0;
}
5、编译:gcc -fsanitize=address -fsanitize-recover=address -g ./test.c -lasan -L /root/buildbox/gcc-10.2.0/lib64/
6、设置环境变量:export ASAN_OPTIONS=halt_on_error=0:log_path=/var/log/err.log,执行程序./a.out
7、查看日志路径:在/var/log目录下,形成一个err.log.212的文件,212是执行./a.out的进程号。文件记录了详细的错误信息。
ASAN要记录每一块内存的可用性。把用户程序所在的内存区域叫做主内存, 而记录主内存可用性的内存区域,则叫做影子内存 (Shadow memory)。
所有主内存的分配都按照 8 字节的方式对齐。然后按照 1:8 的压缩比例对主内存的可用性进行记录,然后存入影子内存中。影子内存无法被用户直接读写, 需要编译器生成相关的代码来访问。
每一次内存的分配和释放, 都会写入影子内存。每次读/写内存区域前, 都会读取一下影子内存, 获得这块内存访问合法性 (是否被分配, 是否已被释放)。
对影子内存的写入只在分配内存的时候发生, 所以只要分配内存是多线程安全的, ASan 就是多线程安全的, 这在大部分情况下也确实成立。
计算影子内存的地址需要快速,他们采用了: 主内存地址除以 8,再加上一个偏移量的做法.因为堆栈分别在虚拟内存地址空间的两端,这样影子内存就会落在中间。而如果用户以外访问了影子内存,那么影子内存的“影子内存”就会落到一个非法的范围 (Shadow Gap) 内,就可以知道访问出了些问题。
点击下方关注,第一时间了解华为云新鲜技术~
以上就是关于不root能不能使用gg修改器的全部内容,游戏大佬们学会了吗?
gg修改器免root框架用,下载一个神奇的软件GG修改器,让你免root轻松修改游戏 分类:免root版 4,666人在玩 随着手机游戏的普及,越来越多的玩家追求更高的游戏体验,多数情况下都需要进行一些游戏内部参数的调整。而要对游戏进行修改,最简单的方法是在root后通过一些专业的工具进行修改,……
下载gg 修改器没有root,介绍GG修改器 分类:免root版 4,259人在玩 GG修改器是一款非常实用的软件,它可以让你在没有ROOT权限的情况下修改手机游戏,实现各种自定义操作。如果你是一个游戏玩家,那么这款软件一定会让你称心如意。 软件下载与安装 G……
下载gg修改器给root权限,下载一个高效的gg修改器,轻松获取root权限 分类:免root版 4,029人在玩 现在越来越多的人开始使用手机进行各种操作,但有时候我们需要更高级的权限才能完成某些任务。这时,获取root权限就变得尤为重要。然而,对于很多用户来说,获取root权限似乎并不是……
下载GG修改器root怎么,GG修改器root打造轻松ROOT体验的神器 分类:免root版 4,061人在玩 GG修改器root是一款针对安卓设备开发的软件下载,它可以让用户轻松地进行ROOT操作。ROOT操作是指用户获得了超级管理员权限,在此基础上可以自由地对手机进行定制、优化等操作,同时……
下载gg修改器未获得root权限_gg修改器无root权限怎么用 分类:免root版 4,745人在玩 各位游戏大佬大家好,今天小编为大家分享关于gg修改器未获得root权限_gg修改器无root权限怎么用的内容,轻松修改游戏数据,赶快来一起来看看吧。 现在安卓软件多如牛毛,但是在制作……
下载gg修改器不root怎么用教学,下载一个神奇的软件,轻松使用gg修改器不root 分类:免root版 4,019人在玩 GG修改器是一款非常实用的游戏修改工具,可以让玩家在游戏中轻松获得各种资源和道具。但是传统的GG修改器需要对手机进行root,这对于一些不太熟悉操作的玩家来说可能有些困难。现在……
下载gg修改器怎么调root,下载一个最新的gg修改器,轻松调root 分类:免root版 2,472人在玩 现在越来越多的人都喜欢使用gg修改器来玩游戏。与此同时,Root也是很多用户想要拥有的功能之一。如果你正在寻找一款能够帮助你实现这个目标的软件,那么最新的gg修改器就是你需要的……
下载gg修改器下载无root_GG修改器正版下载 分类:免root版 6,290人在玩 各位游戏大佬大家好,今天小编为大家分享关于gg修改器下载无root_GG修改器正版下载的内容,轻松修改游戏数据,赶快来一起来看看吧。 ▼不过默认情况下,玩物下载非常吃上传流量,甚……
下载gg无root修改器怎么用_gg修改器怎么用教学无root 分类:免root版 4,438人在玩 各位游戏大佬大家好,今天小编为大家分享关于gg无root修改器怎么用_gg修改器怎么用教学无root的内容,轻松修改游戏数据,赶快来一起来看看吧。 『 写在前头 』 谷歌 Chrome 浏览器……
下载怎样获得gg修改器的root权,标题:轻松获得GG修改器root权限的软件下载 分类:免root版 5,268人在玩 如果您是一位游戏玩家,那么您一定知道GG修改器——这款神奇的工具可以让您轻松修改游戏内的数据以获得更好的游戏体验。然而,要使用GG修改器进行修改操作需要获得root权限,这对于很……
下载