cs_candyraton
Messages postés109Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention 2 février 20123 9 déc. 2008 à 13:00
Mortel
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 26 janv. 2008 à 17:40
Bonjour,
cela est possible (exemple avec l'éditeur de RAM physique de Winhex), mais j'avoue que je ne sais pas comment...
En VB6 çà parait compliqué en tout cas.
Bon courage (si tu trouves, je suis intéressé)
@+
vautour32
Messages postés38Date d'inscriptionjeudi 20 septembre 2007StatutMembreDernière intervention 9 décembre 2008 26 janv. 2008 à 16:59
Bonjour,
Tout d'abord, bravo. Cette source est vraiment super. Du travail de pro (tu en es un, je suppose).
Est-ce que quelqu'un saurait s'il y a moyen de lire/écrire dans n'importe quel espace mémoire (même non alloué à un processus)?
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 26 août 2007 à 19:07
Pire que ça, les antivirus modifient le noyau nt pour contrôler les accès mémoires, c'est d'ailleurs un grand sujet de discussion autour de Vista et la nouvelle technologie PathGard empêchant ces modifications du noyau.
daetips
Messages postés142Date d'inscriptionjeudi 10 juillet 2003StatutMembreDernière intervention10 novembre 2007 25 août 2007 à 23:03
A priori non, étant donné que ton antivirus doit fonctionner avec des hooks sur apis (via driver à mon avi), sur les fonctions NT..
Et donc même avec des privilèges, l'antivirus détectera quand même les appels aux api.
Daetips
cs_Geth44
Messages postés1Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention22 août 2007 22 août 2007 à 16:41
Salut,
J'ai été vachement intéressé par ton code, mais il y a eu un hic : mon anti-virus a tout de suite détecté qu'une application essayait d'en modifier une autre (en l'occurence elle-même). Est-ce qu'il y a moyen de jouer avec les privilèges pour éviter cela ???
@+
yocrita
Messages postés21Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention17 août 200717 17 août 2007 à 08:49
Ce code permet-il de sauver un processus à un instant T ?
Voilà moi ce que je voudrais c'est sauver des parties lan d'alerte rouge 2 qui ne peuvent-être sauvées à ma connaissance.
En fait, j'imaginais synchroniser l'heure des machines grace à Internet et sauver mon processus RA2 à un instant T sur chaque machines et de les restaurer à un autre instant T. Je me dis que cela pourrait fonctionner puisque le jeu dispose d'un système d'attente de resynchronisation (30 sec environ). Qu'en pensez-vous ? rêve ou réalitée ?
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 25 mai 2007 à 18:31
Salut, en effet je n'ai pas précisé ce détail.
En fait, j'ai fait çà exprès : une certaine taille a été affectée en mémoire pour le processus pour stocker cette chaine. Par conséquent, il se peut que les bytes d'après cette chaine contiennent d'autres données que l'on ne veut pas corrompre.
Exemple : la chaine originale prend les bytes 5000, 5001, 5002, 5003, 5004 et 5005. Si on remplace par un chaine un peu plus longue, la nouvelle prendra également les bytes 5006, 5007...etc. et donc effacera des bytes qui n'étaient pas alloués à la chaine au départ.
Cela dit tu as raison, si l'on veut tout de même écrire une string plus longue, il faut procéder comme tu le dis.
@+
cs_Trim
Messages postés60Date d'inscriptionsamedi 4 mars 2006StatutMembreDernière intervention 4 septembre 20233 25 mai 2007 à 16:59
Salut,
Un petit probleme pour ta source: elle ne marche pas si la nouvelle chaine que tu veux remplacer est plus longue que celle existante.
On ne voie que le début (égale à la longueur de la chaine original)
Voici la solution au problème:
Private Sub cmdSearch_Click()
'procède à la recherche
Dim cRes() As Long
Dim lngOffset As Long
Dim PID As Long
Dim remplace_text As String
'obtient le processus de notre application
PID = GetMyPID
'lance la recherche dans la mémoire
cClasse.SearchForStringMemory PID, txtEXIT.Text, False, cRes()
If UBound(cRes()) = 0 Then
'raté !
MsgBox "Pas trouvé....", vbInformation, "Hum -____-"
Exit Sub
End If
'récupère l'offset du résultat
lngOffset = cRes(1)
'Texte à changer
remplace_text$ = "C'est modifié... ^^ et maintenant je voie tout."
'écriture dans la mémoire à cet offset
cClasse.WriteBytes PID, lngOffset, remplace_text$
MsgBox "Un p'tit refresh de la textbox....", vbInformation, "C'est fait ^_^"
'Actualise toute la chaine
txtEXIT.Text = cClasse.ReadBytes(PID, lngOffset, Len(remplace_text$))
End Sub
Remplacer cette procédur par celle existant.
Merci pour cette super source.
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 5 mai 2007 à 23:10
Pour le joueurs de Warcraft III :
Utilisez un pseudo de longueur suffisante, loggez-vous sur Battle.Net, recherchez votre pseudo dans la mémoire de Warcraft III, et remplacez le en utilisant les codes de couleurs du Warcraft World Editor (|cffrrggbbText|r) et hop, vous aurez des pseudos en couleurs !
Il est impossible d'avoir un tel pseudo à la base car le logiciel ne permet pas d'utiliser le "|" dans la boite de saisie du pseudo ^^...
(Pseudo sur Northrend si vous passez par là : ElectricGuitar :p)
Bon amusement !
khaleid
Messages postés39Date d'inscriptionmercredi 4 juillet 2001StatutMembreDernière intervention 8 avril 20141 3 mars 2007 à 21:50
bonsoir
je vais essayer le code et je reviens .
j'en ai besoin pour automatiser la modification d'un offset dans stronghold crusader (une sorte de trainer perso )
merci
Constant93
Messages postés38Date d'inscriptionsamedi 22 janvier 2005StatutMembreDernière intervention 4 août 2007 23 déc. 2006 à 03:15
hop, dans les favoris !
Bravo.
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 18 déc. 2006 à 23:53
Merci bien ;)
@+
daetips
Messages postés142Date d'inscriptionjeudi 10 juillet 2003StatutMembreDernière intervention10 novembre 2007 18 déc. 2006 à 23:29
;)
PS: Bon code, et bien commenté (je garde ça sous la main :D )
Daetips
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 18 déc. 2006 à 19:32
Tu as tout à fait raison, j'avais confondu cette API avec GetCurrentProcess qui renvoie toujours -1.
Je change de suite, merci !
@+
daetips
Messages postés142Date d'inscriptionjeudi 10 juillet 2003StatutMembreDernière intervention10 novembre 2007 18 déc. 2006 à 19:08
Je me trompe ou GetMyPID() pourrait etre remplacée par l'api GetCurrentProcessId ?
Daetips
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 16 déc. 2006 à 01:34
Drikce06 ==> J'essaie de commenter un maximum (parfois trop diront certains), mais au moins je suis certain de me retrouver dans mon code (pratique quand j'ai 15 mille lignes) et çà permet d'éclaircir la chose pour ceux qui veulent comprendre le fonctionnement.
Content que tu apprécies ^^
Salut, j'ai pas testé car j'ai pas VB6, mais en tout cas ça fais plaisir de voir un code autant commenté, si tout les membres déposant une source en fesaient autant ce serai super!
9 déc. 2008 à 13:00
26 janv. 2008 à 17:40
cela est possible (exemple avec l'éditeur de RAM physique de Winhex), mais j'avoue que je ne sais pas comment...
En VB6 çà parait compliqué en tout cas.
Bon courage (si tu trouves, je suis intéressé)
@+
26 janv. 2008 à 16:59
Tout d'abord, bravo. Cette source est vraiment super. Du travail de pro (tu en es un, je suppose).
Est-ce que quelqu'un saurait s'il y a moyen de lire/écrire dans n'importe quel espace mémoire (même non alloué à un processus)?
26 août 2007 à 19:07
25 août 2007 à 23:03
Et donc même avec des privilèges, l'antivirus détectera quand même les appels aux api.
Daetips
22 août 2007 à 16:41
J'ai été vachement intéressé par ton code, mais il y a eu un hic : mon anti-virus a tout de suite détecté qu'une application essayait d'en modifier une autre (en l'occurence elle-même). Est-ce qu'il y a moyen de jouer avec les privilèges pour éviter cela ???
@+
17 août 2007 à 08:49
Voilà moi ce que je voudrais c'est sauver des parties lan d'alerte rouge 2 qui ne peuvent-être sauvées à ma connaissance.
En fait, j'imaginais synchroniser l'heure des machines grace à Internet et sauver mon processus RA2 à un instant T sur chaque machines et de les restaurer à un autre instant T. Je me dis que cela pourrait fonctionner puisque le jeu dispose d'un système d'attente de resynchronisation (30 sec environ). Qu'en pensez-vous ? rêve ou réalitée ?
25 mai 2007 à 18:31
En fait, j'ai fait çà exprès : une certaine taille a été affectée en mémoire pour le processus pour stocker cette chaine. Par conséquent, il se peut que les bytes d'après cette chaine contiennent d'autres données que l'on ne veut pas corrompre.
Exemple : la chaine originale prend les bytes 5000, 5001, 5002, 5003, 5004 et 5005. Si on remplace par un chaine un peu plus longue, la nouvelle prendra également les bytes 5006, 5007...etc. et donc effacera des bytes qui n'étaient pas alloués à la chaine au départ.
Cela dit tu as raison, si l'on veut tout de même écrire une string plus longue, il faut procéder comme tu le dis.
@+
25 mai 2007 à 16:59
Un petit probleme pour ta source: elle ne marche pas si la nouvelle chaine que tu veux remplacer est plus longue que celle existante.
On ne voie que le début (égale à la longueur de la chaine original)
Voici la solution au problème:
Private Sub cmdSearch_Click()
'procède à la recherche
Dim cRes() As Long
Dim lngOffset As Long
Dim PID As Long
Dim remplace_text As String
'obtient le processus de notre application
PID = GetMyPID
'lance la recherche dans la mémoire
cClasse.SearchForStringMemory PID, txtEXIT.Text, False, cRes()
If UBound(cRes()) = 0 Then
'raté !
MsgBox "Pas trouvé....", vbInformation, "Hum -____-"
Exit Sub
End If
'récupère l'offset du résultat
lngOffset = cRes(1)
'Texte à changer
remplace_text$ = "C'est modifié... ^^ et maintenant je voie tout."
'écriture dans la mémoire à cet offset
cClasse.WriteBytes PID, lngOffset, remplace_text$
MsgBox "Un p'tit refresh de la textbox....", vbInformation, "C'est fait ^_^"
'Actualise toute la chaine
txtEXIT.Text = cClasse.ReadBytes(PID, lngOffset, Len(remplace_text$))
End Sub
Remplacer cette procédur par celle existant.
Merci pour cette super source.
5 mai 2007 à 23:10
Utilisez un pseudo de longueur suffisante, loggez-vous sur Battle.Net, recherchez votre pseudo dans la mémoire de Warcraft III, et remplacez le en utilisant les codes de couleurs du Warcraft World Editor (|cffrrggbbText|r) et hop, vous aurez des pseudos en couleurs !
Il est impossible d'avoir un tel pseudo à la base car le logiciel ne permet pas d'utiliser le "|" dans la boite de saisie du pseudo ^^...
(Pseudo sur Northrend si vous passez par là : ElectricGuitar :p)
Bon amusement !
3 mars 2007 à 21:50
je vais essayer le code et je reviens .
j'en ai besoin pour automatiser la modification d'un offset dans stronghold crusader (une sorte de trainer perso )
merci
23 déc. 2006 à 03:15
Bravo.
18 déc. 2006 à 23:53
@+
18 déc. 2006 à 23:29
PS: Bon code, et bien commenté (je garde ça sous la main :D )
Daetips
18 déc. 2006 à 19:32
Je change de suite, merci !
@+
18 déc. 2006 à 19:08
Daetips
16 déc. 2006 à 01:34
Content que tu apprécies ^^
Le cancre ==> Nickel si çà peut t'être utile ;)
Merci pour vos commentaires, @+
16 déc. 2006 à 01:26
merci pour cette exemple,cette démo trop interessante...++
15 déc. 2006 à 09:22