Private server equipment damage hack
I have no idea if this is public knowledge or if it has been released prior to me making this thread, but I'm going to describe a way for you to do a damage hack and go undetected - due to the way the 'anti cheat' system works for OdinMS servers (It calculates what your damage output should be - or at least in a proximity of what it should be depending on your characters makeup (stats, equipment, etc))). This has been working since I did tests with it when I was running LocalMS with my old team and I discovered it.
Step 1. Find yourself a working packet editor for whichever version the private server is running.
Step 2. Record a packet of you equipping an item (for my example i'll say i'm equipping my starting axe). The packet should look similiar to the one below
Code:
42 00 xx xx B4 00 01 01 00 F5 FF FF FF
The 8th and 10th bytes are what we are looking for. The 8th byte represents the slot of inventory that the piece of equipment you're equipping is coming from, and the 10th byte is the slot it's being inserted into.
Since you've read this far you're probably wondering if it's possible to force an equipment you shouldn't be able to equip into your equipment - yes, it works and other players will see you equipped with it but you will not benefit from the stats whatsoever.
Now, here's where the fun part comes in. For whatever reason, there are countless equipment slots that the server recognizes that the client, obviously, doesn't show. Here are the bytes you are going to want to force equipment into. The bytes E3 through EB are all blank place holder equipment slots that WILL affect your stats if you place a piece of equipment in it. You can force equipment into say slot E2 as well, but it will not affect your stats whatsoever, and anything before E2 won't either. You can also place equipments past EB, but it WILL show up on your inventory screen so if a GM decided to somehow to an equipment check on you, you'd be ****ed because obviously you shouldn't have your Timeless claymore in your ****ing ring slot.
So now that you've read that wall of text I prepared for you guys, i'll show you an example of what i'd do to start off.
Step 1. Place any weapon in the first slot of your inventory (For this example i'll use Timeless claymore).
Step 2. Inject a packet similiar to this
Code:
42 00 95 51 B4 00 01 01 00 EB FF FF FF
Step 3. Watch the weapon dissapear into your invisible equipment spot and your stats go up!
As you can see with the image below, the equipment and stats I have should not in no way shape or form equal that damage output.
http://i11.photobucket.com/albums/a1.../rifkcajes.jpg
And as last side note, now that this is out it should be relatively easy to fix with a few server modifications, but i'm surprised people have been so oblivious up to this point.
- Mooblar
Re: Private server equipment damage hack
this will be useless soon as ppl will patch this xD
Re: Private server equipment damage hack
this will be useless soon as ppl will patch this xD
Re: Private server equipment damage hack
Quote:
Originally Posted by
minikevin12
this will be useless soon as ppl will patch this xD
well obviously that was the whole point of me putting this out there.
sorry but the image below is relevant to my thoughts on your post
http://img.youtube.com/vi/eZZrAKQ70iY/0.jpg
Re: Private server equipment damage hack
Well I guess I'll write a quickie patch for it (Wrote this with V55, so you might have to modify it slightly)
MapleItemInformationProvider.java
You should already have getEquipStats, but make sure to add the line regarding "isCashItem."
PHP Code:
protected Map<String, Integer> getEquipStats(int itemId) {
if (equipStatsCache.containsKey(itemId)) {
return equipStatsCache.get(itemId);
}
Map<String, Integer> ret = new LinkedHashMap<String, Integer>();
MapleData item = getItemData(itemId);
if (item == null) {
return null;
}
MapleData info = item.getChildByPath("info");
if (info == null) {
return null;
}
for (MapleData data : info.getChildren()) {
if (data.getName().startsWith("inc")) {
ret.put(data.getName().substring(3), MapleDataTool.getIntConvert(data));
}
}
ret.put("tuc", MapleDataTool.getInt("tuc", info, 0));
ret.put("reqLevel", MapleDataTool.getInt("reqLevel", info, 0));
ret.put("cursed", MapleDataTool.getInt("cursed", info, 0));
ret.put("success", MapleDataTool.getInt("success", info, 0));
ret.put("isCashItem", MapleDataTool.getInt("cash", info, 0));
equipStatsCache.put(itemId, ret);
return ret;
}
SEE http://forum.ragezone.com/f427/priva...7/#post5576940 for isProperSlot().
MapleInventoryManipulator: Equip(MapleClient ,byte src, byte dst)
Add:
PHP Code:
if (!ii.isProperSlot(source.getItemId(), dst)) {
return;
}
BEFORE:
PHP Code:
if (dst == -6) {
Note:
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
Enjoy?
Re: Private server equipment damage hack
Edit: Sorry.. Double Post, I blame the lag >_<;;
Re: Private server equipment damage hack
Re: Private server equipment damage hack
Re: Private server equipment damage hack
@emily bad method. . . . shouldnt do this manually
Posted via Mobile Device
Re: Private server equipment damage hack
if you limit dmg on server side, this will be only visual and useless, I like to see how they hit with 2bil dmg, and mobs don't die.
Re: Private server equipment damage hack
Quote:
Originally Posted by
LightPepsi
@emily bad method. . . . shouldnt do this manually
Posted via Mobile Device
I wouldn't have done it manually, but I couldn't find where in the WZ files the proper slot was supposed to be...
Re: Private server equipment damage hack
Quote:
Originally Posted by
minikevin12
this will be useless soon as ppl will patch this xD
he released it so we can patch it.
Re: Private server equipment damage hack
PHP Code:
protected Map<String, Integer> getEquipStats(int itemId) {
if (equipStatsCache.containsKey(itemId)) {
return equipStatsCache.get(itemId);
}
Map<String, Integer> ret = new LinkedHashMap<String, Integer>();
MapleData item = getItemData(itemId);
if (item == null) {
return null;
}
MapleData info = item.getChildByPath("info");
if (info == null) {
return null;
}
for (MapleData data : info.getChildren()) {
if (data.getName().startsWith("inc")) {
ret.put(data.getName().substring(3), MapleDataTool.getIntConvert(data));
}
}
ret.put("tuc", MapleDataTool.getInt("tuc", info, 0));
ret.put("reqLevel", MapleDataTool.getInt("reqLevel", info, 0));
ret.put("cursed", MapleDataTool.getInt("cursed", info, 0));
ret.put("success", MapleDataTool.getInt("success", info, 0));
ret.put("isCashItem", MapleDataTool.getInt("cash", info, 0));
equipStatsCache.put(itemId, ret);
return ret;
}
public boolean isProperSlot(int itemId, byte slot) {
byte comp = 0;
if (getEquipStats(itemId).get("isCashItem") == 1)
comp -= 100;
if (itemId >= 1010000 && itemId < 1040000 || itemId >= 1122000 && itemId < 1123000) {
comp -= 2;
} else if (itemId >= 1000000 && itemId < 1010000) {
comp -= 1;
} else if (itemId >= 1102000 && itemId < 1103000) {
comp -= 9;
} else if (itemId >= 1040000 && itemId < 1050000) {
comp -= 5;
} else if (itemId >= 1080000 && itemId < 1090000) {
comp -= 8;
} else if (itemId >= 1050000 && itemId < 1060000) {
comp -= 5;
} else if (itemId >= 1060000 && itemId < 1070000) {
comp -= 6;
} else if (itemId >= 1802000 && itemId < 1810000) {
if (slot == -114 || (slot >= -128 && slot <= -122))
return true;
else
return false;
} else if (itemId >= 1112000 && itemId < 1120000) {
comp -= 12;
if (slot <= comp && slot >= comp - 4)
return true;
else
return false;
} else if (itemId >= 1092000 && itemId < 1100000) {
comp -= 10;
} else if (itemId >= 1070000 && itemId < 1080000) {
comp -= 7;
} else if (itemId >= 1900000 && itemId < 2000000) {
comp -= 18;
if (slot <= comp && slot >= comp - 1)
return true;
else
return false;
} else if (itemId >= 1300000 && itemId < 1800000) {
comp -= 11;
}
return slot == comp;
}
see is on the odinms??:ott1::ott1::ott1:
Re: Private server equipment damage hack
Quote:
Originally Posted by
seryi
if you limit dmg on server side, this will be only visual and useless, I like to see how they hit with 2bil dmg, and mobs don't die.
obviously, but you have to realize for a modern rate server with a more legit style of play, this type of hack is the perfect thing to level up with and go un noticed, you can lash out damage that should be impossible for your level, therefore making the whole leveling process cake.
Re: Private server equipment damage hack
BugFix: accesories + necklaces:
PHP Code:
public boolean isProperSlot(int itemId, byte slot) {
byte comp = 0;
if (getEquipStats(itemId).get("isCashItem") == 1)
comp -= 100;
if (itemId >= 1010000 && itemId < 1020000) {
comp -= 2;
} else if (itemId >= 1020000 && itemId < 1030000) {
comp -= 3;
} else if (itemId >= 1030000 && itemId < 1040000) {
comp -= 4;
} else if (itemId >= 1122000 && itemId < 1123000) {
comp -= 17;
} else if (itemId >= 1000000 && itemId < 1010000) {
comp -= 1;
} else if (itemId >= 1102000 && itemId < 1103000) {
comp -= 9;
} else if (itemId >= 1040000 && itemId < 1050000) {
comp -= 5;
} else if (itemId >= 1080000 && itemId < 1090000) {
comp -= 8;
} else if (itemId >= 1050000 && itemId < 1060000) {
comp -= 5;
} else if (itemId >= 1060000 && itemId < 1070000) {
comp -= 6;
} else if (itemId >= 1802000 && itemId < 1840000) {
if (slot == -114 || (slot >= -128 && slot <= -122))
return true;
else
return false;
} else if (itemId >= 1112000 && itemId < 1120000) {
comp -= 12;
if (slot <= comp && slot >= comp - 4)
return true;
else
return false;
} else if (itemId >= 1092000 && itemId < 1100000) {
comp -= 10;
} else if (itemId >= 1070000 && itemId < 1080000) {
comp -= 7;
} else if (itemId >= 1900000 && itemId < 2000000) {
comp -= 18;
if (slot <= comp && slot >= comp - 1)
return true;
else
return false;
} else if (itemId >= 1300000 && itemId < 1800000) {
comp -= 11;
}
return slot == comp;
}
Btw, Belts are 1132XXX, Medals are 1142XXX for those of you that want to update this for V75.