Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [c#]Scoglio insormontabile DLLMain
Forum - C# / VB.NET - [c#]Scoglio insormontabile DLLMain

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
und3r6r0und_ (Normal User)
Newbie


Messaggi: 14
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 19:13
Lunedì, 06/02/2012
Ri-Ciao a tutti...
purtroppo sono costretto a chiedervi di nuovo aiuto ^^
Sto passando al c# una mia vecchia applicazione scritta in c++,l'applicazione era molto buggosa e andava quasi ricoddata da 0,dato che il c++ lo detesto ho deciso di fare un "porting" in c#, nulla di strano, poco a poco ho fatto quasi tutto, tuttavia sono arivato a ricoddare una dll abbastanza corposa (NON voglio lasciarla in c++ perchè vorrebe dire sclerare poi a sistemarla) in cui ho usato l'api DLLMain([url=http://msdn.microsoft.com/en-us/library/windows/desktop/ms ...
è da quasi un mese che ci picchio la testa senza trovare qualcosa che in c# possa darmi gli stessi risultati....

Per darvi un esempio ecco il mio codice:

Codice sorgente - presumibilmente C++

  1. //DLLMain.cpp
  2. #include <stdafx.h>
  3. #include <windows.h>
  4. #include "Linker.h"
  5.  
  6. #pragma unmanaged
  7.  
  8. void WINAPI MyThread ( )
  9. {
  10. }
  11.  
  12.  BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID res){
  13.     switch ( dwReason ) {
  14.                case DLL_PROCESS_ATTACH:
  15.                         DisableThreadLibraryCalls(hModule);
  16.             if ( CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Main, NULL, 0, NULL) == NULL ) {
  17.                               return FALSE;
  18.             }
  19.  
  20.             break;
  21.  
  22.         case DLL_PROCESS_DETACH:
  23.             break;
  24.  
  25.         case DLL_THREAD_ATTACH:
  26.             break;
  27.  
  28.  }
  29.  
  30.  
  31.     return TRUE;
  32. }



spero in un'illuminazione divina :D

grazie 1000 in anticipo, siete grandi come al solito

und3r6r0und_

Ultima modifica effettuata da und3r6r0und_ il 06/02/2012 alle 19:17
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:13
Lunedì, 06/02/2012
La DLLMain NON è una API e non potrai mai inserirla nel tuo codice.

E' l'entry point delle DLL (è il codice eseguito dal sistema quando carica la DLL) e quindi sei proprio fuori strada ...

A cosa ti serve nel tuo codice? Il progetto C# che stai scrivendo è una DLL?


P.S. I termini "buggosa", "ricoddata" e "sclerare" fanno venire voglia di trasferire tutto in Ciaffo Zone ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
und3r6r0und_ (Normal User)
Newbie


Messaggi: 14
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 20:35
Lunedì, 06/02/2012
chiedo scusa per il linguaggio poco appropriato...
purtroppo è da veramente tanto che ci perdo tempo
comunque ok, fino all'entry point della dll ci sono, e l'applicazione è composta infatti da più eseguibili e più dll, la dll ha lo scopo di aggiungere dei componenti a uno degli eseguibili gia esistenti senza avviare un nuovo processo(ex aggiungere una nuova form con funzioni aggiuntive in stile plugin), questo l'ho ottenuto in c++ tramite il DLLMain (il codice l'ho trovato su internet e l'ho adattato alle mie esigenze... chiedo scusa se l'ho confuso con un api)
in c# non ho la piu pallida idea di come fare cio...
Dovrei essere stato un po' piu chiaro e spero di aver tenuto un linguaggio appropriato

und3r6r0und_

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:39
Lunedì, 06/02/2012
Devi creare una DLL con il C# (una Library) così come la creavi con il C++ e la referenzi nei progetti dove la utilizzi.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
und3r6r0und_ (Normal User)
Newbie


Messaggi: 14
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 20:52
Lunedì, 06/02/2012
mh... ok fino a qui ci sono, ma nel mio caso devo apportare modifiche al processo che è già avviato, ed è "esterno" alla mia applicazione, ossia su cui non posso intervenire da codice

forse sono io che sono un pò contorto ^^

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:10
Lunedì, 06/02/2012
Sì ... sei contorto.

Finché non spiegherai *esattamente* cosa cerchi di fare, non si capirà come (e se) si fa in C#.

E penso che tu non sia chiaro perché dietro c'è una qualche lamerata (mi dispiace ma sono sincero ...)


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
und3r6r0und_ (Normal User)
Newbie


Messaggi: 14
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 21:27
Lunedì, 06/02/2012
allora la risposta è ni, nel senso che: non è una lamerata in quanto non faccio nulla di illegale (anche perchè una lamerata è ctrl+v ctrl+c, io invece sto cercando di capire ciò che faccio), ma in altri forum ho messo le cose in chiaro e non mi hanno creduto, di conseguenza,imparando dai miei errori, ho deciso di stare sul vago.
l'applicazone in se mi deve permettere di scrivere le locazioni della memoria di un programma già avviato, non per fare lamerate ma per modificare il valore di alcuni dati mostrati a video, nelle applicazioni c++ usavo la read e la writeprocessmemory e con il passaggio in c# non ho avuto grandi problemi, il problema si è presentato all'entry point della dll
ho provato a creare un eseguibile e non una dll, tuttavia non modifica i dati richiesti

spero di essere stato abbastanza esauriente... e spero di non riceve altre accuse di lamering... so benissimo che questa è una pratica usata anche in alcuni virus, tuttavia può essere richiesta anche per altri motivi

l'applicazione posso assicurare che rientra nella piena legalità

und3r6r0und_

p.s. se ritieni che non è sicuro lasciare documentazione in giro possiamo parlare via p.m o via mail...

Ultima modifica effettuata da und3r6r0und_ il 06/02/2012 alle 21:31
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 23:33
Lunedì, 06/02/2012
è un tipico trainer o cheat per un videogioco, difficile da portare in C# se non sai molto bene come funziona o hai una solida base :)


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
und3r6r0und_ (Normal User)
Newbie


Messaggi: 14
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 9:55
Martedì, 07/02/2012
Grazie HeDo della risposta
Col motivo ci hai quasi pigliato, infatti come ho spiegato non è nulla di illegale, le mie conoscenze di c# sono quelle di unn autodidatta, tuttavia è da quasi 2 anni che ci programmo, quindi ritengo che ho una dscr3eta conoscenza del linguaggio
sapevo ceh era difficile, tuttavia speravo di trovare almeno della documentazione
saresti in grado di passarmela?

grazie in aticipo
und3r6r0und_

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo