Quelques questions

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#1
Bonjour à tous et merci pour tous les efforts que vous faites pour aider les gens sur ce genre de projet.
Je me suis lancé dans le développement d'un bot MITM avec le minimum de connaissance et j'ai quelques question plus ou moins en rapport avec le bot :D

1- A quoi sert le @ devant un path ? :rolleyes:
2- J'ai regardé pour patch le client avec no.ankama.dll, j'ai fait le patch mais comment je vois que le patch fonctionne ? Que doit-il se passer ?

Je n'ai que ça comme question pour l'instant mais je pense en rajouter petit à petit :)
Merci de votre aide ! :p
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#2
1 - le @ c'est pour prendre en compte les / dans la chaîne de string sans sa sa marche pas
2 - Il doit rien ce passer en particulier pour savoir si sa marche essaye de te connecter sur l'ip 127.0.0.1
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#3
1 - le @ c'est pour prendre en compte les / dans la chaîne de string sans sa sa marche pas
2 - Il doit rien ce passer en particulier pour savoir si sa marche essaye de te connecter sur l'ip 127.0.0.1
Ah super utile le @ \o/
J'ai déjà essayé de me co après le patch ça me dit "Error #2044: Unhandled ioError:. text=Error #2031: Socket Error. URL: 127.0.0.1" et le client me dit ensuite que la connexion avec le serveur a échoué.
Ok c'est parce que j'ai pas fait le code qui communique avec le client ?
 
Dernière édition:
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#4
Si tu te connectes en local sur un port X et que t'as pas lancé de serveur sur ce port, forcément il manque un truc ^^
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#5
Oui j'étais un peu perdu quand j'ai écris ma réponse ^^
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#7
Oui
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#8
Sachant que WPE Pro intercepte l'ensemble des données réseaux qui transitent sur ton ordinateur, oui :p
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#9
J'ai pas attendu vos réponses je l'ai ouvert :rolleyes: Mais merci pour les précisions ! ;)
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#10
J'ai un petit problème qui n'a rien a voir avec le code du bot.
J'ai une classe console qui ajoute des lignes dans ma console et je l'appelle depuis plusieurs autres classes mais voilà seule la classe main arrive à écrire quelque chose dans la console... Et je n'arrive pas à trouver ce qui cloche :s
Code classe console :
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MyBot.Interface
{
    public partial class ConsoleForm : Form
    {

        public ConsoleForm()
        {
            InitializeComponent();
        }

        public void Add(string log, Color color)
        {
            rtLog.SelectionColor = color;
            rtLog.AppendText("[" + DateTime.Now.ToString("h:mm:ss tt")+ "] : " + log + "\r\n");
        }

        public void Add(string log)
        {
            rtLog.AppendText("[" + DateTime.Now.ToString("h:mm:ss tt") + "] : " + log + "\r\n");
        }

        public void Add(byte[] buffer, string log, Color color)
        {
            rtLog.SelectionColor = color;
            rtLog.AppendText("[" + DateTime.Now.ToString("h:mm:ss tt") + "] : " + log);
            rtLog.SelectionColor = Color.Black;
            for (int i = 0; i < buffer.Length; i++)
            {
                rtLog.AppendText(buffer[i].ToString() + "");
            }
            rtLog.AppendText("\r\n");
        }


        private void button1_Click(object sender, EventArgs e)
        {
            rtLog.Text = null;
        }

        private void rtLog_TextChanged(object sender, EventArgs e)
        {
            rtLog.SelectionStart = rtLog.Text.Length;
            rtLog.ScrollToCaret();
        }

        private void btClose_Click(object sender, EventArgs e)
        {
            Hide();
        }
       
    }
}

Code de la classe qui l'appelle :
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using MyBot.Interface;
using MyBot.Divers;
using MyBot.Network;

namespace MyBot.Client
{
    public class Injection
    {
        ConsoleForm console;

        public Injection()
        {
            console = new ConsoleForm();
        }
        public string ApplicationPath
        {
            get { return Environment.CurrentDirectory; }
        }
       
        public void Inject(int dofusModId)
        {
            try
            {
                if (!(File.Exists(ApplicationPath + "\\No.Ankama.dll")))
                {
                    console.Add("Le fichier No.Ankama.dll ne se trouve pas dans le dossier ! Veuillez vérifier cela avec votre Antivirus.");
                    return;
                }
                DllInjector dllInjector = new DllInjector();
                dllInjector.Inject(Convert.ToUInt32(dofusModId), ApplicationPath + "\\No.Ankama.dll");
                console.Add("Processus Dofus à l'id = " + dofusModId + " a bien été patché !");
            }
            catch (Exception e)
            {
                console.Add(e.ToString(), Color.Red);
            }
        }

        public void ProcessDofus()
        {
            Process[] proc;
            try
            {
                proc = Process.GetProcessesByName("Dofus");
                if (proc.Length == 0)
                {
                    console.Add("Aucun processus Dofus trouvé.", Color.Red);
                    return;
                }
                for (int i = 0; i < proc.Length; i++)
                {
                    console.Add("Processus Dofus trouvé avec l'id = " + proc[i].Id);
                    Inject(proc[i].Id);

                }
            }
            catch (Exception e)
            {
                console.Add(e.ToString(), Color.Red);
            }
        }
    }
}
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#11
Surement un problème de thread, tu devrais Invoker le composant avant de le modifier.

De cette manière:

C#:
rtLog.Invoke((MethodInvoker)delegate
{
     rtLog.SelectionColor = color;
     rtLog.AppendText("[" + DateTime.Now.ToString("h:mm:ss tt")+ "] : " + log + "\r\n");
});
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#12
Merci bien, je vais tester ça après Game of thrones ^^
 
Inscrit
10 Mai 2015
Messages
357
Reactions
55
#13
Il me semblait que l'on ne devait pas invoker avec la console.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#14
Ce n'est pas une console, mais un composant RichTextBox, il faut donc l'invoker comme tout composant qu'on utilise à l'extérieur de son thread d'origine.
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#15
Ca finit sur un truc comme ça ?
Code:
        public void Add(string log, Color color)
        {
            rtLog.Invoke((MethodInvoker)delegate
            {
                rtLog.SelectionColor = color;
                rtLog.AppendText("[" + DateTime.Now.ToString("h:mm:ss tt") + "] : " + log + "\r\n");
            });
        }
Non, ça marche pas ça doit pas être ça ^^ J'ai pas très bien compris ou tu veux que je mette ça :/
Ok j'ai un peu compris en cherchant sur msdn, je test et je vous dis quoi ! :D
 
Dernière édition:

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#16
A priori ton code est correct, tu as normalement au moins une exception ou un message.

Ajoute un try / catch
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#17
A priori ton code est correct, tu as normalement au moins une exception ou un message.

Ajoute un try / catch
Le try catch fait charger mon appli sans rien faire :confused: Sans try catch j'ai
Code:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

Additional information: Impossible d'appeler Invoke ou BeginInvoke sur un contrôle tant que le handle de fenêtre n'a pas été créé.
Bon au final j'ai essayé plusieurs truc mais j'ai un problème, je suis sensé faire ça :
Code:
 if (InvokeRequired)
            {
                Invoke(new Action(Add));
                return;
            }
Le problème est que j'ai pleins de Add surchargés et il me sort "Methode name expected" quand je remplace Invoke(new Action(Add)) par Invoke(new Action(Add(log, color)))
 
Dernière édition par un modérateur:

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#18
Le problème est que tu modifies le composant avant sa création / son affichage.
Faut lire les erreurs.
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#19
Le problème est que tu modifies le composant avant sa création / son affichage.
Faut lire les erreurs.
Oui j'avais compris l'erreur j'ai essayé de la résoudre mais j'ai pas réussi, je réessaie ce soir :)
 
Dernière édition par un modérateur:

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#20
tant que tu es en mode "j'essais de faire marcher le truc" , n'utilise pas try/catch comme ca au moins ca stop le programme quand y'a une connerie et tu t'en appercois tout de suite (bon ca depend aussi de la connerie , des fois tu t'en appercois pas quand meme) , try/catch c'est surtout pour laisser passer les bugs/erreurs , j'imagine que pour le moment faut pas les laisser passer
et si tu fais :
Code:
if (InvokeRequired)
            {
                Invoke(new Action(Add));
                return;
            }
pour appeller :
Code:
        public void Add(string log, Color color)
        {
            rtLog.Invoke((MethodInvoker)delegate
            {
                rtLog.SelectionColor = color;
                rtLog.AppendText("[" + DateTime.Now.ToString("h:mm:ss tt") + "] : " + log + "\r\n");
            });
        }
c'est en invoke 2 fois il me semble
 
Dernière édition:
Haut Bas