怎样找一个游戏的基址

社区服务
高级搜索
猴岛论坛社区服务新手测试求助怎样找一个游戏的基址
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
7个回复

怎样找一个游戏的基址

楼层直达
CF基址专家

ZxID:13991629

等级: 上等兵
举报 只看楼主 使用道具 楼主   发表于: 2011-02-19 0
— 本帖被 scorer 执行合并操作(2011-02-20) —
地址找到后怎么找基址,要用OD吗,设置断点什么的,不会弄啊,谁教教我
忠信

ZxID:13970226

等级: 禁止发言

举报 只看该作者 沙发   发表于: 2011-02-19 0
这个可以进百度、

百度输入你要找的游戏,,

进第一个就行了。
888

ZxID:888

等级: 禁止发言
配偶: 点心

举报 只看该作者 板凳   发表于: 2011-02-19 0
您好,很高兴为您解答

方法如下:

先制作成Dll(建一个程序用来调用内存写入),再用注入器将dll注入CF程序中,对Dll进行调用

违法修改会牵涉到过sx保护,用驱动写就可以解决。


CF:

免疫闪光搜索方法 :

进入游戏后搜0,扔闪光,把自己给闪了,然后切换出来搜1,等闪的时间过了,搜0  写0

早出3秒搜索方法 :

死了后搜0,复活后可以走动搜1    写1
             
僵尸不退搜索方法 : 

生化模式搜5.
             
个人竞技.

搜4  团队:搜3
             
显鬼搜索方法 :   

进幽灵房搜1  进刀站 搜0


其他游戏基址:

全局基址:它是所有地址的基础。
人物基址: 【全局基址】+某个偏移值
1
人物各个属性地址:【人物基址】+某个偏移值
1
技能基址: 【全局基址】+某个偏移值
2
包裹基址: 【全局基址】+某个偏移值
3
怪物基址: 【全局基址】+某个偏移值
4
物品基址: 【全局基址】+某个偏移值
5
也就是说,全局基址是一切的基础,而不同的其他各个基址是在它的基础上再次偏移。
为什么会有偏移呢
?
关于为什么会有偏移一说,粗略解释一下
...
现在的程序编写都是面向对象的,就是用类来封装对象的属性和方法
...
我们假设游戏大致是由以下几个类构成的
:
Type 游戏类

  角色 as 角色类

  怪物 as 怪物类

  物品 as 物品类

End type



type 角色类
当前生命 as long

最大生命 as long

当前经验 as double

升级经验 as double

......
end type

type 怪物类

.....
怪物生命 as long

怪物X坐标 as float

怪物Y坐标 as float

End type

......

type 物品类
......
物品名称
as string
物品数量
as long
.......
end type

好,我们举列来说明什么是基址,一级基址,偏移。

通过以上定义的类,可以看出,程序一开始运行时,会定义游戏类

例:public Game as 游戏类

当执行这一句时,程序既将所需的内存地址分配出来了。假定它如下:

    005000    00 01 02 03      04 05 06 07      08 09 0A 0B    0C 0D 0E 0F

00500000

00 50 00 0C

00 50 00 24

00 50 00 30

00 00 00 FF

00500010

00 00 00 FF

00 00 00 00

00 00 FF FF

00 00 00 00

00500020

00 00 FF FF

00 00 00 FF

00 00 00 01

00 00 00 0A

00500030

00 B4 A0 98

00 00 00 00

00 00 00 20

.......

(下图为彩色数据截图,方便会员查看)



从上面,我们可以看到整个Game类的开始的地址是00500000,这个就是传说中的基址了。
再看一级基址:蓝色的都是一级基址了,分别是角色类,怪物类,物品类的首地址。


再看看偏移。
角色类的一级基址与基址的偏移量是0,也就是
角色基址=【全局基址】+偏移0=00500000+0=00500000
怪物类的一级基址与基址的偏移量是4,也就是
怪物基址=【全局基址】+偏移4=00500000+4=00500004

  物品类的一级基址与基址的偏移量是8,也就是

      物品基址=【全局基址】+偏移8=00500000+8=00500008

我们在看看一级基址

  角色类基址=00500000

  内存编号00500000处的值是0050000C

  0050000C是内存编号00500000处的值,它表示的是一个内存编号,也就是指针,于是我们去内存编号0050000C处看看,桔**字体。

  0050000C处的四字节值是:FF,等于十进制的255,这个就是角色类的第一个元素:当前生命的值了,紧接着下一个四字节的数字就是生命最大值,

再往下8字节就是当前经验,再下8字节是升级经验。

因此,角色生命的地址就是 [全局基址]+0]+0

        角色生命最大值地址 [全局基址]+0]+4

                经验      [全局基址]+0]+8

              升经验验    [全局基址]+0]+10



  同理,怪物基址=00500004

  内存编号 00500004处的值是 00500024

  看紫色字体,可知,分别是怪物生命,X坐标,Y坐标。

        生命 [全局基址]+4]+0

        X坐标[全局基址]+4]+4

        Y坐标[全局基址]+4]+8

本帖de评分: 1 条评分 DB +1
DB+1

你在乱说

︶ㄣ∑醉︶ㄣ

ZxID:2974877

等级: 上将
一朝醉千古醉!一日隐千里居!玩乐乎命如此!今日玩今日醉!

举报 只看该作者 地板   发表于: 2011-02-19 0
未解答。
http://bbs.houdao.com/r4496526/

scorer


这个帖子中你回答的是 做一个DLL。 这个DLL是什么意思啊?有如何做DLL?

之后你又说,注入到CF程序。。


这是CF程序?CF游戏呢?

当然和。我在练级学做外挂。可是刚刚学了不到2个星期。

当然了。那个帖子得LZ不是我得小号。、他石家庄。,我廊坊。。

我不是来捣乱。

大波可以朋友

ZxID:13758129

等级: 元老
回归

举报 只看该作者 4楼  发表于: 2011-02-19 0
混乱
忠信

ZxID:13970226

等级: 禁止发言

举报 只看该作者 5楼  发表于: 2011-02-20 0
DLL
是什么:
动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL 是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。

DLL的依赖项
DLL的的优点
点击这里有:http://baike.baidu.com/view/4373.htm

如何做DLL:
作为软件设计和开发人员大都有过使用DLL(动态连接库)的经历,DLL的产生使得我们的应用程序在可维护性、代码的重复使用等方面都有了很大的提高。以前用的DLL一般都是用Visual C++、Delphi或者VB等编程语言来编写的,这种DLL的编写和使用,我们大都已经比较习惯了。作为新一代的程序开发语言--Visual C#,到底是如何编写和使用DLL的呢!本文就试着就这方面的问题来进行简单的介绍。

  Visual C++、Delphi或者VB等编程语言来编写成的DLL文件,在编译完成过以后,产生DLL文件已经是一个可以直接供计算机使用的二进制文件。但用Visual C#编译器生成的受管代码(managed code)虽然也是二进制文件,但不是可以直接供计算机使用的原始代码(机器语言代码)。他实质上是一种中间语言(IL)代码,这种IL代码要转变成可以供计算机直接使用的原始代码,就需要经过"下一代窗口服务"( Next Generation Windows Services,简写为NGWS ) runtime的即时编译器(即JIT)进行编译。

  经过以上比较,我们可以看出,用Visual C#生成的DLL文件已经和以前的DLL文件有了本质上的区别。用Visual C#生成的DLL文件在程序设计中更多的表现为一种类(Class)或者类库(Class Library)。本文就试着通过一个具体程序的例子,按照下面步骤来具体介绍:

  (1).创建一个DLL源代码。

  (2).编译此DLL源代码,生成DLL文件。

  (3).用此DLL来创建一个简单的客户端程序。

  一. 程序设计开发及运行环境

  (1).微软视窗2000专业版

  (2)..Net FrameWork SDK Beta 2

  二. 创建一个DLL源代码(dll.cs)

  由于用Visual C#创建的DLL,此DLL是不需要执行的界面,所以在DLL文件就没有必要定义Main ( )函数,来作为应用程序执行的入口。Dll.cs的源程序代码如下:

  Dll.cs:

namespace Dll file://定义了名称空间,在调用DLL的时候就要导入此名称空间。
{
 public class Show file://定义了一个类,在程序中就要来继承此类。
 { 
  public string Messages ( )
  file://定义了一个方法,此方法的作用就是返回下面字符串。
  {
   return "欢迎使用Visual C#做的DLL文件!" ;
  }
 }
}

  通过此DLL的源程序可以看出,此DLL表现为一个小型的类库,这是因为在此DLL中封装了名字叫DLL的名称空间,在此名称空间中又定义了一个Show类,在此类中有一个方法就是Messages。虽然定义的内容相对少了些,但却相当完全。
三. 编译此DLL源代码,生成DLL文件

  要把DLL源代码编译成DLL文件,就需要配置好编译器Csc.exe的参数和开关。我们知道编译器Csc.exe可以把源代码编译成四种不同的文件,分别是控制应用程序、代码库、windows应用程序、模块程序。编译命令具体如下:

csc /target:exe myProj.cs // 创建一个myProj.exe控制程序
csc /target:winexe myProject.cs file://创建一个myProj.exe的windows程序
csc /target:library myProject.cs file://创建一个myProj.dll代码库
csc /target:module myProject.cs file://创建一个myProj.dll模块

  对于如何配置编译器Csc.exe的其他参数和开关,可以参考稍前发表的文章《如何用CSC.exe来编译Visual C#的代码文件》,在此篇文章里面有比较详细的介绍。通过以下编译命令可以得到mydll.dll文件:

Csc /r:system.dll /t:library /out:mydll.dll dll.cs

  四.用此DLL来创建一个简单的客户端程序(test.exe)

  通过以上的源程序代码可以看到生成的mydll.dll文件虽然是一个以DLL为扩展名,实际上是一个类库,和我们经常用到的System.dll、System.Windows.Forms.dll等这些文件相似。同样用mydll.dll创建程序也和用以上这些类库创建程序相类似。就是第一步就是导入此名称空间--Dll。然后在去继承里面封装好的类--Show,再调用类中定义好的方法--Messages。下面就是按照以上的步骤,创建的客户端的源程序代码( test.cs ) :

test.cs:
using Dll ; // 导入此名称空间
using System ;

public class GetMessage
{
 public static void Main ( )
 {
  Show hi = new Show ( ) ; // 继承名称空间中定义的Show类
  Console.WriteLine ( hi.Messages ( ) ) ; // 调用此类中的方法
 }
}

  在把test.cs编译成执行程序中,要在编译命令中添加一个引用,就是引用mydll.dll文件。具体的编译命令如下:

csc /r:mydll.dll /r:system.dll test.cs

  编译完成,就会生成test.exe。执行此文件就会得到以下执行界面:


     图01:在客户端制作调用DLL的应用程序执行界面

  五.总结

  通过此篇文章,可以看出用Visual C#制作一个DLL其实并不是一件很复杂的事件,但对DLL的调用却和以往有了较大区别,其中最主要的原因是,用Visual C#或者其他.Net 程序开发语言制作的DLL和以前的DLL有了实质上的区别。它已经不是严格意义上的动态连接库了,而是一个类或者类库。

比较麻烦。
zycsohu

ZxID:10558868

等级: 元帅
苍白了谁的流年。。。
举报 只看该作者 6楼  发表于: 2011-02-20 0
楼上正解,如果还有什么不懂得可以发帖询问

CF基址专家

ZxID:13991629

等级: 上等兵
举报 只看该作者 7楼  发表于: 2011-02-20 0
回复[2楼]
我切换出来还没搜出来呢闪光时间就到了,闪光也就3、4秒,我切出来在输入完数值就到了3、4秒了
« 返回列表
发帖 回复