Oppure

Loading
06/02/12 18:13
und3r6r0und_
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=msdn.microsoft.com/en-us/library/windows/desktop/…(v=vs.85).aspx/)
è 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:

//DLLMain.cpp
#include <stdafx.h>
#include <windows.h>
#include "Linker.h" 

#pragma unmanaged

void WINAPI MyThread ( )
{
}
 
 BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID res){
    switch ( dwReason ) {
               case DLL_PROCESS_ATTACH:
                        DisableThreadLibraryCalls(hModule);
            if ( CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Main, NULL, 0, NULL) == NULL ) {
                              return FALSE;
            }
 
            break;
 
        case DLL_PROCESS_DETACH:
            break;
 
        case DLL_THREAD_ATTACH:
            break;
 
 }
 
 
    return TRUE;
}


spero in un'illuminazione divina :D

grazie 1000 in anticipo, siete grandi come al solito

und3r6r0und_
Ultima modifica effettuata da und3r6r0und_ 06/02/12 18:17
aaa
06/02/12 19:13
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 ...
06/02/12 19:35
und3r6r0und_
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_
aaa
06/02/12 19:39
Devi creare una DLL con il C# (una Library) così come la creavi con il C++ e la referenzi nei progetti dove la utilizzi.
06/02/12 19:52
und3r6r0und_
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 ^^
aaa
06/02/12 20:10
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 ...)
06/02/12 20:27
und3r6r0und_
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_ 06/02/12 20:31
aaa
06/02/12 22:33
HeDo
è 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 :)
aaa