|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Feb 2009
Messaggi: 18
|
[assembly]Verifica di un attach ad un exe.
Salve, sono nuovo e sto cercando aiuto per quanto riguarda l'assembly. Come il titolo anticipa vorrei sapere se è possibile verificare se un applicazione viene attaccata da un altro programma o almeno se il suo processo è attivo e corretto...
Quindi è possibile riuscire a scoprire se un'applicazione è soggetta ad hackeraggio?!???Se si, come?? Grazie per il vostro aiuto, questo forum è stupendo! Saluti, Gianluca |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
dipende da che intendi, e comunque di certo non lo si fa in assembly...
|
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Nov 2002
Messaggi: 262
|
Quote:
Nel dos se ne occupava lo INT 21. Ti consiglio di guardare una vecchia bibbia per i programmatori: HelpPC Reference Library. Una cosa che puoi fare è verificare se il crc del tuo eseguibile è cambiato o agganciarti alle routine di cui ti parlavo per controllare intrusioni. PS è un bordello di anni che non uso più queste cose e programmavamo sotto DOS che non ti faceva tante storie, oggi fare certe cose è molto più difficile perché il SO tende a non permettere certi giochetti. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se non ci dici nemmeno il sistema operativo è impossibile risponderti.
|
![]() |
![]() |
![]() |
#5 | ||||
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
e aggiorniamoci ogni tanto ![]() Quote:
http://msdn.microsoft.com/en-us/library/default.aspx Quote:
Quote:
|
||||
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Nov 2002
Messaggi: 262
|
Ma t'è venuto il ciclo??
Ho solo dato una info di quel poco che ricordo delle superiori (come subito dichiarato in apertura del mio post) visto che nessuno gli rispondeva. Il dire "fa troppe storie" non era una critica verso windows era anzi il contrario, visto che ho detto che DOS ti permetteva le peggio zozzate. Cmq polemiche a parte, hai ragione ho scordato di nominare le API Win32 el MSDN perché è una vita che "purtroppo" lavoro in java quindi non c'ho proprio pensato. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
no, ho solo trovato esilaranti i reperti archeologici che hai tirato fuori dalle nostre memorie
![]() DOS, INT 21H, quell'altra guida vecchia di decenni... ![]() edit - cioé scusa eh, leggendo la prima riga del tuo post tu veramente avevi intenzione di richiamare un'interrupt per leggere o scrivere su un file...? ![]() |
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Nov 2002
Messaggi: 262
|
Quote:
![]() ![]() ![]() Reperti si ma io con quelli ho cominciato, e sai bene che nell'informatica bastano pochi anni per stravolgere tutto. Aggiungici che da noi i PC migliori (all'epoca i 386/486 al 5°) non ce li davano, quindi 8086 e 8088 a gogo!!! ![]() ![]() ![]() Beh è una vita che non uso più una riga di assembly, ma all'epoca c'abbiamo fatto di tutto fidati. Certo oggi è follia farlo, ma come puoi vedere http://www.uv.tietgen.dk/staff/mlha/...T/21/index.htm i servizi per farlo ce li hai (come mi fai notrare giustamente "avevi" tutti) Visto che la domanda era relativa all'assembly ho pensato che stesse studiando per la scuola e mi sono attentuto al tema..... E poi toccami tutto ma non l'HelpPc, la Bibbia di Peter Norton e le PC Tools ![]() ![]() Scherzi a parte deduco che sei esperto nel settore, potresti spiegargli come realizzare un listener su un file utilizzando le Api Win32 (sono curioso anche io), così aiutiamo qualcuno e finiamo il flame ![]() |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
un listener in che senso? per essere notificati di modifiche ad un ramo di filesystem ci sono queste API:
http://msdn.microsoft.com/en-us/library/aa364417.aspx http://msdn.microsoft.com/en-us/libr...27(VS.85).aspx http://msdn.microsoft.com/en-us/libr...14(VS.85).aspx mentre per avere notifica di una semplice lettura credo che non ci siano altri modi se non installare un filesystem filter o impostare un audit. ma non so se queste soluzioni siano pertinenti o meno alla richiesta finché DragorossoV2 non chiarisce meglio quello che vuole ottenere. |
![]() |
![]() |
![]() |
#10 |
Junior Member
Iscritto dal: Feb 2009
Messaggi: 18
|
Allora, il mio problema è questo:
Io devo prevenire l'hacking da parte di cheat engine e cose simili che si attaccano all'eseguibile e tramite il memory viewer guardano e modificano le stringhe. Vorrei sapere se è possibile accorgersi che ciò stia avvenendo e in quel momento far killare l'esecuzione del programma.. Grazie per avermi risposto ma non sono stato a casa mi dispiace se ci ho messo tempo.. una soluzione alternativa sarebbe quella di rendere invisibile il client.exe al task manager o meglio toglierlo dal PID qui c'è il codice in VB per fare ciò e mi servirebbe in assembly perchè devo iniettarlo in un exe usando un debugger Private Declare Function RegisterServiceProcess Lib _ "kernel32.dll" (ByVal dwProcessId As Long, _ ByVal dwType As Long) As Long '' ' ''The GetCurrentProcessId function returns the process identifier of the calling process. Private Declare Function GetCurrentProcessId Lib _ "kernel32.dll" () As Long RegisterServiceProcess GetCurrentProcessId, 0 App.TaskVisible = False Se qualcuno può aiutarmi gli sarei eternamente grato. Qui ho un link con un altro codice: http://www.programmers-corner.com/viewSource.php/72 Ultima modifica di DragorossoV2 : 12-02-2009 alle 15:47. |
![]() |
![]() |
![]() |
#11 | ||||
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Quote:
Quote:
Quote:
|
||||
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non credo che esista un metodo valido per proteggersi da una DLL injection.
Dalla modifica dei dati invece qualcosa si può studiare, almeno per rendere la cosa più complicata. Potresti ad esempio creare un altro processo che tiene traccia delle modifiche fatte ai dati più sensibili: - ogni N volte che leggi i dati sensibili ti calcoli un hash, prima di tutto verifichi che l'hash sia lo stesso calcolato l'ultima volta, lo invii all'altro processo insieme ad un numero casuale (generato con un generatore random serio personalizzato), se la risposta non avviene entro un termine molto stretto (30-100 ms) abortisci l'esecuzione. L'altro processo verifica l'hash (memorizzato precedentemente) e ti risponde con l'hash stesso ed il numero successivo della sequenza generata dal generatore random. Ovviamente tu verifichi sia l'hash che il numero successivo della sequenza random. - ogni volta che devi scrivere il valore: fai la stessa cosa di sopra verificando che il valore attuale sia corretto, ma in più, oltre a hash e numero casuale, invii anche il nuovo valore da scrivere (che l'altro processo memorizzerà). A questo punto scrivi il valore in memoria. Ti calcoli il nuovo hash ed invii hash, numero casuale, nuovo valore all'altro processo. L'altro processo salverà il nuovo hash, ti risponderà con hash, numero casuale successivo e nuovo valore (ovviamente entrambi i processi dovranno verificare questi dati) In ogni momento, ad ogni verifica non conclusa positivamente, il processo di verifica non risponde e quindi di conseguenza fa abortire il processo principale. Quindi l'unico modo per fare un cheat è andare a crackare il programma...ma qui non puoi veramente fare altro. Certo crackare un programma è più complesso di usare un memory viewer ![]() |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
l'hooking delle tre funzioni dell'api postate da fero86 è l'unico modo per prevenire quel genere di "intrusione"
|
![]() |
![]() |
![]() |
#14 |
Junior Member
Iscritto dal: Feb 2009
Messaggi: 2
|
Scusate l'intrusione, mi presento sono Lorenzo e io e Drago collaboriamo allo stesso progetto.
Vorrei innanzitutto rigraziare per le vostre risposte e scusarmi se siamo stati alquanto imprecisi in alcuni concetti. Abbiamo postato quei sorgenti al solo scopo di capire come si facesse un hide del processo, nn voleva assolutamente essere una dichiarazione di conoscenza ma piuttosto il contrario, leggendo alcune documentazioni mi rendo conto che nei sistemi NT nn è piu possibile farlo...almeno nn in quella maniera. Per quanto riguarda l'hooking di funzioni putroppo anche quella nn è una soluzione in quanto esistono degli "unhooker" di pubblico dominio che praticamente ricostruiscono tutte le funzioni hookate in un click. ( li puo usare qualsiasi utente) Invece mi sembra alquanto valida la soluzione di Cionci anche se piuttosto complessa ( sarebbe apprezzato un contatto diretto ) Avrei il piacere di capire come utilizzare un programa esterno ( ES. compilato in C o Delphi o altri) per moddare un exe...in quanto noi stiamo lavorando direttamente sull'exe utilizzando "ollydbg" per modificarlo e nn abbiamo assolutamente il sorgente. Per ora la nostra soluzione è abbastanza spartana possiamo bloccare programmi conosciuti per editare la memoria semplicemente controllando se esistono stringhe che solitamente questi programmi usano e nel caso crashamo l'applicazione.(praticamente una black list) E' ovvio che si tratti di uno shield non definitivo e assolutamente insufficiente. La nostra primissima idea era proprio quella di creare un guard che controllasse il programma e che a sua volta il programma controllasse il guard ( ovvio che esiste la possibilita di bypassare anche questo sistema, ma sicuro renderebbe la vita difficile almeno a chi nn sa usare un debugger). Finisco ringraziando ancora per gli interventi fatti, con la speranza di avere un aiuto da chi magari è piu esperto in queste situazioni. Ultima modifica di Lorenzo_RANX : 12-02-2009 alle 19:23. |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
![]() |
#16 |
Junior Member
Iscritto dal: Feb 2009
Messaggi: 2
|
Il programma nn ha piu alcuna licenza attiva il game è praticamente morto ufficialmente, addirittura la casa che lo ha programmato nn esiste piu.
Ma c'è una cerchia di appassionati che ancora lo segue...es noi. Ke sia assolutamente legale... nn saprei, ma di fatto il server esiste e non è l'unico server in circolazione. Del resto evito di nominarlo proprio per nn creare sensazione di spamming o problemi al forum stesso, cio che interesserebbe di piu è studiare una soluzione al problema posto. In ogni caso se pensi che questo sia al difuori degli scopi di questo forum o violi alcune delle regole.... beh non possiamo far altro che accettarne la chiusura. P.S. Ovviamente spero nn sia il caso :P Ultima modifica di Lorenzo_RANX : 12-02-2009 alle 19:56. |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
mi é venuto in mente che forse questo potrebbe aiutarvi:
http://msdn.microsoft.com/en-us/libr...49(VS.85).aspx non so se é ragionevole nel vostro caso, ma potreste mettere un guard a tutte le pagine che in un dato momento il programma non ha bisogno di modificare, cosi qualunque modifica causerebbe il crash del processo. ma vale sempre la solita storia: potete rendere l'impresa piu difficile, ma non impossibile; l'hacker di turno non ci mette nulla a scoprire l'inghippo e a togliere manualmente il guard. |
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
![]()
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:04.