首页 » 99链接平台 » 游戏安全逆向工程师:C语言速成-入门到精通「价值1980元」(逆向方块分析游戏技术)

游戏安全逆向工程师:C语言速成-入门到精通「价值1980元」(逆向方块分析游戏技术)

南宫静远 2024-11-16 15:55:25 0

扫一扫用手机浏览

文章目录 [+]

// 下栽のke:chaoxingit.com/1333/

逆向分析,计算机世界中的九阴真经

这门神技,让你从任人碾压的菜鸟,变成随手秒杀别人的江湖大鳄。

逆向工程

游戏安全逆向工程师:C语言速成-入门到精通「价值1980元」(逆向方块分析游戏技术) 99链接平台
(图片来自网络侵删)

你玩游戏么?单机游戏,你是否使用过游戏补丁、修改器?

逆向工程,又称逆向技术,是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。
逆向工程源于商业及军事领域中的硬件分析。
其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理。

软件逆向工程,随着计算机技术在各个领域的广泛应用,特别是软件开发技术的迅猛发展,基于某个软件,以反汇编阅读源码的方式去推断其数据结构、体系结构和程序设计信息成为软件逆向工程技术关注的主要对象。
软件逆向技术的目的是用来研究和学习先进的技术,特别是当手里没有合适的文档资料,而你又很需要实现某个软件的功能的时候。
也正因为这样,很多软件为了垄断技术,在软件安装之前,要求用户同意不去逆向研究。

而,这是重点:逆向工程的实施过程是多领域、多学科的协同过程。

我们拿它来讲解

首先,我声明一点,本文一切仅为技术探讨,并不包含任何攻击性、负面性侵犯。
我酷爱俄罗斯方块,而其中火拼俄罗斯更为火爆。
记得当年不日不夜的练习俄罗斯方块,试图在3V3竞技中一展宏图。
却没有料到高手甚多,秒我乃拈花摘叶,随手即来。

此刻,如何是好?

假如,我有一个,传说中的神兵,是不是可以逆转这样狼狈的局面呢?嗯,有趣,甚是有趣。
那么,我们就开始造兵器——打造一款,传说中火拼俄罗斯方块辅助如何?

首先,要打造一个辅助,你必须介入程序,怎么介入?

远程注入DLL!

DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。
使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运行。

这样一来,普通的进程管理器就很难发现这种病毒了,而且即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个DLL就不会在内存中卸载。

用户也就无法在资源管理器中删除这个DLL文件,真可谓一箭双雕哉。
记得2003年QQ尾巴病毒肆虐的时候,就已经有些尾巴病毒的变种在使用这种技术了。
你需要了解以下几个API函数:

OpenProcess - 用于打开要寄生的目标进程。
VirtualAllocEx/VirtualFreeEx - 用于在目标进程中分配/释放内存空间WriteProcessMemory - 用于在目标进程中写入要加载的DLL名称。
CreateRemoteThread - 远程加载DLL的核心内容,用于控制目标进程调用API函数。
LoadLibrary - 目标进程通过调用此函数来加载病毒DLL。

在此我只给出了简要的函数说明,关于函数的详细功能和介绍请参阅MSDN。
还有,至于代码,本文不贴代码,只讲技术,有兴趣可以自行谷歌。

如此以来,就可以将自己写的DLL,注入到火拼俄罗斯方块这个程序里,并且让他运行起来。

DLL里实现什么?

DLL里需要实现的就是一套基于人工智能的玩火拼俄罗斯的机器人。
我们假设已经有一款超高智能的LIB已经被我们引入。
那么,DLL还需要就是实现模拟控制的一些方法。
还需要什么?还需要当前方块的样子,下一个方块的样子,当前自己摆放的样子,甚至还可能需要知道对手摆放的样子,自己获得了哪些道具。

这些数据,怎么来?

图像识别,将当前窗口截图,然后开始根据X Y的坐标进行分析,通过图像识别的方法,获得当前方块样子,自己摆放的样子,对手的样子。

这样做好么?

这是比较直观的方案,但是每次都要扫描,进行图像比较,然后获得数据,你会直观的觉得,那会快么?效率高么?假定有了这些数据,你还要做什么?当然就是操作了,移动方块,变形方块,下落方块和使用道具了。
这又如何做呢?简单,模拟鼠标键盘按键,然后操作就好了。

听起来,这一套,似乎是不错的方案,不是么?NO,这样做出来,顶多算一个兵器,要称之为神兵,估计还是有一点点距离的!
那么,神兵的话,我们该如何打造?

分析内存,从内从中找到当前方块,自己摆放的样子,对手的样子。
分析程序,获得开发者实现操作函数,并且调用这些函数。
于是?听起来很深奥的样子,能办到么?

逆向工具

在这里,我只为大家普及工具,就不一一演示,我只做简单的介绍和说明。

静态分析工具 IDA,交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA,是总部位于比利时列日市(Liège)的Hex-Rayd公司的一款产品。
开发IDA的是一位编程天才,名叫Ilfak Guilfanov。
十年前诞生时,IDA还是一个基于控制台的MS-DOS应用程序,这一点很重要,因为它有助于我们理解IDA用户界面的本质。
除其他内容外,IDA的非Windows和非GUI版本仍然继续采用源于最初DOS版本的控制台形式的界面。

动态调试工具有OD(OllyDBG)和windbg。
调试应用层程序两个调试器都可以,OD因为主要面向逆向,窗口布局更为合理直观且插件众多,所以一般情况下都首选OD,windbg没那么方便,大部分操作通过命令来进行,但它也有它的优势,各种命令(内置命令、元命令和扩展命令)提供了强大的控制和分析能力,所以windbg有时也会用到。
如果要调试内核程序或模块那OD就无能为力了,windbg可以说是唯一的选择,以前还有个 softice,但 softice已经停止更新和支持,现在已经没什么了用了。

侦壳工具 PEid,但实际结果还是工具加上自己的分析。
脱壳,尽量手动。
二进制编辑工具UltraEdit、Hex Workshop以及WinHex,比较工具 Beyond Compare。
网络包抓包分析工具Wireshark和Iris。
文件和注册表监视工具Process Monitor。
最后,虚拟机,VM不二。

开始逆向

有了工具,我们就可以开始对火拼俄罗斯进行逆向分析了,逆向是一个复杂而繁琐的过程。
会经历无数的尝试,代码分析,逻辑分析。
如果是分析游戏,如果您是游戏开发者,或许思路更为广泛,可以明白一些开发者的正常思维。
那么,这个游戏,我们入手点在那?

用OD附加俄罗斯方块,找到一个关键点,这个关键点就是,游戏初始化。

从正常的开发角度来想,在初始化的时候,一般都会清空数据。
无论是从网络还是本地,都会分配方块的样式。
然后从这里入手,我就很快的找到了几个内存地址。
从这些地址中,可以得到当前方块的样式,并且可以预知下一个方块的样式,并且得到了当前摆放的游戏池中的样式。
然后,紧接着,就找寻控制移动的地方。
很快,就从按键得到一些信息,找到了。

其中,所有下落后的方块,我们可以在OD中看到他的内存样式,其中表示红色的,就是被改变的数据。
什么数据被改变呢?就是确定下落后的方块,数字代表了方块的颜色,也可以说是方块的样式。
内存中的分布如图可见。

然后,通过注入DLL到进程,做出了一个插件。
图片中演示了插件工作的样式。

其中,已经预知了下几个方块的样式,并且得到了游戏棋盘的数据,AUTO就是自动开始游戏。
测试了效果还不错。

结束了吗?

其实逆向的还有很多很多高深的奥秘。
我也只是一个初级者。
现在大多数的程序,都加入了一些反调。
并且为自己的程序加入了一些壳。

现在安全越来越被大家重视,而公司安全逆向组一般都会做一些病毒样本分析,也会做一些公司产品的防护。
而这是一个博大精深的世界,里面非常的有趣,也富有挑战。
所以,一文的简单介绍,希望能把你吸引进入,这个神奇的界域。

标签:

相关文章

C语言中的注释之美_编程艺术的点睛之笔

在编程领域,C语言以其简洁、高效、灵活而著称。在这门语言的世界里,注释却扮演着不可或缺的角色。正如一位著名程序员所说:“注释是程序...

99链接平台 2024-12-27 阅读0 评论0

CMS显示锁,守护数字信息安全的坚实防线

随着信息技术的飞速发展,网络已经成为人们生活、工作的重要组成部分。在便利的网络安全问题也日益凸显。如何保障数字信息安全,成为了摆在...

99链接平台 2024-12-27 阅读0 评论0

C语言之“写”,编程之美与智慧之光

自古以来,编程便被誉为智慧之光。而在众多编程语言中,C语言以其简洁、高效、强大而备受推崇。今天,我们就来探讨一下C语言中的“写”,...

99链接平台 2024-12-27 阅读0 评论0

C语言中的延时艺术,时间控制的艺术之旅

在计算机科学的世界里,时间是一种宝贵的资源。而在C语言编程中,掌握时间的控制技巧,尤其是延时,能够使程序的行为更加符合我们的需求。...

99链接平台 2024-12-27 阅读0 评论0

解码IT老五,介绍互联网技术界的佼佼者

随着互联网的飞速发展,我国涌现出一大批优秀的互联网技术人才。在这些佼佼者中,IT老五以其独特的魅力和卓越的才能,成为众人瞩目的焦点...

99链接平台 2024-12-27 阅读0 评论0