
/*-----------------------------------------------------------------------*/
/*                       R I N G 0,    I S S U E   # 1                   */
/*-----------------------------------------------------------------------*/

                       :  

                                                          by ADP/HangUP

                      
    exe    /    
      ,    ,
               .
   : ,   .

             FineReader4.0.  ,
   ,   ,  -   .
      -  .     
,         Aspack' :).  , 
    ,    ,    .   
   ,    

      CALL':
      0045E7D9: E8427E0B00 CALL 00516620
           90h.
        .      CreateProcessA:

BOOL CreateProcess(
   lpApplicationName,   // pointer to name of executable module
   lpCommandLine,       // pointer to command line string
   lpProcessAttributes, // pointer to process security attributes
   lpThreadAttributes,  // pointer to thread security attributes
   bInheritHandles,     // handle inheritance flag
   dwCreationFlags,     // creation flags
   lpEnvironment,       // pointer to new environment block
   lpCurrentDirectory,  // pointer to current directory name
   lpStartupInfo,       // pointer to STARTUPINFO
   lpProcessInformation // pointer to PROCESS_INFORMATION
);

       ,        (NULL):  lpCommandLine,
lpProcessAttributes, lpThreadAttributes, bInheritHandles, lpEnvironment,
lpCurrentDirectory.

           : lpApplicationName:
   ,      0-.

     dwCreationFlags:      . 
 NORMAL_PRIORITY_CLASS.    IDLE_PRIORITY_CLASS, 
  ,      .

     lpStartupInfo:        STARTUPINFO.
      (    ),   
 :

 STARTUPINFO:
 dd   44h
 dd   10 dup (0)
 dd   00000401h
 dd   01
 dd   00,00
 dd   000011A2h
 dd   00,00

          . lpProcessInformation: 
      PROCESS_INFORMATION.    
,        ,   
 .    :

 PROCESS_INFORMATION
 hProcess  dd 0  ; 
 hThread   dd 0  ; 
 ProcessId dd 0  ; 
 ThreadId  dd 0  ; 

       CreateProcessA    .      .  
          ,      
.    :    
0045E7D9h          - E8,42,7E,0B,00. 
,      .
          .    
   ReadProcessMemory:

BOOL ReadProcessMemory(
 hProcess,            // handle of the process whose memory is read
 lpBaseAddress,       // address to start reading
 lpBuffer,            // address of buffer to place read data
 nSize,               // number of bytes to read
 lpNumberOfBytesRead  // address of number of bytes read
);

hProcess:            ();
lpBaseAddress:  0045E7D9h;
lpBuffer:       - ,    ;
nSize:          05 ( 5 );
lpNumberOfBytesRead: NULL.

                     
   :   E8,42,7E,0B,00.        ,    
        ,      
  .             90h,  
 WriteProcessMemory     .

BOOL WriteProcessMemory(
   hProcess,               // handle to process whose memory is written to
   lpBaseAddress,          // address to start writing to
   lpBuffer,               // pointer to buffer to write data to
   nSize,                  // number of bytes to write
   lpNumberOfBytesWritten  // actual number of bytes written
   );

          .
       ,       .

;PATCH FOR FINEREADER 4.0
.386p
.model flat, stdcall

extrn ExitProcess:proc
extrn MessageBoxA:proc
extrn CreateProcessA:proc
extrn WriteProcessMemory:proc
extrn ReadProcessMemory:proc

.data

skoka   equ 05
addr    dd 0045e7d9h
patch   db skoka dup(90h)
buf     db skoka dup(0)
bufcmp  db 0E8h,42h,7Eh,0Bh,00

procs   db "FINE32.exe",0

WTitle  db "CreateProc",0
txterr1 db "    FINE32.EXE",0

procinfo:
hProcess  dd 0
hThread   dd 0
ProcessId dd 0
ThreadId  dd 0
stupinf:
dd   44h
dd   10 dup (0)
dd   00000401h
dd   01
dd   00,00
dd   000011a2h
dd   00,00

.code
start: push   offset procinfo
       push   offset stupinf
       push   0
       push   0
       push   32     ;NORMAL_PRIORITY_CLASS
       push   0
       push   0
       push   0
       push   0
       push   offset procs
       call   CreateProcessA
       test   eax,eax
       jz     short err1
lop:   push   0            ;  
       push   skoka        ;   
       push   offset buf   ; ,   
       push   addr         ;  
       push   hProcess
       call   ReadProcessMemory
       cld
       mov    ecx,skoka
       mov    esi,offset buf
       mov    edi,offset bufcmp ;    
repe   cmpsb
       jnz    short lop
       push   0                 ;  
       push   skoka             ;   
       push   offset patch      ;  
       push   addr              ;  
       push   hProcess          ; 
       call   WriteProcessMemory

eee:   push   0
       call   ExitProcess

err1:  push   1000h
       push   offset WTitle
       push   offset txterr1
       push   0
       Call   MessageBoxA
       jmp    short eee

end start
end




