Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21

    [C#] Chiarimenti iniezione DLL

    Ciao a tutti...
    Quando ero agli inizi col c# ( e quindi ancora adesso ) mi è stato detto che è impossibile iniettare una DLL in C#, tuttavia tempo fa in un forum inglese ho trovato un frammento di codice che smentiva questa cosa... purtroppo ai tempi non potevo apprezzarne l'utilità e quindi non l'ho minimamente cagato ... ora non riesco piu a ritrovarlo, quindi ora vorrei sapere se qualcuno sapesse darmi qualche chiarimento... in c# che io sappia non è possibile fare chiamate dirette alle api di win32 e alle DirectX , di conseguenza non penso sia possibile relizzarlo.. o esiste qualche altro metodo?

    grazie in anticipo a chi risponderà

    Alex

    p.s. credo si usasse questo metodo... ma magari èuna stronzata assurda

    http://www.codinginstinct.com/2008/0...erevisted.html

  2. #2
    Io uso VB.NET, ma essendo basati sullo stesso framework direi che le cose che hai detto si possono tranquillamente fare.
    Per librerie esterne al framework (comprese quelle di sistema, per utilizzare le API) esiste una tecnica chiamata Platform Invoke qui esaurientemente spiegata:
    http://totemslair.org/guide/viewchap...guida=vb&id=90
    Se volessi usare le DirectX invece basta tranquillamente importarle nei riferimenti (esperienza personale )

    Spero di aver chiarito i tuoi dubbi,
    Ciao
    Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
    Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
    >>>Visita il mio blog<<<

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21
    intanto grazie 1000 della risposta

    per le DirectX sono quasi sicuro che non sia cosi semplice :P per il platform invoke ora gli do un occhiata esaurienti come al solito , grazie ancora

    Alex

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21
    mh.... ok grazie 1000 ci sono quasi... ho un problemino qui:

    codice:
                Process[] TargetProcess = Process.GetProcessesByName(Proc.Text);
                TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, false, TargetProcess[0].Id/*.ToString()*/);
    mi da l'errore imposibile convertire da IntPtr a int.... so che è una cazzata ma a quest'ora nn mi funziona piu la crapa ^^ se riuscite a darmi una mano mi fate un gran favore

    codice:
            [DllImport("kernel32.dll")]
            public static extern IntPtr OpenProcess(
                int dwDesiredAccess,
                bool bInheritHandle,
                int dwProcessId);
    codice:
            public const int PROCESS_CREATE_THREAD = (0x2);
            public const int PROCESS_VM_OPERATION = (0x8);
            public const int PROCESS_VM_WRITE = (0x20);

  5. #5
    Devi lavorare coi processi?
    C'è una classe Process apposta >_> se non sbaglio tenti di aprire un processo, basta
    codice:
    Process.Start(path_exe)
    Con il codice che hai postato non saprei aiutarti perchè 1. non mi intendo troppo di Platform Invoke 2. non conosco le API di windows

    In quanto a DirectX, io ho scaricato DirectX e poi ho importato la dll Microsoft.DirectX.DirectInput (quella che mi serviva a me, ma importane un'altra se te ne serve un'altra ) nei riferimenti
    Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
    Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
    >>>Visita il mio blog<<<

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21
    ok grazie, ti spiego il problema... io sto imparando ora le funzioni write processmemory e readproces memory, quindi per "aprire" il processo necessito purtroppo di quel sistema... per le DirectX appena finisco di cimentarmi con le API magari provo anche cosi
    ti ringrazio conunque per l'aiuto che mi hai dato, adesso da "lucido" ci ridò un occhiata

    se poi trovo l'errore lo posto in modo da lasciarlo per i posteri

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21
    risolto <.<
    semplicemente nn capivo perchè guardavo dalla parte sbagliata ^^
    il mio codice era scritto cosi

    codice:
    private int TargetProcessHandle;
    ma è errato, in quanto andava messo come puntatore

    codice:
    private IntPtr TargetProcessHandle;
    credo si possa chiudere ho messo il perchè dell'errore nel caso esca a qualcun altro

  8. #8
    Ottimo
    Auguri con le DirectX, ciao
    Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
    Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
    >>>Visita il mio blog<<<

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.