Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 16 bis 30 von 50

Thema: eJay Dll Reversing

  1. #16
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    402
    Renommee
    270

    Re: eJay Dll Reversing

    hmm, ok, sieht ja schon mal gut aus... du könntest dir noch testweise eine konsole spawnen.

    in der W2P() gibts nämlich ein printf():
    Code:
    printf("PXD2Wav Konvertierung: %s -> %s", *(stringTable + 1), *(stringTable + 2));
    weiß nur, wie das in c geht (könnte dir dann eine .dll erstellen).

  2. #17
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    du wirst lachen, genau das versuch ich gerade
    google ist da nit sehr hilfreich wie man printf einer dll in delphi bekommt.
    soll aber nicht so einfach sein in delphi eine c dll zu nutzen.
    wenn ich das im pe-explorer richtig sehe, ist die dll mit visual c geschrieben.

    ich seh schon, fang gleich neu an in c++

  3. #18
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    402
    Renommee
    270

    Re: eJay Dll Reversing

    Zitat Zitat von HobbyCoder Beitrag anzeigen
    soll aber nicht so einfach sein in delphi eine c dll zu nutzen.
    das machst du doch schon die ganze zeit. ^^

  4. #19
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    meinte damit printf z.b. zu bekommen^^

    ich glaub das nennt sich callback, leider noch nicht sehr erfolgreich gewesen was das betrifft.
    wird wohl noch ne lange nacht

  5. #20
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    mal ne blöde frage...

    Code:
    int __cdecl W2P(int numberGreaterEqualThree, char **fromTo)
    kommt hier eine stringtable an ?

    Code:
    int __cdecl W2P_0(int numberGreaterEqualThree, char **stringTable)
    oder wird die erst ab hier erstellt ?

    wenn ich 3 und ein array an die funktion schicke, hab ich den eindruck der nimmt nur 1 wert aus dem array

    wenn ich 3 und einen string mit "input.pxd output.pxd" = crash
    wenn ich 3 und 2 strings schicke = crash
    wenn ich 3 und ne stringtable schicke = crash

    kann man irgendwie ersehen in welcher form ich die filenamen an die funktion übergeben muss ?

  6. #21
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    402
    Renommee
    270

    Re: eJay Dll Reversing

    die cpp-version:

    Code:
    #include <stdio.h>
    #include <windows.h>
    #include <direct.h>
    
    typedef int (__cdecl *W2P)(int, char **);
    typedef int (__cdecl *PINIT)();
    typedef int (__stdcall *AINIT)();
    typedef int (__stdcall *ALOAD)(char *);
    
    int main()
    {
    	W2P w2p;
    	PINIT PInit;
    	AINIT AInit;
    	ALOAD ALoad;
    
    	_chdir("Z:\\pxd2wav");
    	HMODULE dll = LoadLibrary("PXD32D5.DLL");
    
    	w2p = (W2P) GetProcAddress(dll, "W2P");
    	PInit = (PINIT) GetProcAddress(dll, "PInit");
    	AInit = (AINIT) GetProcAddress(dll, "AInit");
    	ALoad = (ALOAD) GetProcAddress(dll, "ALoad");
    
    	char *table[] = {NULL, "testfile.pxd", "output.wav"};
    
    	PInit();
    	AInit();
    	ALoad("testfile.pxd");
    	w2p(3, table);
    
    	getchar();
    	return 1;
    }
    ALoad() ist nur rumspielerei... hat nichts gebracht.

    zu deiner stringtable-frage... die wird nirgends "erstellt". das ist einfach nur eine adresse, welche andere adressen (die der strings) enthält. und die adresse wird einfach bei W2P() durchgereicht.

    output vom programm:
    Code:
    PXD2Wav Konvertierung: testfile.pxd -> output.wav
    läuft also richtig.

    hab mir noch n paar andere funktionen angeschaut und tmp-dateien gefunden, die direkt in c:\ erstellt werden. vielleicht will W2P() ja diese .tmp-dateien?

    RWavToTemp() gibt es ja auch...

    naja, hab ansonsten auch keine ahnung mehr...

  7. #22
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    ach cool du bist auch noch unterwegs
    danke schön das du nun auch ein beispiel geschrieben hast!!


    hab mittlerweile nun auch in c++ gemacht:
    Code:
    //---------------------------------------------------------------------------
    #include <iostream>
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       HINSTANCE hGetProcIDDLL = LoadLibrary("pxd2wav.dll");
       FARPROC lpfnGetProcessID = GetProcAddress(HMODULE (hGetProcIDDLL),"W2P");
    
       /*  PInit Aufrufen  */
       typedef int (__stdcall * PInit_FUNC)(int);
       PInit_FUNC PInit;
       PInit = PInit_FUNC(lpfnGetProcessID);
       PInit(0);
    
       /*  W2P Aufrufen  */
       char *Files[] = {NULL, "testfile.pxd", "test.wav"};
    
       typedef int (__stdcall * W2P_FUNC)(int,char **);
       W2P_FUNC W2P;
       W2P = W2P_FUNC(lpfnGetProcessID);
       int intMyReturnVal = W2P(3, Files);
       label1 -> Caption = intMyReturnVal;
    
    
       FreeLibrary(hGetProcIDDLL);
    }
    //---------------------------------------------------------------------------
    bringt aber auch nur ne 1kb wav

    an der pxd2wav.exe kannst du durch decompilieren nicht zufällig sehen was der coder da alles startet ?

  8. #23
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    402
    Renommee
    270

    Re: eJay Dll Reversing

    also wenn man wollte, könnte man es natürlich... aber das braucht dann schon entsprechend viel zeitaufwand (viiiiel zeit ^^).

    "kauf" dir einfach mal den ida+decompiler (http://www.hex-rays.com/decompiler.shtml).

    das ding ist echt geil...

  9. #24
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    von ida hab ich mir gestern die demo runtergeladen.
    sah auf alle fälle nach besserem asm aus, als mit dem pe-explorer.
    hex-rays scheinen das ganze ja noch ein wenig lesbarer umzuwandeln, mal gleich weiterlesen

    mal schauen, um 8 steht meine freundin auf...das gibt wieder gemecker
    denke mal am we werd ich dann nicht mehr zum coden kommen.

    aber macht doch echt spaß, auch wenn nix brauchbares bisher rausgekommen ist!

  10. #25
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    achso, damit der ne wav speichert muss der aufruf aber so sein:
    Code:
    char *table[] = {"1test.pxd", "test.wav", "test.wav"};
    bekomme nur nicht wie du die ausgabe lesbar zurück, werd mal deins antesten

  11. #26
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    aber da du ja c kannst, vieleicht wirst du hier schlauer ?
    Code:
    //--------------------------------------------------------------------------- 
    #include <stdio.h> 
    #include <vcl.h> 
    #pragma hdrstop 
    //--------------------------------------------------------------------------- 
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) 
    { 
    try 
    { 
    Application->Initialize(); 
    
    if(_argc!=3) return 1; 
    AnsiString Pxd=AnsiString(_argv[1]); 
    AnsiString Wav=AnsiString(_argv[2]); 
    char w[100]; 
    char p[100]; 
    DWORD conv=3; 
    typedef VOID (*MYPROC1)(void); 
    typedef VOID (*MYPROC2)(char*,char*,int,int,int,int,int); 
    MYPROC1 p1,p3; 
    MYPROC2 p2; 
    BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; 
    HINSTANCE hinstLib; 
    strcpy(p,Pxd.c_str()); 
    strcpy(w,Wav.c_str()); 
    hinstLib = LoadLibrary("pxd32d5.dll"); 
    if (hinstLib != NULL) 
    { 
    p1 = (MYPROC1) 0x10022318; 
    (p1) (); 
    p2 = (MYPROC2) 0x10020290; 
    memcpy((void*) 0x10096cd8, &conv,4); 
    (p2) (p,w,0,NULL,0,0,0);
    p3 = (MYPROC1) 0x10022339; 
    (p3) (); 
    fFreeResult = FreeLibrary(hinstLib); 
    } 
    else printf("Dont link Library\n"); 
    
    
    } 
    catch (Exception &exception) 
    { 
    Application->ShowException(&exception); 
    } 
    catch (...) 
    { 
    try 
    { 
    throw Exception(""); 
    } 
    catch (Exception &exception) 
    { 
    Application->ShowException(&exception); 
    } 
    } 
    return 0; 
    } 
    //--------------------------------------------------------------------------- 
    Working well? Try pxd32d5.dll from danceEjay4 (size 348160)
    das soll funktionieren, anbei auch die passende dll als anhang.
    wenn ich das mit ner batch aufrufe, crasht erstmal alles:
    Project1.exe 1test.pxd 1test.wav

    ich seh nur nicht wo der da die w2p aufruft
    Angehängte Dateien Angehängte Dateien
    Geändert von HobbyCoder (12.02.2011 um 06:17 Uhr) Grund: dll vergessen..

  12. #27
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    aha, so langsam kommen wir dem ende endgegen
    also in dem source sind ja paar aufrufe mit hex code.
    hab mal im pe-explorer an die stellen geschaut was da steht:
    Code:
    10022318 = PInit
    10020290 = RWavToTemp
    10096cd8 = L10096cd8 (alles rot)
    10022339 = PClose
    sehr krass...nix von W2P zu sehen und ich teste nun mal in der reihenfolge mit seinen definitionen.

  13. #28
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    so habs
    scheint 2 wege zu geben aus ner pxd ne wav zu machen.

    die W2P erstellt zumindest ne 1kb wav mit richtigem header.
    die funktionen aus dem source oben erstellen ne wav die dann auch wirklich eine ist, sie hat nur keinen header und winamp meckert *lol*

    hab mit nem hex editor dann mal den header aus der 1kb datei in die 2te wave geschrieben und das funzt.

    1.also endweder rausfinden wie und wo die W2P zum einsatz kommt
    2. oder in die erstellte wav einen neuen header schreiben
    3.in die neue wav einfach den HEX code des headers schreiben (ersten 27 zeichen ersetzen)

    bekomme gerad mecker, poste den source dann heute mittag -.-

  14. #29
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    402
    Renommee
    270

    Re: eJay Dll Reversing

    sehr nice.

  15. #30
    Registered User
    Registriert seit
    Feb 2011
    Beiträge
    26
    Renommee
    28

    Re: eJay Dll Reversing

    hier der source, nach deiner vorlage erstellt
    Code:
    #include <stdio.h>
    #include <windows.h>
    #include <direct.h>
    #include <vcl.h>
    
    typedef int (__cdecl *PINIT_FUNC)();
    typedef int (__cdecl *RWAVTOTEMP_FUNC)(char*,char*,int,int,int,int,int);
    typedef int (__cdecl *PCLOSE_FUNC)();
    
    typedef int (__cdecl *W2P_FUNC)(int,char**);
    
    int main()
    {
            /* -- WERTE ZUM AUFRUF DER FUNKTIONEN -- */
            DWORD conv=3;
    
            char *PXD = "1test.pxd";
            char *WAV = "1test.wav";
            char *TMP = "1test.tmp";
    
            char  *table[]={"NULL",TMP,WAV};
    
    
            /* ------------ FUNCTIONEN --------------*/
            W2P_FUNC W2P;
    	PINIT_FUNC PInit;
    	RWAVTOTEMP_FUNC RWavToTemp;
    	PCLOSE_FUNC PClose;
    
    
            /* ----------- DLL AUFRUFEN -------------*/
    	HMODULE hinstLib = LoadLibrary("pxd2wav.dll");
            if (hinstLib != NULL)
            {
    
            /* ----- PROCESS ADRESSEN BEKOMMEN ----- */
    	PInit = (PINIT_FUNC) GetProcAddress(hinstLib, "PInit");
            W2P = (W2P_FUNC) GetProcAddress(hinstLib, "W2P");
    	RWavToTemp = (RWAVTOTEMP_FUNC) GetProcAddress(hinstLib, "RWavToTemp");
    	PClose = (PCLOSE_FUNC) GetProcAddress(hinstLib, "PClose");
    
            /* ---------- PROCESS AUFRUFEN --------- */
    
    	PInit();
    
            /*   RAW WAV FILE */
            printf("Erstelle TempFile...\n");
            memcpy((void*) 0x10096cd8, &conv,4);
            RWavToTemp(PXD,TMP,0,NULL,0,0,0);
    
    
            /*   crash weil table nicht geht
            W2P(3,table);
            */
    
    
            PClose();
    
            Sleep(1500);
    	return 1;
            }
            else printf("Dont link Library\n");
            Sleep(1000);
    
    }
    ein problem gibt es aber mit deiner art die "table" zu erstellen.
    der füllt da andere zeichen rein
    siehste derzeit, wenn du dann "DWORD conv=3;" unter "char *table[]={"NULL",TMP,WAV};" schreibst das.
    aber auch nur soweit das er einen dateinamen von selber nimmt, egal was du in die table einfügst.
    kannst dann mal in der "table" den wert "tmp" gegen "WAV" oder "PXD" austauschen.
    der nimmt nach wie vor zum kopieren TMP.

    also noch nit 100% gelöst und werd mir das denk morgen noch mal genauer anschauen.

    vielen dank für deine hilfe!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. NEWBIEZ - Deutsches Reversing Forum
    Von Codecave im Forum Good Sites & Services
    Antworten: 7
    Letzter Beitrag: 25.10.2009, 02:05
  2. Suche Forum mit Hauptthema Reversing/Patching
    Von gruena im Forum Board Lounge
    Antworten: 6
    Letzter Beitrag: 06.08.2009, 17:08
  3. [Reversing algorithms] Well known numbers.
    Von nait im Forum Reverse Engineering
    Antworten: 3
    Letzter Beitrag: 11.02.2008, 21:53
  4. Reversing: Secrets of Reverse Engineering
    Von Boardleitung im Forum Buch Tipp
    Antworten: 2
    Letzter Beitrag: 14.04.2006, 22:20
  5. Keygen oder Patch für Dance eJay 2
    Von barnedarke im Forum Reverse Engineering
    Antworten: 2
    Letzter Beitrag: 03.07.2002, 19:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •