Domanda

Ho scritto il mio LSP che sta lavorando bene. Tuttavia, non posso prendere dns query. Per esempio non esiste una funzione come WSPGetHostByName o WSPGetAddrInfo.

Il mio LSP supporta anche il protocollo UDP, ma non sta funzionando. Se corro nslookup da console (cmd.exe) sembra funzionare ma non posso cattura gethostbyname. Qualcuno sa come fare? Non credo che la scrittura NSP (Name Service Provider) è una soluzione. Ma potrei sbagliarmi.

Grazie

È stato utile?

Soluzione

Abbiamo sviluppato un LSP in grado di "intercettare" query DNS. L'unico modo per farlo è agganciando in tutte le funzioni DNS, tenere a mente ci sono alcune sfide è necessario risolvere:

  1. È necessario utilizzare una libreria di buon aggancio che supporterà sia il codice 32bit e 64bit.
  2. La licenza biblioteca deve essere giusto per la vostra applicazione, ci sono alcune librerie gratuite, ma possono essere utilizzati liberamente solo con i progetti liberi.
  3. Quando si collegare le funzioni, è necessario fare attenzione a non modificare alcuni valori che non sono basati su IP e rinviare la query alla funzione di vero e proprio.

Intercettare UDP non funziona in quanto le query stanno andando fuori dal client MS DNS, quindi a meno che si scrive un driver a basso livello come: TDI, NDIS o il PAM è necessario agganciare le funzioni (o scrivere un NSP). NSLookup funziona per voi perché crea il DNS si interroga.

Altri suggerimenti

La mia soluzione sarebbe la seguente:

  1. Prendere il noto browser web: firefox.exe

  2. copiarlo in un nuovo nome: icefoxy.exe

  3. modificare il file EXE in modo che caricare una DLL personalizzata.

Ho già fatto qualche mese fa, ma dal momento che Firefox è in costante ottenere aggiornamenti, che significa:

SIA: mantenere una versione e non fare di aggiornamento (a proprio rischio, può causare problemi di sicurezza in quanto questo significa che le vulnerabilità non saranno fissi)

O:. Aggiornare il vostro modifica ogni volta che cambia firefox.exe

La DLL può essere facilmente scritta utilizzando Delphi.

La modifica Firefox ha bisogno di assemblaggio lingua, a meno che non si sa come scaricare tutti i file necessari per compilare firefox te stesso, avere accesso a un / C ++ (probabilmente mingw-gcc) C, ed essere pronti al fatto che ci sono 2 reciprocamente standard esclusive di C ++, e se il vostro g ++ (parte della suite gcc) è incompatibile con il sorgente di Firefox, allora il vostro tentativo avrà esito negativo.

Non sono un esperto di C ++ me, così ho preso il (per me, almeno) percorso più semplice utilizzando il linguaggio macchina, in questo modo non ho bisogno di essere esperti di C / C ++ per ottenere il lavoro fatto.

Alcuni punti relativi:

  1. Quali funzioni deve essere agganciato ad intercettare l'accesso tutti di Firefox per server DNS (s)?

  2. Ho notato, che se si carica un DLL Delphi in Icefoxy.exe (una copia rinominata del Firefox.exe) poi i colori di un modulo Delphi sono mancanti, ad esempio. se si imposta (sia in oggetto ispector o in codice):

Label1.Color: = clLime;

si vede ancora un'etichetta senza colore di sfondo di calce. Non so il motivo esatto, ma sembra che Delphi VCL fa affidamento per essere utilizzato in un file EXE, e quando si utilizzano i componenti Delphi VCL all'interno di una DLL, invece di un file EXE, alcune cose (come ad esempio il colore) non funziona come previsto .

sarei felice di inviare il mio codice (entrambi Assembly Language modifiche Firefox e il codice sorgente Delphi DLL), ma come / dove posso post-it per cui è visibile pubblicamente?

Ho usato Delphi 7 per rendere la DLL.

se si utilizza Delphi 2009 o successivo, è necessario fare particolare attenzione che i dati String passati tra il codice Delphi e qualsiasi codice non-Delphi ha la codifica corretta, a causa del fatto che in Delphi 2009 e tutte le versioni più recenti, il tipo String è un alias per UnicodeString, dove nelle vecchie versioni di Delphi, il tipo String è un alias per AnsiString.

Al momento ho fatto questo, è stato solo un piccolo esperimento per scoprire se posso forzare Firefox per caricare la mia DLL inti il ??suo spazio di indirizzi del processo.

Un'altra idea interessante potrebbe essere quella di ottenere l'accesso al DOM (Document Object Model) di Firefox da una DLL Delphi, che darebbe un'alternativa di lavoro per utilizzare TWebBrowser (basata su ActiveX versione di Microsoft Internet Explorer).

So che ci sono stati i componenti come TWebBrowser basati su Firefox, ma il loro problema è che a nessuno importava di aggiornare loro per un tempo molto lungo, in modo che siano compatibili solo con alcune versioni molto vecchie di Firefox.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top