Welcome!
Welcome to the Warden Anti-Cheat newsletter. What is this? Well It's simple this is a newsletter meant to fit in with Warden, which if you haven't seen you can find it [here.][1] One of the goals of Warden is to make the knowledge of how anticheats work more wide-spread knowledge. So simple It's common knowledge. So not only will this newsletter provide updates on Warden, but it will also provide you info on how some checks work :smile:.
Todayās Topics
- New Check In Warden
- Recruitment
- Questions
New Check In Warden
There are many new checks in Warden! However right now Iāll only cover one to start us off easy .
XCarry Check
Thatās right an XCarry check. So first off what is XCarry? XCarry (also known as MoreInventory) is a way of carrying more items than is normally allowed. This has been a hack since 2012, and been no successful patches according to the actual hacked client community (although they do admit to a couple of failed ones). Basically all that they do is never send the CloseInventory packet. This allows them to close their inventory without the server recognizing it. Allowing them to move around while the server thinks they have their inventory open. This provides the interesting side effect that they can carry extra items in the crafting slots of your inventory. Normally those would get dropped, however since they never actually āCloseā their inventory according to the server it allows them to hold items there while moving.
So how do we combat this? This is actually really simple. When they open their inventory we add them to a list of people who have their inventory open. Then we listen for when their moving. If theyāre moving while their in that list then we know for sure that they are using XCarry.
private List<UUID> map;
@Override
public void onPacketReceiving(PacketEvent event) {
PacketType pt = event.getPacketType();
//A player's inventory will actually close if he gets hit before this event is fired off.
//So no need to check for hits.
if (pt == PacketType.Play.Client.POSITION) {
Player p = event.getPlayer();
if (map.contains(p.getUniqueId())) {
Bukkit.getServer().getPluginManager().callEvent(new CheckFailedEvent(
p.getUniqueId(), getRaiseLevel(), getName()
));
}
} else if (pt == PacketType.Play.Client.LOOK) {
Player p = event.getPlayer();
if (map.contains(p.getUniqueId())) {
Bukkit.getServer().getPluginManager().callEvent(new CheckFailedEvent(
p.getUniqueId(), getRaiseLevel(), getName()
));
}
} else if (pt == PacketType.Play.Client.ENTITY_ACTION) {
Player p = event.getPlayer();
PacketContainer pc = event.getPacket();
//For opening your own inventory their is actually know packet. It just sends an actionID of 6. So we have to extract that from the packet.
int actionID = pc.getIntegers().read(2);
if (actionID == 6) {
map.add(p.getUniqueId());
}
} else if (pt == PacketType.Play.Client.CLOSE_WINDOW) {
Player p = event.getPlayer();
if (map.contains(p.getUniqueId())) {
map.remove(p.getUniqueId());
}
}
}
Boom thatās it! A super super simple check! Yet somehow Warden is the first one to actually. You know. Patch this vulnerability.
### :busts_in_silhouette: Recruitment :busts_in_silhouette: ###
Thatās right! I need help with this project. After all anticheats developed by one person are usually not as good. Today I have several positions that are open! That I will definitely need help with.
How to Apply
After you read available positions simply go, and submit an application here. When recruitment is up, I shall message you the results!
Recruitment Deadline: Before March 30th, 2015
Recruitment Results: March 30th, 2015
###Positions you can apply for:###
Community Manager:
The community manager will be responsible for keeping in touch with the multiple communities that Warden attempts to hit. They should plan this newsletter (some of it), updates to the community about certain things, and be a figure that helps Warden get new users, as well as keep old ones happy. Without the communities Warden would be nothing, and it is this persons job to make sure the communities are happy. Being the people person, and the buffer between the developer(s), and the general populous.
Amount needed: 1
Developer:
This is exactly what it sounds like. Becoming a full on developer for Warden. Although anyone can add to warden you should add on a regular basis, and be in charge of the structure of warden changes. You will also make sure only acceptable PRās get accepted. Even if you donāt know too much about how cheating goes on, or how to patch it. That is okay. Warden has many other components too. Such as the email component, bug fixing, custom account management, etc. These are all things experienced Java developers should have no problem with.
Amount needed: 2
Those are all available positions right now!
Questions
Do you have any questions for me? If so please donāt hesitate to ask! Iād love to hear your questions!