Code cave problem



  • Hi,
    hab ein programm, und da möchte ich über eine code cave eine dll einschleusen, und zwar damit diese die lösch methode überschreibt und mir das programm so löscht das es die dateien vorher überschreibt u. umbenennt.
    ( diesen ansatz nehme ich nur weil es mal was anderes ist als der normale globale hook !)

    004F432C    .  44 65 6C 5F 44 4C 4C 2E 64 >ASCII "Del_DLL.dll",0
    004F4338       00                          DB 00
    004F4339   /$  50                          PUSH EAX
    004F433A   |.  53                          PUSH EBX                                                  ;  kernel32.GetModuleHandleA
    004F433B   |.  68 2C434F00                 PUSH CCleaner.004F432C                                    ; /pModule = "Del_DLL.dll"
    004F4340   |.  8B1D 40524F00               MOV EBX,DWORD PTR DS:[<&KERNEL32.GetModuleHandleA>]       ; |kernel32.GetModuleHandleA
    004F4346   |.  FFD3                        CALL EBX                                                  ; \GetModuleHandleA
    004F4348   |.  85C0                        TEST EAX,EAX
    004F434A   |.  74 28                       JE SHORT CCleaner.004F4374
    004F434C   |.  90                          NOP
    004F434D   |.  90                          NOP
    004F434E   |.  90                          NOP
    004F434F   |.  90                          NOP
    004F4350   |.  50                          PUSH EAX
    004F4351   |.  8B1D 7C524F00               MOV EBX,DWORD PTR DS:[<&KERNEL32.LoadLibraryA>]           ;  kernel32.LoadLibraryA
    004F4357   |.  5B                          POP EBX                                                   ;  kernel32.GetProcessHeap
    004F4358   |.  58                          POP EAX                                                   ;  kernel32.GetProcessHeap
    004F4359   |.  EB 2F                       JMP SHORT CCleaner.004F438A
    004F435B   |.  44 6C 6C 20 6C 6F 61 64 69 >ASCII "Dll loading fail"
    004F436B   |.  65 64 00                    ASCII "ed",0
    004F436E   |.  45 72 72 6F 72 00           ASCII "Error",0
    004F4374   |>  6A 00                       PUSH 0                                                    ; /Style = MB_OK|MB_APPLMODAL
    004F4376   |.  68 6E434F00                 PUSH CCleaner.004F436E                                    ; |Title = "Error"
    004F437B   |.  68 5B434F00                 PUSH CCleaner.004F435B                                    ; |Text = "Dll loading failed"
    004F4380   |.  6A 00                       PUSH 0                                                    ; |hOwner = NULL
    004F4382   |.  8B1D BC534F00               MOV EBX,DWORD PTR DS:[<&USER32.MessageBoxA>]              ; |USER32.MessageBoxA
    004F4388   |.  FFD3                        CALL EBX                                                  ; \MessageBoxA
    004F438A   |>  5B                          POP EBX                                                   ;  kernel32.GetProcessHeap
    004F438B   |.  58                          POP EAX                                                   ;  kernel32.GetProcessHeap
    004F438C   |.  8B46 10                     MOV EAX,DWORD PTR DS:[ESI+10]
    004F438F   |.  8945 E0                     MOV [LOCAL.8],EAX
    004F4392   \.  C3                          RETN
    

    jetzt hab ich aber das problem das getmodule handle immer 00 00 00 00 liefert.

    :| dll ist 1x im system und 1x im programm ordner, ich weiß nicht so recht wieso es das macht.
    -- arg bin ich dämlich, nicht nur das getmodule handle nicht läuft, ich brauchs nicht, ich hab die ganze zeit daran gedacht --> GetProccAdress(GetModuleHandle(..),...);

    ... :|

    ... after fixing this little issue in mind, its working...


Anmelden zum Antworten