GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Showroom SA:MP => Discussion démarrée par: Ssk le 22 Mai 2011, 16:44:49

Titre: [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 22 Mai 2011, 16:44:49
Bonjour,

Je vous présente un plugin que je viens de concevoir, celui ci permet d'éditer la mémoire du serveur directement depuis son script, c'est assez utile à qui sait s'en servir.

Fonctionnalités

Avec ce plugin vous pouvez faire énormément de chose, mais pour ça il faut avoir un bon niveau en informatique, savoir gérer la mémoire, connaitre exactement la taille des variables, savoir faire du reverse engineering, mais ce n'est pas obligatoire.

Vous pouvez par exemple manipuler directement certaines variables qu'on ne peut pas manipuler par le scripting, vous pouvez aussi patcher le serveur sa-mp, pour par exemple pouvoir augmenter le nombre de slots ( ça sert strictement à rien ), et beaucoup d'autre choses, mais je n'ai pas d'idée au moment même où j'écris :p

Fonctions



Téléchargements

Contient le code source, le plugin sous forme de dll, l'include pour déclarer les fonctions, et un exemple.
http://solidfiles.com/d/e5efd/ (http://solidfiles.com/d/e5efd/)
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Gilux le 22 Mai 2011, 17:00:00
J'ai rien compris mais bon... GG ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 22 Mai 2011, 19:01:15
XD

Je me disais aussi, personne ne saurai comment l'utiliser, sauf peut être Syg, et à la limite Sim :s
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Gilux le 22 Mai 2011, 19:02:06
Comment tu as appris à faire ça ? C'est du C++ ?
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 22 Mai 2011, 19:04:01
bah comment j'ai appris ça, bah au fil du temps sur le tas, et oui c'est en C++ ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: S!m le 22 Mai 2011, 19:19:43
Salut,

par contre, je ne suis pas sur de la réaction de Kyeman s'il découvre se plugin....

Beau plugin, bon travail :p

Je me rappelle encore quand tu m'as montré la première version...

++Sim++
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 22 Mai 2011, 19:21:23
Ouais j'en avais codé avec moins de fonction, il y assez longtemps, je me suis dit pourquoi ne pas le recoder pour le distribuer ^^

Sinon, j'ai bien envie de le poster sur sa-mp, mais pour faire de belle phrase en Anglais je suis pas top :p
Titre: Re : Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: R@f le 22 Mai 2011, 19:32:38
Ouais j'en avais codé avec moins de fonction, il y assez longtemps, je me suis dit pourquoi ne pas le recoder pour le distribuer ^^

Sinon, j'ai bien envie de le poster sur sa-mp, mais pour faire de belle phrase en Anglais je suis pas top :p
Je pense que si tu le postes sur le forum SA-MP tu te feras bannir...

++
R@f
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: cristab le 22 Mai 2011, 19:33:34
un conseille ne le met surtout pas sur le forum samp
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 22 Mai 2011, 19:39:20
roh ce sera pas la première fois XD

Kyeman sait que j'ai reverse complètement son SAMP 0.3cR2 server, et que j'ai le code source de SAMP 0.2x, et que je recode petit à petit son serveur, alors je pense que s'il me ban c'est un peu à ses risque et périls :p



Sinon, avec ce plugin mon ancien plugin ne sert plus, vu qu'on peut le recoder en pawn

SetPlayerAdmin( playerid )
{
if( !IsPlayerConnected( playerid ) || IsPlayerAdmin( playerid ) ) return;
new CNetGame = ReadIntMemory( CNETGAME_WIN32 );
new CPlayerPool = ReadIntMemory( CNetGame + 0x04 );
WriteIntMemory( CPlayerPool + playerid * 4 + 0x4074, 1 );
}

RemovePlayerAdmin( playerid )
{
if( !IsPlayerConnected( playerid ) || !IsPlayerAdmin( playerid ) ) return;
new CNetGame = ReadIntMemory( CNETGAME_WIN32 );
new CPlayerPool = ReadIntMemory( CNetGame + 0x04 );
WriteIntMemory( CPlayerPool + playerid * 4 + 0x4074, 0 );
}
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: cristab le 22 Mai 2011, 19:44:24
ptit delinquant va !!!! ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: MK le 22 Mai 2011, 19:59:12
wow lol l'autre doit en avoir marre de toi
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Syg le 23 Mai 2011, 00:02:06
Je ne vois pas ce qu'il y a de mal avec ce plugin.
La personne qui installe un serveur SAMP sur sa machine (ou sur un dédié) reste maître de ce que ce serveur fait.
De plus, ça ne modifie aucunement le code exécutable du serveur, ce n'est pas un patch et encore moins une version pirate du serveur SAMP.

Ce plugin ne fait aucunement de tord à la team SAMP. De toutes façons, le client SAMP fait bien pire que ça au logiciel GTA SA de Rockstar Games donc la team SAMP serait bien mal placée pour dire quoi que ce soit sur ce plugin.
D'ailleurs, ils ont eux mêmes laissé la possibilité à n'importe qui de faire des plugins.
Ce plugin n'est de plus absolument pas dangereux puisqu'il est côté serveur (contrairement aux logiciels de cheat).

Bon, maintenant, ce plugin mis entre les mains du premier venu ne conduira qu'à des plantages du serveur. Aller gratouiller dans le mémoire d'une application en cours d'exécution sans savoir ce qu'on fait ne mène pas très loin.
Le seul risque avec ce plugin c'est de ne pas savoir s'en servir et d'avoir un serveur qui plante à la moindre occasion.

Donc, ce plugin est très bien, même si son utilisation reste impossible si on ne connait pas l'organisation de la mémoire utilisée par le serveur SAMP.

@Ssk : La fonction memcpy est une fonction de la librairie standard du C, elle existe donc sous Linux. Tu peux ainsi modifier tes "horribles" fonctions f_ReadArrayMemory et f_WriteArrayMemory :).

++
Syg
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: jerem428 le 23 Mai 2011, 00:24:23
gg même si cela est un peu (beaucoup) trop compliqué.
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 23 Mai 2011, 01:57:20
Le problème n'est pas le fait que le plugin soit autorisé ou pas, mais c'est plutot la réaction de kye, qui m'a banni plusieurs fois pour rien, et pour lui reverse ses oeuvres c'est mal, la preuve le plugin CNPC  est interdit maintenant alors qu'il est super, et je sais pas si tu le sait mais il  aime tellement pas qu'on touche a ses trucs qu'il a packé samp.dll LOL

Sinon Syg, j'ai le droit de distribuer un idb??
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Syg le 23 Mai 2011, 09:44:19
Kye n''est même plus dans les crédits de SAMP ou alors il a changé de pseudo.
Leur réaction ressemble à celle de gamins qui se la jouent et qui ne supporte pas qu'on soit aussi bon, voire meilleur, qu'eux.

Sinon, qu'est ce que tu entends par idb ?

++
Syg
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: cristab le 23 Mai 2011, 09:57:30
[HS]c'est Kalcor il me semble sont pseudo [/hs]

sinon pour que le plugins soit plus utile serait mieux une liste de chose possible enfin sa macherais tout le travaille aussi
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Dark4ng3L le 23 Mai 2011, 13:20:18
GG mister sasuk' :) ca fais longtemps...
Titre: Re : Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 23 Mai 2011, 18:07:42
Kye n''est même plus dans les crédits de SAMP ou alors il a changé de pseudo.
Leur réaction ressemble à celle de gamins qui se la jouent et qui ne supporte pas qu'on soit aussi bon, voire meilleur, qu'eux.

Sinon, qu'est ce que tu entends par idb ?

++
Syg

C'est Kyeman, il est peut être gentil de nous coder un multiplayer, mais il déteste qu'on y touche, alors que lui même bidouille GTA SA.
L'idb c'est les fichiers de sauvegarde de ce qu'on reverse pour IDA Pro, je ne sais pas si tu connais :s

En gros ça contient le code assembleur de sa-mp, et mes modifications pour y donner des informations, par exemple j'ai reverse une class qui s'appel CFilterScripts, et j'ai trouvé toute les méthodes, alors dans le code assembleur on pourra savoir où se trouve les méthodes, quand elles sont appelés etc ...

sinon pour que le plugins soit plus utile serait mieux une liste de chose possible enfin sa macherais tout le travaille aussi

Bah tout dépend de ta créativité et de tes connaissances.


@Ssk : La fonction memcpy est une fonction de la librairie standard du C, elle existe donc sous Linux. Tu peux ainsi modifier tes "horribles" fonctions f_ReadArrayMemory et f_WriteArrayMemory :).

XD t'as lu mon commentaire toi :p
Sinon j'ai essayé de remplacer par memcpy, mais ça ne fonctionne pas :s

static cell AMX_NATIVE_CALL f_WriteArrayMemory( AMX* amx, cell* params )
{
/*
params[1] - Address
params[2] - array src
params[3] - size of array
*/
CHECKARGS( "WriteArrayMemory", 3 )
if( params[3] == 0 ) return 0;

cell* srcArray = 0;
amx_GetAddr( amx, params[2], &srcArray );

if( srcArray == 0 ) return 0;
/*
for( int i = 0; i < (int)params[3]; i++ )
{
*(unsigned char*)( params[1] + i ) = (unsigned char)srcArray[i];
}
*/
memcpy( (void*)params[1], srcArray, params[3] );

return 0;
}

J'ai peut être fais une boulette ?
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 23 Mai 2011, 23:03:01
http://forum.sa-mp.com/showthread.php?t=128338 (http://forum.sa-mp.com/showthread.php?t=128338)

XD
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Syg le 24 Mai 2011, 01:04:43
Il manque une * :
memcpy( *(void*)params[1], srcArray, params[3] );

Bien que dans ce cas là je ne sois pas sur de la place de cette *.
Peut-être que :
memcpy((void*)*params[1], srcArray, params[3] );
est plus correct.

Il est tard, j'ai plus trop envie de réfléchir ou d'aller voir le type de la variable param dans ton plugin.
En tout cas, c'est un problème ce ce genre.

++
SYg
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Karting06 le 24 Mai 2011, 19:28:00
Pas mal Sasuke. A part que pour l'instant je ne vois pas l'interet.

[HS]Comment tu as eu le code source de sa-mp 0.2 ? [/HS]
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Xartrick le 24 Mai 2011, 20:26:54
Si tu n'en vois pas l’intérêt, c'est que tu n'es pas encore assez expérimenté dans ce domaine.
Pour l'obtention du code source de SA-MP, il peut avoir plusieurs moyen, soit le leak, une sorte de vol du code source directement ou encore, le reverse engineering.
Titre: Re : Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: ghm94 le 24 Mai 2011, 20:34:51
Si tu n'en vois pas l’intérêt, c'est que tu n'es pas encore assez expérimenté dans ce domaine.
Pour l'obtention du code source de SA-MP, il peut avoir plusieurs moyen, soit le leak, une sorte de vol du code source directement ou encore, le reverse engineering.


Ouaip et si j'ai bien lu je crois qu'il c'est servit du du désassembleur IDA Pro. Puis après je pense qu'il l'a re-coder le serveur lui même petit à petit.
Titre: Re : Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Karting06 le 25 Mai 2011, 07:51:54
Si tu n'en vois pas l’intérêt, c'est que tu n'es pas encore assez expérimenté dans ce domaine.
Pour l'obtention du code source de SA-MP, il peut avoir plusieurs moyen, soit le leak, une sorte de vol du code source directement ou encore, le reverse engineering.

Ok, mais je n'en vois pas l'intérêt parce que je code plus pour sa-mp.
Le leak, c'est un peu comme ceux qui ont pu avoir Windows 8 M1 + M2 + M3 avant la première béta. Mais pour le trouver, il faut que sa-mp le leak non ? Ou sinon, on sait pas l'avoir, sauf si on hack bien sûr !!
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Xartrick le 25 Mai 2011, 13:02:09
Heuu, SA-MP possède la source de SA-MP, pourquoi la voudrait-il ?
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: ghm94 le 25 Mai 2011, 13:48:46
Toujours disponible ou il a été retirer ?
Si toujours dispo tu peut faire péter le lien stp  :D
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 25 Mai 2011, 13:52:41
Je te dit d'avance qu'elles sont inutilisables ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: ghm94 le 25 Mai 2011, 13:53:36
Ok merci, c'est surtout pour voir comment c'est fait :)
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: chneubeul le 27 Mai 2011, 16:45:25
Salut,

Ton plugin est comme celui de Y_Less ? Car j'utilise de temps en temps son plugins, pour économiser un peu de mémoire sur des variables qui s’exécute moult fois par secondes ^^

A+, Sam.
 :cheers
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 27 Mai 2011, 16:57:09
Quel plugin d'Y_less ?
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: chneubeul le 06 Juin 2011, 17:14:59
Salut, désolé j'étais en vadrouille ^^

Je parles du plugin Y_Bit
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 06 Juin 2011, 20:14:36
nop, c'est pas du tout la même chose ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: S!m le 07 Juin 2011, 00:26:36
Salut,

Y_bit n'est pas un plugin mais une include à ce que je sache.

De plus, il s'agit de manipuler les variables en pawn de sorte à les utiliser pleinement (chaque bit de la variable peut servir à stocker une valeur booléenne).
Ceci est très facile à faire et quiconque avec une connaissance minimale des principaux opérateurs et de la structure de la mémoire (le 32 bits par variable en PAWN quoi..) peu faire l'équivalent.

Le plugin de Sasuke permet d'accéder et de modifier la mémoire du serveur même.

++Sim++
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: chneubeul le 07 Juin 2011, 09:47:20
Salut, D'accord, donc si par exemple on voudra rajouter de la mémoire on la prendrais sur le dédié ?
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 07 Juin 2011, 09:49:02
Mon plugin ne permet pas d'allouer de la mémoire, mais il permet juste de modifier, de lire celle déjà existante ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: chneubeul le 07 Juin 2011, 09:51:34
Humm.. d'accord. Donc pour quel utilisation concrète tu l'a fait ? Enfin j'veut dire qu'est-ce qu'on peut faire avec ? J'ai vu changer le nombre max de slot mais c'pas très bon ça je penses ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 07 Juin 2011, 09:56:06
bah avec ce plugin tu peut faire beaucoup de chose, comme par exemple lire des valeurs sur les joueurs, les véhicules etc ... qui ne sont pas accessible directement depuis les fonctions que sa-mp nous offre, mais concrètement je n'ai pas d'exemple ^^
en faite ça profite a qui sait s'en servir ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: chneubeul le 07 Juin 2011, 09:59:02
Ah oui, pas mal. Mais j'ai regarder un peu un exemple là, faut connaitre les bits c'est pareil on a pas de liste x')
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 07 Juin 2011, 10:01:26
j'en avais fais des listes pour les anciennes version de sa-mp ^^

mais la j'ai plus trop le temps d'en faire ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 09 Juillet 2011, 23:34:17
Le plugin a l'air d'être mort, j'vais essayer de poster de temps en temps quelques fonctions utile ( ou pas )

stock GetPlayerVehicleSurfingOffset( playerid, &Float:X, &Float:Y, &Float:Z )
{
X = Y = Z = 0.0;
if( IsPlayerConnected( playerid ) )
{
if( GetPlayerSurfingVehicleID( playerid ) != 0xFFFF )
{
new __NetGame = ReadIntMemory( CNETGAME_WIN32 );
new __PlayerPool = ReadIntMemory( __NetGame + 0x04 );
new CPlayer = ReadIntMemory( __PlayerPool + 0x7D0 + playerid * 4);

X = Float:ReadIntMemory( CPlayer + 0x74 + 0x00 );
Y = Float:ReadIntMemory( CPlayer + 0x74 + 0x04 );
Z = Float:ReadIntMemory( CPlayer + 0x74 + 0x08 );
}
}
}

Si quelqu'un pouvais essayer ce serai top, comme je ne suis pas chez moi en ce moment, et que pour "surfer" sur un véhicule il faut un conducteur et un "surfeur" ^^

Et si j'ai fais un truc pas bien ( up le topic ) qu'un membre du staff vient me gueuler dessus ^^

EDIT:


stock HasPlayerCheckpoint( playerid )
{
if( IsPlayerConnected( playerid ) )
{
new __NetGame = ReadIntMemory( CNETGAME_WIN32 );
new __PlayerPool = ReadIntMemory( __NetGame + 0x04 );
new __Player = ReadIntMemory( __PlayerPool + 0x7D0 + playerid * 0x04);

if( ReadintMemory( __Player + 0x1A8C ) > 0 ) return 1;

}

return 0;
}

stock HasPlayerRaceCheckpoint( playerid )
{
if( IsPlayerConnected( playerid ) )
{
new __NetGame = ReadIntMemory( CNETGAME_WIN32 );
new __PlayerPool = ReadIntMemory( __NetGame + 0x04 );
new __Player = ReadIntMemory( __PlayerPool + 0x7D0 + playerid * 0x04);

if( ReadIntMemory( __Player + 0x1A90 ) > 0 ) return 1;

}
return 0;
}

stock GetPlayerCheckpointPosition( playerid, &Float:X, &Float:Y, &Float:Z )
{
X = Y = Z = 0.0;
if( IsPlayerConnected( playerid ) && HasPlayerCheckpoint( playerid ) )
{
new __NetGame = ReadIntMemory( CNETGAME_WIN32 );
new __PlayerPool = ReadIntMemory( __NetGame + 0x04 );
new __Player = ReadIntMemory( __PlayerPool + 0x7D0 + playerid * 0x04);

X = Float:ReadIntMemory( __Player + 0x0282 + 0x00 );
Y = Float:ReadIntMemory( __Player + 0x0282 + 0x04 );
Z = Float:ReadIntMemory( __Player + 0x0282 + 0x08 );
}
}


stock GetPlayerRaceCheckpointPosition( playerid, &Float:X, &Float:Y, &Float:Z )
{
X = Y = Z = 0.0;
if( IsPlayerConnected( playerid ) && HasPlayerRaceCheckpoint( playerid ) )
{
new __NetGame = ReadIntMemory( CNETGAME_WIN32 );
new __PlayerPool = ReadIntMemory( __NetGame + 0x04 );
new __Player = ReadIntMemory( __PlayerPool + 0x7D0 + playerid * 0x04);

X = Float:ReadIntMemory( __Player + 0x0296 + 0x00 );
Y = Float:ReadIntMemory( __Player + 0x0296 + 0x04 );
Z = Float:ReadIntMemory( __Player + 0x0296 + 0x08 );
}
}


stock GetPlayerNextRaceCheckpointPosition( playerid, &Float:X, &Float:Y, &Float:Z )
{
X = Y = Z = 0.0;
if( IsPlayerConnected( playerid ) && HasPlayerRaceCheckpoint( playerid ) )
{
new __NetGame = ReadIntMemory( CNETGAME_WIN32 );
new __PlayerPool = ReadIntMemory( __NetGame + 0x04 );
new __Player = ReadIntMemory( __PlayerPool + 0x7D0 + playerid * 0x04);

X = Float:ReadIntMemory( __Player + 0x02A2 + 0x00 );
Y = Float:ReadIntMemory( __Player + 0x02A2 + 0x04 );
Z = Float:ReadIntMemory( __Player + 0x02A2 + 0x08 );
}
}

Un petit bonus :p
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: S!m le 10 Juillet 2011, 01:48:28
Salut,

je doit dire que ce sont de très belles fonctions Sasuke et elles illustrent très bien les utilités de ton plugin.

Bravo.

par contre je crois qu'il faudrait définir CNETGAME_WIN32 non?

++Sim++
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 10 Juillet 2011, 01:58:10
Salut, CNETGAME_WIN32 est normalement définie dans l'header ( memory.inc ) que je fournis dans le zip, et merci pour le commentaire ^^
Titre: Re : Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: S!m le 10 Juillet 2011, 02:55:43
Salut,

Salut, CNETGAME_WIN32 est normalement définie dans l'header ( memory.inc ) que je fournis dans le zip, et merci pour le commentaire ^^

très bien alors,
je suis désolé, comme je n'ai pas télécharger le paquet, je n'ai pas pu le voir...

++Sim++
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 10 Juillet 2011, 12:12:17
T'inquiète pas de problème Sim ^^

Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Syg le 11 Juillet 2011, 11:14:18
Ben moi, je l'avais téléchargée (pour en garder une copie si jamais).
Je viens de jeter une œil pour vérifier ce que dit Ssk (je confirme, le #define est bien là).

Par contre, juste une remarque :
L'archive fait 2.4 Mb.
Elle contient un fichier qui fait 7.5 Mb !!
Ce fichier est inutile (fichier .NCB).
Ssk -> La prochaine fois, ne met pas le .NCB dans l'archive, ça allègera.

++
Syg
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 11 Juillet 2011, 11:40:33
Salut, merci Syg pour cette remarque.

J'ai donc nettoyé l'archive et ajouté un exemple ( celui des checkpoints ) le lien est sur le premier post.

;)
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Xolokos le 11 Juillet 2011, 15:15:21
Beau Plugin mais t'es fonctions je comprend pas trop tu pourrais détaillés pour voir leur utilité même si c'est écrit en Anglais avec tout c'est 00x.... Ca me perturbe ! Avec une explication de leurs utilités ça serrais mieux je pense. Merci  :king.
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 11 Juillet 2011, 15:22:59
Quelles fonctions ? celle du plugin, ou ceux des exemples?
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Xolokos le 11 Juillet 2011, 17:45:14
Ceux des exemples tu pourrais faire un topic pour mettre des fonctions lié a son utilisation.
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 11 Juillet 2011, 17:53:01
Dis moi plus précisément lesquels vu que j'ai pas le temps de toute les faire ^^
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: S!m le 12 Juillet 2011, 00:43:59
Salut,

tu n'as pas a te préoccupé de grand chose, pour les fonctions faites par Sasuke, il s'est occupé de trouver les adresses et tout (les 0x.... sont des valeurs qui sont en fait les adresses mémoire de certaines informations).

En gros, il cherche l'endroit où se trouve l'information désirée et il récupère l'info ou écrit par dessus. C'est ce que ce plugin ajoute...

++Sim++
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 12 Juillet 2011, 00:48:43
<?php
stock HasPlayerCheckpoint
playerid )
{
if( IsPlayerConnectedplayerid ) ) // je test si le joueur est connecté
{
new __NetGame ReadIntMemoryCNETGAME_WIN32 ); // ici je lis la valeur du pointeur NetGame de samp, qui contient TOUTE les informations
new __PlayerPool ReadIntMemory__NetGame 0x04 ); // ici je vais chercher dans NetGame la liste des joueurs
new __Player ReadIntMemory__PlayerPool 0x7D0 playerid 0x04); // ici je vais chercher le joueur qui est situé a l'offset + 0x74D dans la liste des joueur appelé PlayerPool

if( ReadintMemory__Player 0x1A8C ) > ) return 1// ici je vais lire dans la mémoire où sont contenu les informations du joueur si le joueur a un checkpoint ou pas, et cette information se trouve à l'offset 0x1A8C

}

return 0;
}

Cadeau :p
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Hector le 12 Juillet 2011, 00:51:11
Ssk tu peut regarder t'est message priver pleaze , sinon bon taff pour le plugin
(http://www.gtaonline.fr/forums/Themes/proton/images/warnwarn.gif) Hors sujet
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 12 Juillet 2011, 01:23:11
j'ai vu sur ce topic (http://forum.sa-mp.com/showthread.php?t=102997) qu'il n'y avais pas de fonction GetPlayerSkillLevel, maintenant si


stock ReadShortMemory( address )
{
return ReadByteMemory( address ) + ( ReadByteMemory( address + 1 ) << 8 ); // en espérant que j'ai pas fais d'erreur ( oui je code sans compiler )
}

stock GetPlayerSkillLevel( playerid, skill )
{/*Bizarre je me rend compte ici que j'ai pas mis de fonction ReadShortMemory*/

if( IsPlayerConnected( playerid ) && skill >= 0 && skill < 11 )
{
new __NetGame = ReadIntMemory( CNETGAME_WIN32 );
new __PlayerPool = ReadIntMemory( __NetGame + 0x04 );
new __Player = ReadIntMemory( __PlayerPool + 0x7D0 + playerid * 0x04);

return ReadShortMemory( __Player + 2 * skill + 0x1A37 );
}
return 0;
}
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Xolokos le 12 Juillet 2011, 11:15:34
C'est plus clair merci a vous deux !
Titre: Re : Re : Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 13 Juillet 2011, 02:01:02

Sinon j'ai essayé de remplacer par memcpy, mais ça ne fonctionne pas :s

static cell AMX_NATIVE_CALL f_WriteArrayMemory( AMX* amx, cell* params )
{
/*
params[1] - Address
params[2] - array src
params[3] - size of array
*/
CHECKARGS( "WriteArrayMemory", 3 )
if( params[3] == 0 ) return 0;

cell* srcArray = 0;
amx_GetAddr( amx, params[2], &srcArray );

if( srcArray == 0 ) return 0;
/*
for( int i = 0; i < (int)params[3]; i++ )
{
*(unsigned char*)( params[1] + i ) = (unsigned char)srcArray[i];
}
*/
memcpy( (void*)params[1], srcArray, params[3] );

return 0;
}

J'ai peut être fais une boulette ?


Je viens de comprendre ...
memcpy( (void*)params[1], srcArray, params[3] );

écris sur un octet

memcpy( (void*)params[1], srcArray, params[3]*4 );
écris sur 4 octet, et les cell sont des entier à 4 octets

je sort une version demain ou quand j'en aurai envie :p
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Syg le 13 Juillet 2011, 09:43:34
Alors corrige le commentaire, ça évitera les surprises de ce genre à l'avenir :
/*
params[1] - Address
params[2] - array src
params[3] - size of array (in number of cells) <---
*/

De plus,
memcpy( (void*)params[1], srcArray, params[3] );ne copie pas sur 1 octet mais sur une taille 4 fois plus petite que celle attendue.

++
Syg
Titre: Re : [PLUGIN] Edit the memory by Sasuke78200
Posté par: Ssk le 13 Juillet 2011, 21:53:19
nouvelle version