Home Database Mysql Tutorial 大战2013之二:破解浴火银河2硬盘版

大战2013之二:破解浴火银河2硬盘版

Jun 07, 2016 pm 03:37 PM
crack harddisk read Milky Way

续上文: 破解了IC卡读写器的动态库,实在让人心力交瘁,蛋疼之下,随便找了个游戏玩玩 一不小心,玩上浴火银河2硬盘版(Galaxy On Fire),这个游戏有很多个不同平台的版本 感觉移动好吃力,跑半天都不到目的地,我们这样的人怎么能忍受龟速?更不用说是蜗

续上文:

 

破解了IC卡读写器的动态库,实在让人心力交瘁,蛋疼之下,随便找了个游戏玩玩

一不小心,玩上浴火银河2硬盘版(Galaxy On Fire),这个游戏有很多个不同平台的版本

感觉移动好吃力,跑半天都不到目的地,我们这样的人怎么能忍受龟速?更不用说是蜗牛了!

 

于是抄家伙,疯狂破解!(- -!这家伙,破解上瘾了……)

 

最先破解的是后燃器的加速时间、冷却时间和加速倍率,我改过最高的如下:

加速时间1分钟,冷却1秒,加速1000倍!

 

主要是我想撞一个行星看看是什么样的效果,结果我飞了半天硬是没撞上!

而且,加速太快,摄像机跟不上,直接往后面看了……

 

因此,这一块就不跟大家共享了,只贴一张图证实真相:

大战2013之二:破解浴火银河2硬盘版

 

一次加速就飞了4000多公里,星球还是望尘莫及,于是回头截个图……

 

破解出来比较实用的是修改飞船仓库容量和装甲等,先上个图:

 大战2013之二:破解浴火银河2硬盘版

我不想破解别人的东西,我只想传播下技术。

 

某人说,某人有些虚荣心,喜欢做些惊世骇俗的小动作,不为建功立业……

下面是动态库各个文件的C/C++源代码(按文件名顺序),编译为DLL即可调用(太累了,主程序不想写了,源码也在有空再上传了)。

 

API.DEF

EXPORTS
ReadShips
GetShip
SetShip
SaveShips
Copy after login


Exports.cpp

#include "Exports.h"
#include "Ship.h"

inline DWORD fnRev(DWORD dwNumber)
{	// 转换字节序
	register DWORD dw1;
	dw1 = dwNumber > 8) & 0xFF00;
	dw1 |= (dwNumber >> 24) & 0xFF;
	return dw1;
}

// DLL入口函数
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{	//printf("hModule.%p lpReserved.%p \n", hModule, lpReserved);
	switch(ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		// 进程装载
		SpaceShips = (PSPACESHIP)malloc(sizeof(SPACESHIP) * 44);
		if(!SpaceShips)
			return FALSE;
		break;
	case DLL_PROCESS_DETACH:
		// 线程卸载
		if(SpaceShips != NULL)
		{	// ...
			free(SpaceShips);
			SpaceShips = NULL;
		}
		break;
	case DLL_THREAD_ATTACH:
		break;
	case DLL_THREAD_DETACH:
		break;
	}
	return TRUE;
}

EXPORT_API LONG __stdcall ReadShips(LPCSTR lpShipFile, DWORD *pHash)
{	return (LONG)fnReadShips(lpShipFile, pHash);
}

EXPORT_API DWORD __stdcall GetShip(DWORD dwIndex, DWORD dwPropId)
{	return fnGetShip(dwIndex, dwPropId);
}

EXPORT_API BOOL __stdcall SetShip(DWORD dwIndex, DWORD dwPropId, DWORD dwValue)
{	return fnSetShip(dwIndex, dwPropId, dwValue);
}

EXPORT_API BOOL __stdcall SaveShips(LPCSTR lpShipFile)
{	return fnSaveShips(lpShipFile);
}
Copy after login


Exports.h

/**/

#ifndef __GAL32_EXP_H_
#define __GAL32_EXP_H_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>	// FILE

#define EXPORT_API __declspec(dllexport)
#define DESDW(d) ((d > 8) & 0xFF00) | ((d >> 24) & 0xFF))

extern inline DWORD fnRev(DWORD);

#endif</stdio.h></windows.h>
Copy after login


Hash.cpp和Hash.h是计算MD5的,可以计算任意内存块的md5,目的是检测玩家是否修改了文件

以确定要修改,还是先做备份……主程序都没写,这个也不发上来了,而且容易泄露大侠我的加密风格……

 

Ship.cpp

//

#include "Exports.h"
#include "Ship.h"
#include "Hash.h"

PSPACESHIP SpaceShips;
DWORD dwShipCount = 0;

BOOL fnReadShips(LPCSTR lpShipFile, DWORD *pHash)
{	// ..
	DWORD dwLoop;
	FILE *pfs = fopen(lpShipFile, "rb");
	if(pfs == NULL)
	{	// ..
		return 0;
	}
	dwShipCount = fread(SpaceShips, sizeof(SPACESHIP), 44, pfs);
	fclose(pfs);
	if(dwShipCount != 44)
	{	// ..
		return -1;
	}
	dwLoop = sizeof(SPACESHIP) * 44;
	// 用Hash判断是否是安全的文件
	fnCalcHash(SpaceShips, dwLoop, (DWORD)pHash);
	//for(dwLoop = 0; dwLoop = dwShipCount)
		return 0x80000000;
	switch(dwPropId){
	case 1:
		return fnRev(SpaceShips[dwIndex].dwArmor);
		break;
	case 2:
		return fnRev(SpaceShips[dwIndex].dwCargo);
		break;
	case 3:
		return fnRev(SpaceShips[dwIndex].dwPrice);
		break;
	case 4:
		return fnRev(SpaceShips[dwIndex].dwPriWeap);
		break;
	case 5:
		return fnRev(SpaceShips[dwIndex].dwSecWeap);
		break;
	case 6:
		return fnRev(SpaceShips[dwIndex].dwTurret);
		break;
	case 7:
		return fnRev(SpaceShips[dwIndex].dwEquip);
		break;
	case 8:
		return fnRev(SpaceShips[dwIndex].dwHandle);
		break;
	default:
		return fnRev(SpaceShips[dwIndex].dwIndex);
		break;
	}
	return 0x80000001;
}

BOOL fnSetShip(DWORD dwIndex, DWORD dwPropId, DWORD dwValue)
{	// 返回值应小于0x3FFFFFFF
	if((dwIndex >= dwShipCount)||(dwValue >= 0x40000000))
		return FALSE;
	switch(dwPropId){
	case 1:
		SpaceShips[dwIndex].dwArmor = fnRev(dwValue);
		break;
	case 2:
		SpaceShips[dwIndex].dwCargo = fnRev(dwValue);
		break;
	case 3:
		SpaceShips[dwIndex].dwPrice = fnRev(dwValue);
		break;
	case 4:
		SpaceShips[dwIndex].dwPriWeap = fnRev(dwValue);
		break;
	case 5:
		SpaceShips[dwIndex].dwSecWeap = fnRev(dwValue);
		break;
	case 6:
		SpaceShips[dwIndex].dwTurret = fnRev(dwValue);
		break;
	case 7:
		SpaceShips[dwIndex].dwEquip = fnRev(dwValue);
		break;
	case 8:
		SpaceShips[dwIndex].dwHandle = fnRev(dwValue);
		break;
	default:
		SpaceShips[dwIndex].dwIndex = fnRev(dwValue);
		break;
	}
	return TRUE;
}

BOOL fnSaveShips(LPCSTR lpShipFile)
{	// ..
	FILE *pfs = fopen(lpShipFile, "wb");
	if(pfs == NULL)
	{	// ..
		return FALSE;
	}
	dwShipCount = fwrite(SpaceShips, sizeof(SPACESHIP), 44, pfs);
	fclose(pfs);
	//if(dwShipCount != 44)
	return TRUE;
}
Copy after login


Ship.h

/**/

#ifndef __GAL32_SHIP_H_
#define __GAL32_SHIP_H_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

typedef struct _tagSpaceShip{
	DWORD dwIndex;
	DWORD dwArmor;
	DWORD dwCargo;
	DWORD dwPrice;
	DWORD dwPriWeap;
	DWORD dwSecWeap;
	DWORD dwTurret;
	DWORD dwEquip;
	DWORD dwHandle;
} SPACESHIP, *PSPACESHIP;

extern PSPACESHIP SpaceShips;
extern DWORD dwShipCount;

extern BOOL fnReadShips(LPCSTR, PDWORD);
extern DWORD fnGetShip(DWORD, DWORD);
extern BOOL fnSetShip(DWORD, DWORD, DWORD);
extern BOOL fnSaveShips(LPCSTR);

#endif
Copy after login


目前只公布修改飞船的代码,看看大家反应如何先,如果都有需要,那我就为人民服务一下下吧%……

 

2013-02-17 22:56:38

妈妈的,明天又要开工了

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How many digits is the hard drive serial number? How to query the Win11 hard drive serial number How many digits is the hard drive serial number? How to query the Win11 hard drive serial number Feb 29, 2024 pm 09:04 PM

The hard disk serial number can be checked through the hard disk packaging box or the hard disk casing, or in the Win11 system. However, some users do not know the method. This article is a method for querying the Win11 hard disk serial number brought to you by this site. What is the number of digits in a hard drive serial number? A computer hard drive serial number is a unique identifier that identifies a specific hard drive. It is provided by the hard drive manufacturer and cannot be modified by the user. The hard disk serial number usually contains 10 to 20 digits and letters, and of course generally consists of 12 digits. It can be used to record hard disk parameters such as hard disk capacity, loading mode, and read and write speeds. In computer systems, hard drive serial numbers are usually used to identify and distinguish different hard drives, and in some cases are used for password protection, software authorization, etc. pass

VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)VirtualBox error VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)VirtualBox error Mar 24, 2024 am 09:51 AM

When trying to open a disk image in VirtualBox, you may encounter an error indicating that the hard drive cannot be registered. This usually happens when the VM disk image file you are trying to open has the same UUID as another virtual disk image file. In this case, VirtualBox displays error code VBOX_E_OBJECT_NOT_FOUND(0x80bb0001). If you encounter this error, don’t worry, there are some solutions you can try. First, you can try using VirtualBox's command line tools to change the UUID of the disk image file, which will avoid conflicts. You can run the command `VBoxManageinternal

How to force hard disk format under Linux system How to force hard disk format under Linux system Feb 25, 2024 am 08:39 AM

How to force format a hard drive in Linux When using a Linux system, sometimes we need to format the hard drive in order to repartition or clear the data in the hard drive. This article will introduce how to force format a hard disk in a Linux system and provide specific code examples. 1. Check the hard disk device First, we need to check the hard disk device information to determine the hard disk device to be formatted. You can view it with the following command: #fdisk-l This command will list all hard disk devices in the system

Tutorial on adding a new hard drive in win11 Tutorial on adding a new hard drive in win11 Jan 05, 2024 am 09:39 AM

When buying a computer, we may not necessarily choose a large hard drive. At this time, if we want to add a new hard drive to win11, we can first install the new hard drive we purchased, and then add partitions to the computer. Tutorial on adding a new hard drive in win11: 1. First, we disassemble the host and find the slot of the hard drive. 2. After finding it, we first connect the "data cable", which usually has a fool-proof design. If it cannot be inserted, just reverse the direction. 3. Then insert the new hard drive into the hard drive slot. 4. After inserting, connect the other end of the data cable to the computer's motherboard. 5. After the installation is completed, you can put it back into the host and turn it on. 6. After booting, we right-click "This Computer" and open "Computer Management" 7. After opening, click "Disk Management" in the lower left corner 8. Then on the right you can

How to cancel Linux hard drive formatting How to cancel Linux hard drive formatting Feb 19, 2024 pm 12:18 PM

How to cancel the formatting of a Linux hard disk and code examples Introduction: When using the Linux operating system, sometimes we need to cancel the formatting operation of the hard disk. This article will tell you how to unformat a Linux hard drive and provide specific code examples. 1. What is hard disk formatting? Hard disk formatting refers to the operation of organizing and managing the data on the hard disk in a specific format. In Linux systems, we usually use file systems to format hard drives. Common file systems include ext4, NTFS, etc. two,

4K alignment when using DiskGenius tool for hard disk partitioning 4K alignment when using DiskGenius tool for hard disk partitioning Jan 01, 2024 pm 02:37 PM

4K alignment is a very important parameter in hard drives, but generally new hard drives do not have partitions and alignment. Today I will teach you how to use the DiskGenius partition tool to align 4K. It is recommended to choose mbr as the partition type, because this installation system is easier. Then select 3 partitions and let’s take a look at the specific operation process. Detailed steps for 4K alignment of the hard drive using the DiskGenius partition tool: 1. Insert the solid state drive into another computer, open the software in Figure 1, you can download it if it is not available, and then click on your solid state drive. It's just the gray one. New hard drives are gray and have no partitions. Then click on this quick partition. 2. It is recommended to choose mbr as the partition type, because it is easier to install the system. Then select

Fix AHCI Port 0 Device Error on Windows Computer Fix AHCI Port 0 Device Error on Windows Computer Feb 19, 2024 pm 12:45 PM

If you encounter an AHCI port 0 device error every time you start your computer, you need to follow the methods provided in this article to solve the problem. What is AHCI port 0 device error? AHCI device errors are reported by the BIOS. SMART has indicated that the hard drive on port 0 is faulty and may not be accessible. The hard drive may have problems at any time. If it is a desktop computer, it is recommended to try changing the hard drive connection port. If the problem persists, it may be a problem with the hard drive itself. You can run a disk check tool, disable the failed hard drive and check the ports to resolve this issue. Fixing AHCI Port 0 Device Errors on Windows Computers Typically, AHCI Port0 device errors do not originate from operating system issues, but rather from the hard drive failing on port 0.

How to change the hard disk icon in win7 system How to change the hard disk icon in win7 system Jul 07, 2023 pm 11:43 PM

Have you seen enough hard disk partition icons in Windows 7 system? Today we will try to DIY a hard disk icon that you like. The following are detailed steps, I hope it will be helpful to everyone. First, you need to prepare a hard drive or your favorite icon file. The ico format icon is used here. 1. Open the disk you want to modify the hard disk partition icon, and then put the ico file into the root directory. I modify the D drive here. 2. Right-click in the root directory of drive D, create a blank text named autorun, and change its extension txt to inf. 3. Open the file, enter the following content and save: [autorun]icon=favicon.ico. 4. After restarting the computer normally, the D drive

See all articles