2009년 12월 23일 수요일

파일 패치 예제



.model small
.stack 100h

.data
patch db 75h
filename db "test.exe", 00h                      ; file-name must be terminated with 0
fhandle dw ?
error db "File Not Found", 0Dh, 0Ah, '$'
success db "Ok, patched", 0Dh, 0Ah, '$'

.code
main proc

    mov ax, @data
    mov ds, ax

    mov ax, 3D02h                                    ; open file
    lea dx, filename
    int 21h
    jc E1

L1:
    mov bx, ax                                      ; save file handle
    mov ax, 4200h                                   ; set file pointer
    mov cx, 0                                       ; segment
    mov dx, 0213h                                    ; offset
    int 21h

    mov ah, 40h                                      ; write file
    mov cx, 1                                        ; number of bytes to write
    mov dx, offset patch                             ; offset
    int 21h
    jmp L2

E1:
    mov ah, 09h                                      ; file open failure
    lea dx, error
    int 21h

    mov ax, 4C01h                                    ; exit with error
    int 21h

L2:
    mov ah, 3Eh                                      ; close file
    int 21h

    mov ah, 09h
    lea dx, success
    int 21h

    mov ax, 4C00h                                    ; exit with success
    int 21h
main endp
end main


댓글 없음:

댓글 쓰기

블로그 보관함