ReadVirtualMemory是哪个包里的API,怎么加载或者调用?
我的软件里找不到ReadVirtualMemory,怎么办,请DELPHI高手给予指点!
我都等了很长时间了,上个贴子没有人解决呀!

解决方案 »

  1.   

    这个和你那个差不多了
    BOOL ReadProcessMemory(    HANDLE hProcess, // handle of the process whose memory is read  
        LPCVOID lpBaseAddress, // address to start reading
        LPVOID lpBuffer, // address of buffer to place read data
        DWORD nSize, // number of bytes to read
        LPDWORD lpNumberOfBytesRead  // address of number of bytes read
       );
      

  2.   

    如果没错的话应该是Win CE.NET SDK里面的一个函数,exdi单元。
      

  3.   

    是下面这段程序的。编译时提示找不到ReadVirtualMemory和WriteVirtualMemory:
    function HideProcess: boolean;
    label Err;
    var
      EProcess : DWord;
      hPM, FLink, BLink: Cardinal;
    begin
      Result := false;
      EProcess := GetCurrentProcess;
      if EProcess < 1 then Exit;
      if not ReadVirtualMemory(EProcess+$88, @FLink, 4) then Exit;
      if not ReadVirtualMemory(EProcess+$8C, @BLink, 4) then Exit;
      if not WriteVirtualMemory(FLink+4, @BLink, 4) then Exit;
      if not WriteVirtualMemory(BLink, @FLink, 4) then Exit;
      Result := true;
    end;所以我需要知道这两个API是在哪个单元里?
      

  4.   

    unsigned(僵哥) ( )

    楼主试了,搞定了没有?
      

  5.   

    僵哥,Win CE.NET SDK这个在DELPHI中怎么加载呀!
    再说具体点好吗?
      

  6.   

    怎么没有声音了啦,分不够可以加吗!
    我在调试WIN2000下程序彻底隐藏的问题,如果哪位大侠有这方面的资料也可以提供!
      

  7.   

    谢谢兄弟!
    我这个问题好像用到了Native  API 这个东西,还有什么DDK和NTDLL这几个PAS单元,看来这个东西还真深奥呢!
      

  8.   

    nachos::userprog::UserProcess Class Reference
    Inheritance diagram for nachos::userprog::UserProcess: List of all members. 
    Public Member Functions 
      UserProcess () 
    boolean  execute (String name, String[] args) 
    void  saveState () 
    void  restoreState () 
    String  readVirtualMemoryString (int vaddr, int maxLength) 
    int  readVirtualMemory (int vaddr, byte[] data) 
    int  readVirtualMemory (int vaddr, byte[] data, int offset, int length) 
    int  writeVirtualMemory (int vaddr, byte[] data) 
    int  writeVirtualMemory (int vaddr, byte[] data, int offset, int length) 
    void  initRegisters () 
    int  handleSyscall (int syscall, int a0, int a1, int a2, int a3) 
    void  handleException (int cause) 
    Static Public Member Functions 
    UserProcess  newUserProcess () 
    Protected Member Functions 
    boolean  loadSections () 
    void  unloadSections () 
    Protected Attributes 
    Coff  coff 
    TranslationEntry[]  pageTable 
    int  numPages 
    final int  stackPages = 8 --------------------------------------------------------------------------------Detailed Description
    Encapsulates the state of a user process that is not contained in its user thread (or threads). This includes its address translation state, a file table, and information about the program being executed.
    This class is extended by other classes to support additional functionality (such as additional syscalls).
    See also:
    nachos.vm.VMProcess 
    nachos.network.NetProcess --------------------------------------------------------------------------------Constructor & Destructor Documentation
    nachos::userprog::UserProcess::UserProcess  (    )  [inline] 
     
       Allocate a new process. 
     --------------------------------------------------------------------------------Member Function Documentation
    boolean nachos::userprog::UserProcess::execute  (  String  name,  
      String[]  args 
     )  [inline] 
     
       Execute the specified program with the specified arguments. Attempts to load the program, and then forks a thread to run it.
    Parameters:
    name  the name of the file containing the executable.  
    args  the arguments to pass to the executable.  Returns:
    true if the program was successfully executed.  
    void nachos::userprog::UserProcess::handleException  (  int  cause   )  [inline] 
     
       Handle a user exception. Called by UserKernel.exceptionHandler(). The cause argument identifies which exception occurred; see the Processor.exceptionZZZ constants.
    Parameters:
    cause  the user exception that occurred.  Reimplemented in nachos::vm::VMProcess. 
     
    int nachos::userprog::UserProcess::handleSyscall  (  int  syscall,  
      int  a0,  
      int  a1,  
      int  a2,  
      int  a3 
     )  [inline] 
     
       Handle a syscall exception. Called by handleException(). The syscall argument identifies which syscall the user executed:syscall# syscall prototype  
    0 void halt();  
    1 void exit(int status);  
    2 int exec(char *name, int argc, char **argv);  
    3 int join(int pid);  
    4 int creat(char *name);  
    5 int open(char *name);  
    6 int read(int fd, char *buffer, int size);  
    7 int write(int fd, char *buffer, int size);  
    8 int close(int fd);  
    9 int unlink(char *name);  Parameters:
    syscall  the syscall number.  
    a0  the first syscall argument.  
    a1  the second syscall argument.  
    a2  the third syscall argument.  
    a3  the fourth syscall argument.  Returns:
    the value to be returned to the user. 
    Reimplemented in nachos::network::NetProcess, and nachos::vm::VMProcess. 
     
    void nachos::userprog::UserProcess::initRegisters  (    )  [inline] 
     
       Initialize the processor's registers in preparation for running the program loaded into this process. Set the PC register to point at the start function, set the stack pointer register to point at the top of the stack, set the A0 and A1 registers to argc and argv, respectively, and initialize all other registers to 0. 
     
    boolean nachos::userprog::UserProcess::loadSections  (    )  [inline, protected] 
     
       Allocates memory for this process, and loads the COFF sections into memory. If this returns successfully, the process will definitely be run (this is the last step in process initialization that can fail).
    Returns:
    true if the sections were successfully loaded. 
    Reimplemented in nachos::vm::VMProcess. 
     
    UserProcess nachos::userprog::UserProcess::newUserProcess  (    )  [inline, static] 
     
       Allocate and return a new process of the correct class. The class name is specified by the nachos.conf key Kernel.processClassName.
    Returns:
    a new process of the correct class.  
    int nachos::userprog::UserProcess::readVirtualMemory  (  int  vaddr,  
      byte[]  data,  
      int  offset,  
      int  length 
     )  [inline] 
     
       Transfer data from this process's virtual memory to the specified array. This method handles address translation details. This method must not destroy the current process if an error occurs, but instead should return the number of bytes successfully copied (or zero if no data could be copied).
    Parameters:
    vaddr  the first byte of virtual memory to read.  
    data  the array where the data will be stored.  
    offset  the first byte to write in the array.  
    length  the number of bytes to transfer from virtual memory to the array.  
      

  9.   

    先兄弟们还不是太明白,我是想在DELPHI中用readVirtualMemory  这个API,他是Native Api带的,是WINDOWS地层的未公开的API。