Pour l'anti DeAMX je trouve ça facilement contournable, la première idée plus vicieuse qui me vient dans la tête serait de voir si l'IP du serveur est bien celle où le script est censé être, si ce n'est pas le cas on fait crasher le serveur, par exemple en essayant d'afficher une chaîne vide.ou encore comme le suggérait Y_LESS, tu met une boucle infinie dans le cas où ce n'est pas le bon serveur. En plus ca use plein de CPU^^
Moi je pense que ce genre de logiciel ne devrait pas être donné comme sa .. x)
Code: [Sélectionner] #include <a_samp> |
Code: [Sélectionner] #include <a_samp> |
Code: [Sélectionner] #include <a_samp> |
#include <a_samp>
main ()
{
new Float:Drunk3;
Drunk3 = 61513/6060;
printf ("Drunk3 = %.2f", Drunk3);
Drunk3 = 61513/6060.0;
printf ("Drunk3 = %.2f", Drunk3);
}
public OnGameModeInit ()
{
return 1;
}#include "test.pwn"#include <a_samp>
#include <core>
#include <float>
function8(arg0, Float:arg1)
{
return arg0 / arg1;
}
main()
{
new var0 = 0;
var0 = 1092616192;
printf("Drunk3 = %.2f", var0);
var0 = function8(61513, 6060.0);
printf("Drunk3 = %.2f", var0);
return 0;
}
public OnGameModeInit()
{
return 1;
}On retrouve presque le fichier test.pwn à part quelques calculs qui ont certainement été faits au moment de la compilation (var0=1092616192). /* Ces deux lignes évitent l'utilisation de DeAmx (elles font planter le décompilateur) */
new a[][9] = {"G", "G", "F"};
#pragma unused anon sinon il decompilerais aussi les include a_samp est autre utiliser il n'est pas capable de retrenscrire une INC :)
desoler pour les fautes :s
Ne pas se faire d'ennemis :pMalheureusement, la jalousie peut conduire certains à vouloir faire du mal à des gens qui ne leur ont rien fait.
EDIT2:Oui, c'est très bizarre, il remplace même ce calcul par un appel à une fonction (qui ne fait que le calcul d'ailleurs, d'où l'inutilité de la chose).
Syg,
je croyais que les constantes étaient calculées au moment de la compilation,
donc ton 61513/6060.0 aurait été transformé à 10,150660066006600....
mais d'après le résultat du DeAmx, ce genre d'expression est calculé à chaque exécution du code...j'imagine que certains cas sont calculés et d'autres non mais lesquels? je vais essayer de faire quelques tests...
++Sim++
new CName[128];new glob372D8;
Par contre, je vous conseille vivement de prendre un vrai gamemode (de plusieurs milliers de lignes), de le compiler, de décompiler le fichier amx et de jeter un oeil dans le code produit par DeAmx. Je souhaite beaucoup de patience à celui qui réussi à faire quelque chose de ce résultat de décompilation, surtout si il n'a aucune idée de ce que contient le gamemode d'origine.
Tout ça pour dire que si quelqu'un vous pique votre .amx, il faut vraiment qu'il vous en veuille beaucoup pour perdre autant de temps à vouloir remettre d'aplomb un code décompilé.
Mais on est jamais trop prudent.