que tal esta seccion parece no muy activa pero igual lanzo mi problema
estoy intentando crear un troyano muy basico con keyloger y filemanager
en el popmenu del listwiev estan los dos caption qu me lanzan a las 2 ventanas en una el keylog y otra el filemanager sigiendo el source de coolvibes envio la conexion a la ventana del item

Código: Seleccionar todo

//Enviarle la conexión a la ventana de ese item, si la tiene
         if item.SubItems.Objects[1]<> nil   then
       (item.SubItems.Objects[1] as Tkeylog).OnRead(Socket);

         if item.SubItems.Objects[2]<> nil   then
       (item.SubItems.Objects[2] as Tfilemanager).OnRead(Socket);
        end;
       end; 
pero los datos del filemanager caen en tkeylog, entonces como podira enviar la conexion a las 2 ventanas ?
paresco malo ,pero soy bueno
No estoy entendiendo muy bien lo que decís, pero acá va una idea.
Estás usando una colección de objetos (item.SubItems.Objects[X]). Pero, si tenés solamente 2 ventanas/objetos, estás usando índices fuera de rango. Es decir, la colección empieza con el índice 0 (en algunos casos no, pero me parece que esta no es la excepción). Si le envías datos al índice 2 en realidad no estás teniendo conexión con nada, porque tus índices son 0 y 1.
Sería algo así:

Código: Seleccionar todo

//Enviarle la conexión a la ventana de ese item, si la tiene
         if item.SubItems.Objects[0]<> nil   then
       (item.SubItems.Objects[0] as Tkeylog).OnRead(Socket);

         if item.SubItems.Objects[1]<> nil   then
       (item.SubItems.Objects[1] as Tfilemanager).OnRead(Socket);
        end;
       end;
Saludos!!
el tema es que como indice cero esta Socket.Handle

Código: Seleccionar todo


  lis := ListView1.Items.Add;
  with lis do
     begin
      Caption:= IntToStr(Socket.SocketHandle);
      SubItems.Add(socket.RemoteAddress +' / ' +socket.RemoteHost);
      SubItems.Add('');
      SubItems.Add('');
      SubItems.Add('');
      SubItems.Add('');
      SubItems.Add('');
      SubItems.Add('');
        keylog := Tkeylog.Create(self, socket);
       filemanager := Tfilemanager.Create(self, socket);
       SubItems.Objects[0] := TObject(Socket.Handle);
       SubItems.Objects[2] := keylog;
       SubItems.Objects[3] := filemanager;
end;
igual voy a rever todo ya que estoy muy acelerado llevo como un mes con esto y me doy cuenta que me falta el 95% de conocimiento ya que a una simple conexion de listwiev no puedo asignarle 2 ventanas(o quisas no se pueda) muchas gracias por haber respondido brunobsso.
paresco malo ,pero soy bueno
muy ofuscado, fijate esto:

Código: Seleccionar todo

if item.SubItems.Objects[2]<> nil then //USANDO OBJETO EN INDICE 2
  (item.SubItems.Objects[2] as Tfilemanager).OnRead(Socket);
//CASTEANDO OBJETO DE INDICE 2 COMO Tfilenamanger

Código: Seleccionar todo

SubItems.Objects[0] := TObject(Socket.Handle);
SubItems.Objects[2] := keylog; //ASIGNANDO un Tkeylog AL OBJETO EN INDICE 2
SubItems.Objects[3] := filemanager;
¿Será eso tal vez?
Saludos!
Responder

Volver a “Delphi”