Ergebnis 1 bis 2 von 2
  1. #1
    Duck and Cover Avatar von $_staX
    Registriert seit
    27.07.2008
    Beiträge
    294

    Standard [Asm] Suche Readfile erklärung

    Hey asm coder,
    Ich suche ein Codebeispiel, in dem zum Beispiel Datei test.txt. gelesen wird und überprüft wird ob sie z.B. 8 Bytes Inhalt hat, die Buchstaben nach Wert überprüfen kann ich dann selbst. Am besten wäre es wenn es für masm passen würde, da ich im Internet nur Codebeispiele für das einlesen der Dateien mit Interrupts also nicht mehr soooo aktuell
    In win32.hlp hab ich gelesen, dass es die Möglichkeit gibt, die Datei per Readfile einzulesen, ich weiß aber nicht wie ich es verwenden muss.
    Also könnte mir jemand ein Codebeispiel zeigen für masm wo die Datei test.txt eingelesen wird und überprüft wird ob sie 8Bytes Inhalt hat.

    Keiner?
    Geändert von $_staX (09.05.2009 um 17:35 Uhr) Grund: Automerged Doublepost

    First you duck and then you cover!
    #

  2. #2
    OpCodeKiddy Avatar von EBFE
    Registriert seit
    30.03.2009
    Beiträge
    442

    Standard

    Code:
    invoke CreateFile,path,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0
        cmp eax,INVALID_HANDLE_VALUE
        jne @f
            .data
               error_open_target db "Konnte Zieldatei nicht öffnen!",0
            .code
            invoke MessageBox,0,offset error_open_target,0,MB_ICONERROR        
            ret
        @@:
        mov file_handle,eax
        invoke GetFileSize,file_handle,0
        mov file_size,eax
       
        invoke VirtualAlloc,0,file_size,MEM_COMMIT,PAGE_READWRITE
        mov p_mem,eax
        test eax,eax
        jnz @f        
            invoke MessageBox,0,offset error_memalloc_target,0,MB_ICONERROR
            jmp closefile
        @@:
        
        invoke ReadFile,file_handle,p_mem,file_size,addr temp,0
        test eax,eax
        jnz @f
            .data
               error_reading_target db "Konnte Zieldatei nicht lesen!",0
            .code
            invoke MessageBox,0,offset error_reading_target,0,MB_ICONERROR
            jmp freemem
        @@:
    so, nun findest du an Adresse, die in p_mem festgehalten wird, den Inhalt der Datei.
    bsp, was man damit dann machen kann:
    Code:
    ;so, nun Datei lesen
        mov edi,p_mem
    
        add edi,[edi+03ch] ;PE
        mov eax,file_size
        add eax,p_mem
        .if edi>eax || edi<p_mem || word ptr[edi]!="EP"
            .data
               error_invalid_pe db "Zieldatei ist keine gültige Win32PE Executable!",0
            .code
            invoke MessageBox,0,offset error_invalid_pe,0,MB_ICONERROR
            jmp freemem
        .endif
    zum Schluss noch alles fein schließen:
    Code:
    freemem:
     invoke VirtualFree,p_mem,file_size,MEM_DECOMMIT
    
    closefile:
        invoke CloseHandle,file_handle
    siehe auch:
    http://win32assembly.online.fr/tut12.html
    Geändert von EBFE (09.05.2009 um 17:47 Uhr) Grund: Free memory vergessen :)

Stichworte

Berechtigungen

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