Le ClassName !

capo666 Messages postés 35 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 1 juin 2008 - 27 juil. 2007 à 20:24
capo666 Messages postés 35 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 1 juin 2008 - 6 août 2007 à 20:51
salut ,

Vous connaisser surement deja l'API Getclassname ! qui permet de récupérer le nom de la classe de la fenetre désirer. Maintenant je me demandais si c'était possible de changer le nom de la classe  un genre de setclassname. j'ai fais une recherche sur google et vbfrance mais jai rien trouver de bon. alor si vous avez une solution pour pouvoir changer le classname je susis preneur :D

merci d'avance

12 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
27 juil. 2007 à 20:29
salut,

je pense pas que ce soit possible de changer de classe une fenêtre.
C'est comme si tu faisais une tarte à la fraise, et que tu lui disais "t'eh, change toi en gâteau au chocolat". Impossible. Tu veux un gâteau au chocolat ? Beh faut le faire.
Ta fenêtre, c'est pareil, à toi de créer celle que tu veux.

As-tu un exemple concrêt ? (classe d'origine et d'arrivée ?)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
capo666 Messages postés 35 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 1 juin 2008
27 juil. 2007 à 20:41
Bien en fait je voulais faire un programme qui empecherais les dll injection dans le processus. en changeant la classname par un truc random et changer le nom de la fenetre je me suis dit cool comme sa personne va pouvoir injecter des dll avec un loader.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 juil. 2007 à 22:00
salut,

ouai pas bête, surtout en VB6.
pis même Windows "ne pourrait" pas traiter les messages de ton appli.

en gros faire un code pour geler tes progs. j'aime beaucoup l'idée

transformer le gateau à la fraise en chocolat..., si, c'est possible
(transformer une txtbox en form par exemple)

mais pour getclassname j'ai un gros doute aussi. surtou niveau méthode : çà devient du bas niveau, ce n'est plus de l'accès "consultation". et VB6 n'est pas fait pour...

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
capo666 Messages postés 35 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 1 juin 2008
28 juil. 2007 à 01:42
alor c'est impossible :-( ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
31 juil. 2007 à 13:41
Salut,

Je pense pas que l'on puisse rendre un processus non identifiable via ces fenêtres...
Même si on change le titre de la fenêtre principale, celui qui veut mettre en place une injection se servirat de n'importe quelle autre fenêtre (contrôle).

Et faudrait aussi modifier le nom de l'executable qui est aussi facilement récupérable.

Je pense pas que l'on puisse empècher une injection... sans injecter sois même du code dans les autres processus ! Mais là ça devient la guerre de celui qui va injecter l'autre en premier suffisament pour qu'il ne soit pas en mesure de riposter.
0
capo666 Messages postés 35 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 1 juin 2008
2 août 2007 à 01:51
si on change le nom de l'application, le nom de la fenetre et le classname je vois pas comment on pourrais injecter quelques choses dans le processus.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
2 août 2007 à 21:48
On peut récupérer le texte de n'importe quelle fenêtre (Ou contrôle. La plupart des contrôles ont des handles de fenêtre valides) et récupérer son texte en envoyant un message WM_GETTEXT.

Et il y a différentes techniques d'injection. L'une d'elle injecte du code dans toutes les appli en même temps...


Pourquoi tiens tu as ce qu'aucune injection ne soit possible dans ton processus ?
0
capo666 Messages postés 35 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 1 juin 2008
3 août 2007 à 17:27
c'est pour faire un anti cheat pour un vieux jeux qui se nomme Tactical Ops. J'avais remarquer que toute les cheat pour se jeux avait un INI avec une ligne EXE=Tactical ops.exe alor j'avais qui modifiait le nom du exe et en modifiant le nom du exe sa changeait aussi le nom de la fenetre alor il me restait plus que le classname.

Le cheat marchait comme sa: tu l'ouvrait et il attandait que tu ouvre le jeux une fois ouvert il s'injectait automatiquement. alor si je changeait le nom du EXE avant de louvrir, le cheat détectait rien. Mais le prob c'est que les cheater aurais sortit une version avec le classname.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 août 2007 à 21:10
pas sûr mais... çà peut peut-être aider :

Option Explicit
'
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'
Private Const MON_TITRE     As String = "Sans titre -
Bloc-notes"
'
'
Private Sub Form_Load()
    Call Shell("notepad.exe", vbMinimizedFocus)
    
     Dim lHwnd As Long
     lHwnd = FindWindow(vbNullString, MON_TITRE)
    
     If lHwnd = 0 Then
         MsgBox "Titre
non-trouvé!!!"
     Else
         Call SetWindowText(lHwnd, "!! Simple changement de titre !!")
     End If
     
     Unload Me
End Sub

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
capo666 Messages postés 35 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 1 juin 2008
4 août 2007 à 00:42
Merci pour la réponse, mais non sa je suis capable de changer le titre de la fenetre, je suis capable de renomer l'applicatiom, mais je ne suis pas capable de changer le Classname de l'application. C'est ce que j'ai expliquer dans mon poste précédent il me manque juste le classname a modifier le reste c'est facile. merci encore de m'aider.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
6 août 2007 à 12:47
Hé bé malgrés ton explication, je ne suis pas parvenue à comprendre ce que tu voulais faire...
Je suppose que tu joues à ce jeu en réseaux et que tu veux empècher les autres de cheater. Mais dans ce cas, comment modifier leurs jeux ou leur faire executer une application qui empècherat l'injection sur leurs PCs ?

Je pense pas qu'il soit facilement possible de changer le nom de classe d'une fenêtre à l'execution. Pour y parvenir, on pourrait par exemple commencer par désassembler GetClassName, travail probablement long et pénible.

Mais tout bêtement, si tu as le nom de la classe, tu peux peut être simplement essayer de le changer en dur dans l'executable du jeu (Un simple éditeur de texte peut suffire).
Par contre, il faudrat remplacer l'ancien nom par un nom de la même taille (ou faire suivre le nouveau par des zéros), et prier pour que les développeurs n'ai pas mis de protection anti modifs (Genre un hash de l'executable).
0
capo666 Messages postés 35 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 1 juin 2008
6 août 2007 à 20:51
Oui j'aime bien ta deuxième idée, Mais le classname est dur a trouver dans un executable et si il est packé avec un packer comme UPX c'est mort
0
Rejoignez-nous