idthief.js - statData faker - Fake all character data

Posts 1–9 of 9 · Page 1 of 1
idthief.js - statData faker - Fake all character data
Identity Thief a.k.a. statData changer - noob note: this is just modifying character stuff clientsided (only you can see it)
-lets you change everything about your character that you receive
-lets you change everything about other players on a per name basis

This lets you record and take screenshot "evidence" of people hacking, so if someone pisses you off, you get a few of your friends, customize this script to look exactly like them (and have your friends customize your name so you look like the other player), and you all record you hacking and noclipping and shit like that, and then report the person for hacking.

This is all client sided which is why you need other people with the script also (but modified).

I intend to show how easily video evidence can be faked, in hopes that it this invalidates all video evidence (ie, making kabam's job harder).

This will require you to modify the script a lot, none of it has client commands so you actually have to know basic text editing.

On the line that has "else if", that tells you what statdata you are editing, and on the next line, it shows the actual value, so you will need to change the second line to have the intended in game effect.
example:
else if (statData.id == 26) //vitality
statData.intValue = 42;

That changes your vitality to 42.

To get dye colors, open up a decompressed client in a text editor (use swfdecompress in rabcdasm, or use bin editing if you want, whatever), search for the dye name, and search for this:
<Tex1>0xa00002d</Tex1>
That hex value is the dye value.

Note that changing your name via this method only changes the name you see when you are trading someone, to change it on your menu screen and in game above your inv, you have to memory edit with cheat engine or a hex editor (hxd can open ram, and find/replace). If you want to change a name, your name must be longer than or equal to the length of the name you want to change it to (you can't do larger). Here's how:

To change your name, open a fresh client, and open cheat engine, and target the rotmg process. Change value type to "string", and enter your current name in the text field (case sensitive), and do first scan. Now select every address (click one and ctrl a), then click the arrow to bring them to the value table. Then select them all in the lower part, and press enter, and enter your desired name.
Instead of cheat engine, you can use hxd, and do "open ram" and pick the rotmg process, then simply do a find and replace and replace your name with the desired name. Both work.

Then in rotmg click play, and you should see the name changed.

Here is the script. This should work assuming nothing major changed from 5 months ago, when I last used it.
Code:
/* idthief.js by 059

CREATE_SUCCESS
	int objectId
	int charId

UPDATE
	Tile[] tiles
	Entity[] newObjs
	int[] drops

NEW_TICK
	int tickId
	int tickTime
	Status[] statuses

StatData
	int obf0
	int intValue
	string obf2
	
Status
	int objectId
	Location pos
	StatData[] data
*/
var ID_CREATE_SUCCESS = $.findPacketId("CREATE_SUCCESS");
var ID_NEW_TICK = $.findPacketId("NEW_TICK");
var ID_USEITEM = $.findPacketId("USEITEM");
var ID_UPDATE = $.findPacketId("UPDATE");
var ID_TEXT = $.findPacketId("TEXT");
var playerId = -1;
var modify = true;

function onServerPacket(event) {
	var packet = event.getPacket();
	if (packet.id() == ID_CREATE_SUCCESS) {
		playerId = packet.objectId;
	}
	if (modify) {
		if (packet.id() == ID_UPDATE) {
			for (var i = 0; i < packet.newObjs.length; i++) {
				var objectData = packet.newObjs[i];
				/*for (var j = 0; j < packet.newObjs.length; j++) //pet replacing
			if (packet.newObjs[j].objectType == 32601) //snail
				packet.newObjs[j].objectType = 32627;*/ //new pet id (any object), do the following for a random pet: 1850+Math.floor(Math.random()*6);
				for (var j = 0; j < objectData.status.data.length; j++) {
					if (objectData.status.objectId === playerId) {
						var statData = objectData.status.data[j];
						if (statData.id == 0) //max health (after bonus calc)
							statData.intValue = 630;
						else if (statData.id == 1) //current health, change in new_tick also otherwise it will revert to your real current
							statData.intValue = 630;
						else if (statData.id == 2) //size
							statData.intValue = 100;
						else if (statData.id == 3) //max mana
							statData.intValue = 389;
						else if (statData.id == 4) //current mana, change in new_tick also otherwise it will revert to your real current
							statData.intValue = 389;
						else if (statData.id == 5) //xp goal, current xp is in new_tick
							statData.intValue = -1;
						else if (statData.id == 7) //level
							statData.intValue = 20;
						else if (statData.id == 8) //weapon
							statData.intValue = 0xc01;
						else if (statData.id == 9) //ability
							statData.intValue = 0x911;
						else if (statData.id == 10) //armor
							statData.intValue = 0x9c4;
						else if (statData.id == 11) //ring
							statData.intValue = 0xbad;
						/*else if (statData.id == 12) //inv1
							statData.intValue = 0x9d2;
						else if (statData.id == 13) //inv2
							statData.intValue = 0x9ce;
						else if (statData.id == 14) //inv3
							statData.intValue = 0x912;
						else if (statData.id == 15) //inv4
							statData.intValue = 0x0733;
						else if (statData.id == 16) //inv5
							statData.intValue = 0x9d3;
						else if (statData.id == 17) //inv6
							statData.intValue = 0x913;
						else if (statData.id == 18) //inv7
							statData.intValue = 0xcc1;
						else if (statData.id == 19) //inv8
							statData.intValue = 0x2294;*/
						else if (statData.id == 20) //attack, all these are after bonus calculation
							statData.intValue = 85;
						else if (statData.id == 21) //defense
							statData.intValue = 44;
						else if (statData.id == 22) //speed, you get dced if it's greater than your normal
							statData.intValue = 50;
						else if (statData.id == 26) //vitality
							statData.intValue = 42;
						else if (statData.id == 27) //wisdom
							statData.intValue = 68;
						else if (statData.id == 28) //dexterity
							statData.intValue = 75;
						else if (statData.id == 30) //stars
							statData.intValue = 70;
						else if (statData.id == 31) //name, only shows up in trades
							statData.stringValue = "Deathslayier";
						else if (statData.id == 32) //main dye (use the number from the Tex1 tag in the xml, <Tex1>0xa000019</Tex1>
							statData.intValue = 0x01FFD700;
						else if (statData.id == 33) //accessory dye
							statData.intValue = 0x01FFD700;
						else if (statData.id == 35) //gold
							statData.intValue = 2600;
						else if (statData.id == 39) //account fame
							statData.intValue = 41166;
						else if (statData.id == 46) //health bonus
							statData.intValue = 60;
						else if (statData.id == 47) //mana bonus
							statData.intValue = 115;
						else if (statData.id == 48) //attack bonus
							statData.intValue = 10;
						else if (statData.id == 48) //def bonus
							statData.intValue = 19;
						else if (statData.id == 50) //spd bonus
							statData.intValue = 0;
						else if (statData.id == 51) //vit bonus
							statData.intValue = 2;
						else if (statData.id == 52) //wis bonus
							statData.intValue = 8;
						else if (statData.id == 53) //dex bonus
							statData.intValue = 0;
						else if (statData.id == 59) //glow
							statData.intValue = 0;
						else if (statData.id == 62) //guild
							statData.stringValue = "the impresive fihgters";
						else if (statData.id == 57) //char fame
							statData.intValue = 1545;
						else if (statData.id == 58) //char fame goal
							statData.intValue = -1;
						else if (statData.id == 63) //guild rank, 0 initiate, 10 member, 20 officer, 30 leader, 40 founder
							statData.intValue = 30;
						/*else if (statData.id == 71) //backpack1
							statData.intValue = 0xc01;
						else if (statData.id == 72) //backpack2
							statData.intValue = 0xba9;
						else if (statData.id == 73) //backpack3
							statData.intValue = 0xba9;
						else if (statData.id == 74) //backpack4
							statData.intValue = 0xba9;
						else if (statData.id == 75) //backpack5
							statData.intValue = 0xba9;
						else if (statData.id == 76) //backpack6
							statData.intValue = 0xba9;
						else if (statData.id == 77) //backpack7
							statData.intValue = 0xba9;
						else if (statData.id == 78) //backpack8
							statData.intValue = 0xba9;
						else if (statData.id == 79) //has backpack
							statData.intValue = 1;*/
						else if (statData.id == 80) //skin (use the number from the Activate tag in the xml, <Activate skinType="914">UnlockSkin</Activate>
							statData.intValue = 872;
						//this stuff is for pets, I haven't bothered changing it but it should let you change what your pet looks like in the pet tab only
						/*PET_ID = 81
						PET_SKIN = 82  # Pascal string
						PET_TYPE = 83
						PET_RARITY = 84
						PET_MAX_LEVEL = 85
						PET_UNK1 = 86 #Reserved for a pet feature, but not yet implemented (13.2)
						FOOD_SPENT_ON_SKILL1 = 87
						FOOD_SPENT_ON_SKILL2 = 88
						FOOD_SPENT_ON_SKILL3 = 89
						PET_SKILL1_LEVEL = 90
						PET_SKILL2_LEVEL = 91
						PET_SKILL3_LEVEL = 92
						PET_SKILL1_TYPE = 93
						PET_SKILL2_TYPE = 94
						PET_SKILL3_TPYE = 95*/

						//uncomment the following lines for debugging:
						//$.echo("j = " + j + ", id = "+statData.id);
						//$.echo("int = "+statData.intValue);
						//$.echo("str = "+statData.stringValue);
						//$.echo("newObjs["+i+"].status.data["+j+"].stringValue = "+statData.stringValue);

					} else { //OTHER PLAYER MODS - change this stuff to change other players
						if (statData.id == 31) {
							if (statData.stringValue.equals("old name")) { //CHANGE THIS TO THE VICTIM'S NAME
								$.echo("Found other player, replacing");
								statData.stringValue = "new name"; //CHANGE THIS TO THE DESIRED NAME

								for (var j = 0; j < objectData.status.data.length; j++) {
									var statData = objectData.status.data[j];
									if (statData.id == 0) //max health (after bonus calc)
										statData.intValue = 630;
									else if (statData.id == 1) //current health, change in new_tick also otherwise it will revert to your real current
										statData.intValue = 630;
									else if (statData.id == 2) //size
										statData.intValue = 100;
									else if (statData.id == 3) //max mana
										statData.intValue = 389;
									else if (statData.id == 4) //current mana, change in new_tick also otherwise it will revert to your real current
										statData.intValue = 389;
									else if (statData.id == 5) //xp goal, current xp is in new_tick
										statData.intValue = -1;
									else if (statData.id == 7) //level
										statData.intValue = 20;
									else if (statData.id == 8) //weapon
										statData.intValue = 0xc01;
									else if (statData.id == 9) //ability
										statData.intValue = 0x911;
									else if (statData.id == 10) //armor
										statData.intValue = 0x9c4;
									else if (statData.id == 11) //ring
										statData.intValue = 0xbad;
									/*else if (statData.id == 12) //inv1
										statData.intValue = 0x9d2;
									else if (statData.id == 13) //inv2
										statData.intValue = 0x9ce;
									else if (statData.id == 14) //inv3
										statData.intValue = 0x912;
									else if (statData.id == 15) //inv4
										statData.intValue = 0x0733;
									else if (statData.id == 16) //inv5
										statData.intValue = 0x9d3;
									else if (statData.id == 17) //inv6
										statData.intValue = 0x913;
									else if (statData.id == 18) //inv7
										statData.intValue = 0xcc1;
									else if (statData.id == 19) //inv8
										statData.intValue = 0x2294;*/
									else if (statData.id == 20) //attack, all these are after bonus calculation
										statData.intValue = 85;
									else if (statData.id == 21) //defense
										statData.intValue = 44;
									else if (statData.id == 22) //speed, you get dced if it's greater than your normal
										statData.intValue = 50;
									else if (statData.id == 26) //vitality
										statData.intValue = 42;
									else if (statData.id == 27) //wisdom
										statData.intValue = 68;
									else if (statData.id == 28) //dexterity
										statData.intValue = 75;
									else if (statData.id == 30) //stars
										statData.intValue = 70;
									else if (statData.id == 31) //name, only shows up in trades
										statData.stringValue = "Deathslayier";
									else if (statData.id == 32) //main dye (use the number from the Tex1 tag in the xml, <Tex1>0xa000019</Tex1>
										statData.intValue = 0x01FFD700;
									else if (statData.id == 33) //accessory dye
										statData.intValue = 0x01FFD700;
									else if (statData.id == 35) //gold
										statData.intValue = 2600;
									else if (statData.id == 39) //account fame
										statData.intValue = 41166;
									else if (statData.id == 46) //health bonus
										statData.intValue = 60;
									else if (statData.id == 47) //mana bonus
										statData.intValue = 115;
									else if (statData.id == 48) //attack bonus
										statData.intValue = 10;
									else if (statData.id == 48) //def bonus
										statData.intValue = 19;
									else if (statData.id == 50) //spd bonus
										statData.intValue = 0;
									else if (statData.id == 51) //vit bonus
										statData.intValue = 2;
									else if (statData.id == 52) //wis bonus
										statData.intValue = 8;
									else if (statData.id == 53) //dex bonus
										statData.intValue = 0;
									else if (statData.id == 59) //glow
										statData.intValue = 0;
									else if (statData.id == 62) //guild
										statData.stringValue = "the impresive fihgters";
									else if (statData.id == 57) //char fame
										statData.intValue = 1545;
									else if (statData.id == 58) //char fame goal
										statData.intValue = -1;
									else if (statData.id == 63) //guild rank, 0 initiate, 10 member, 20 officer, 30 leader, 40 founder
										statData.intValue = 30;
									/*else if (statData.id == 71) //backpack1
										statData.intValue = 0xc01;
									else if (statData.id == 72) //backpack2
										statData.intValue = 0xba9;
									else if (statData.id == 73) //backpack3
										statData.intValue = 0xba9;
									else if (statData.id == 74) //backpack4
										statData.intValue = 0xba9;
									else if (statData.id == 75) //backpack5
										statData.intValue = 0xba9;
									else if (statData.id == 76) //backpack6
										statData.intValue = 0xba9;
									else if (statData.id == 77) //backpack7
										statData.intValue = 0xba9;
									else if (statData.id == 78) //backpack8
										statData.intValue = 0xba9;
									else if (statData.id == 79) //has backpack
										statData.intValue = 1;*/
									else if (statData.id == 80) //skin (use the number from the Activate tag in the xml, <Activate skinType="914">UnlockSkin</Activate>
										statData.intValue = 872;
								}
							}
						}
					}
				}
			}
			if (packet.id() == ID_NEW_TICK) {
				for (var x = 0; x < packet.statuses.length; x++) {
					if (packet.statuses[x].objectId == playerId) {
						for (var y = 0; y < packet.statuses[x].data.length; y++) {
							var data = packet.statuses[x].data[y];
							if (data.id == 1) //current health
								data.intValue = 630;
							else if (data.id == 4) //current mana
								data.intValue = 389;
							else if (data.id == 6) //xp
								data.intValue = 2680169;
							//uncomment these three lines for debugging:
							//$.echo("NewTick "+statuses[x]+"."+data[y]+".id = "+packet.statuses[x].data[y].id);
							//$.echo("NewTick "+statuses[x]+"."+data[y]+".intValue = "+packet.statuses[x].data[y].intValue);
							//$.echo("NewTick "+statuses[x]+"."+data[y]+".stringValue = "+packet.statuses[x].data[y].stringValue);
						}
					}
				}
			}
			if (packet.id() == ID_TEXT) {
				if (packet.name.equals("Oshyu")) {
					packet.name = "New Name - if you\'re reading this in game, ya fucked up";
					packet.numStars = 70;
				}
			}
		}
	}
}
Effectiveness of this method greatly depends on what kind of server-side logs Kabam has and/or if investigating GM has access to those. It is quite possible that while you try to set up another person - you'll be the one to get banned in the end.
Quote Originally Posted by theboo View Post
Effectiveness of this method greatly depends on what kind of server-side logs Kabam has and/or if investigating GM has access to those. It is quite possible that while you try to set up another person - you'll be the one to get banned in the end.
Do you seriously believe kabam has logs when they rely nearly 100% on the community to do the work for them?
Quote Originally Posted by 059 View Post
Do you seriously believe kabam has logs when they rely nearly 100% on the community to do the work for them?
It is true that they dont take initiative to actively search and get rid of "ToS violators". But whenever you send a ticket with proof of such violation they usually respond "we will investigate the player involved and take any appropriate action necessary... please note that we do adhere to a strict Privacy Policy that prohibits us from sharing the details of our investigation or any other players". (yeah, i do report players who dont know meaning of words "moderation" and "discreetness" when using cheats/hacks)

So you never know what they have and what they dont. The fact remains that players get banned on a daily basis.
Quote Originally Posted by theboo View Post
(yeah, i do report players who dont know meaning of words "moderation" and "discreetness" when using cheats/hacks)
.
sooooooooooooooooooooooooooooooooooooooooooooooooo oooooooooo,
Quote Originally Posted by marceliino View Post
sooooooooooooooooooooooooooooooooooooooooooooooooo oooooooooo,
pff memecenter
le 9gag army represent xddddddddddddddddddddddddddddd
They cant log everything , and they probably have to delete some logs after a period. If you want to frame someone, better wait for a delay between the time when you record the video and the time you submit it to kabam.

Franckly, even with this, you must be careful so they cant find its a fake. I bet most of people , including myself, will make a mistake or two if they try to frame someone with this :/

Nice script indeed
Thats true that BARm was the first to know but not the only to know heheeeheh. and also people who report hackers are gay it does not effect them, they only do it because their jelly that their mommies wont let them do it whaa whaa cry me a river
Quote Originally Posted by mronchi01 View Post
Thats true that BARm was the first to know but not the only to know heheeeheh. and also people who report hackers are gay it does not effect them, they only do it because their jelly that their mommies wont let them do it whaa whaa cry me a river
I just facepalm at people's stupidity when they reconnect/noclip in front of other players. I simply want dumb (hacking) people out of the game.

Also are you salty bro?
Posts 1–9 of 9 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?