Changeset 2115 for trunk/src


Ignore:
Timestamp:
Dec 18, 1999, 6:17:55 PM (26 years ago)
Author:
sandervl
Message:

EB's changes for GetThreadContext + Read/WriteProcessMemory

Location:
trunk/src/kernel32
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/exceptutil.asm

    r737 r2115  
    1 ; $Id: exceptutil.asm,v 1.2 1999-08-29 14:56:02 sandervl Exp $
     1; $Id: exceptutil.asm,v 1.3 1999-12-18 17:17:54 sandervl Exp $
    22
    33;/*
     
    174174SetFS   endp
    175175
     176        PUBLIC getCS
     177getCS   proc near
     178        mov     eax, cs
     179        ret
     180getCS   endp
     181
     182        PUBLIC getDS
     183getDS   proc near
     184        mov     eax, ds
     185        ret
     186getDS   endp
     187
    176188        PUBLIC SetReturnFS
    177189SetReturnFS proc near
  • trunk/src/kernel32/stubs.cpp

    r2111 r2115  
    1 /* $Id: stubs.cpp,v 1.13 1999-12-18 16:19:19 sandervl Exp $ */
     1/* $Id: stubs.cpp,v 1.14 1999-12-18 17:17:55 sandervl Exp $ */
    22
    33/*
     
    2020#include <builtin.h>
    2121#include "handlemanager.h"
     22#include <string.h>
    2223
    2324#include "stubs.h"
     
    24982499           cbRead,
    24992500           lpNumberOfBytesRead));
    2500 
    2501   return (FALSE);
     2501  // FIXME: check this, if we ever run win32 binaries in different addressspaces
     2502  //    ... and add a sizecheck
     2503  memcpy(lpBuffer,lpBaseAddress,cbRead);
     2504  if (lpNumberOfBytesRead) *lpNumberOfBytesRead = cbRead;
     2505  return TRUE;
     2506}
     2507
     2508/*****************************************************************************
     2509 * Name      : DWORD WriteProcessMemory
     2510 * Purpose   : The WriteProcessMemory function writes memory in a specified
     2511 *             process. The entire area to be written to must be accessible,
     2512 *             or the operation fails.
     2513 * Parameters: HANDLE  hProcess               handle of process whose memory is written to
     2514 *             LPVOID  lpBaseAddress          address to start writing to
     2515 *             LPVOID  lpBuffer               address of buffer to write data to
     2516 *             DWORD   cbWrite                number of bytes to write
     2517 *             LPDWORD lpNumberOfBytesWritten actual number of bytes written
     2518 * Variables :
     2519 * Result    : TRUE / FALSE
     2520 * Remark    :
     2521 * Status    : UNTESTED STUB
     2522 *
     2523 * Author    : Patrick Haller [Mon, 1998/06/15 08:00]
     2524 *****************************************************************************/
     2525
     2526DWORD WIN32API WriteProcessMemory(HANDLE  hProcess,
     2527                                     LPCVOID lpBaseAddress,
     2528                                     LPVOID  lpBuffer,
     2529                                     DWORD   cbWrite,
     2530                                     LPDWORD lpNumberOfBytesWritten)
     2531{
     2532  dprintf(("Kernel32: WriteProcessMemory(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
     2533           hProcess,
     2534           lpBaseAddress,
     2535           lpBuffer,
     2536           cbWrite,
     2537           lpNumberOfBytesWritten));
     2538
     2539  // FIXME: check this, if we ever run win32 binaries in different addressspaces
     2540  //    ... and add a sizecheck
     2541  memcpy((void*)lpBaseAddress,lpBuffer,cbWrite);
     2542  if (lpNumberOfBytesWritten) *lpNumberOfBytesWritten = cbWrite;
     2543  return TRUE;
    25022544}
    25032545
     
    29963038
    29973039
    2998 /*****************************************************************************
    2999  * Name      : DWORD WriteProcessMemory
    3000  * Purpose   : The WriteProcessMemory function writes memory in a specified
    3001  *             process. The entire area to be written to must be accessible,
    3002  *             or the operation fails.
    3003  * Parameters: HANDLE  hProcess               handle of process whose memory is written to
    3004  *             LPVOID  lpBaseAddress          address to start writing to
    3005  *             LPVOID  lpBuffer               address of buffer to write data to
    3006  *             DWORD   cbWrite                number of bytes to write
    3007  *             LPDWORD lpNumberOfBytesWritten actual number of bytes written
    3008  * Variables :
    3009  * Result    : TRUE / FALSE
    3010  * Remark    :
    3011  * Status    : UNTESTED STUB
    3012  *
    3013  * Author    : Patrick Haller [Mon, 1998/06/15 08:00]
    3014  *****************************************************************************/
    3015 
    3016 DWORD WIN32API WriteProcessMemory(HANDLE  hProcess,
    3017                                      LPCVOID lpBaseAddress,
    3018                                      LPVOID  lpBuffer,
    3019                                      DWORD   cbWrite,
    3020                                      LPDWORD lpNumberOfBytesWritten)
    3021 {
    3022   dprintf(("Kernel32: WriteProcessMemory(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
    3023            hProcess,
    3024            lpBaseAddress,
    3025            lpBuffer,
    3026            cbWrite,
    3027            lpNumberOfBytesWritten));
    3028 
    3029   return (FALSE);
    3030 }
    30313040
    30323041
  • trunk/src/kernel32/thread.cpp

    r1898 r2115  
    1 /* $Id: thread.cpp,v 1.18 1999-11-30 20:19:34 sandervl Exp $ */
     1/* $Id: thread.cpp,v 1.19 1999-12-18 17:17:55 sandervl Exp $ */
    22
    33/*
     
    2828#include <windllbase.h>
    2929#include <winexebase.h>
     30#include "exceptutil.h"
    3031
    3132ODINDEBUGCHANNEL(KERNEL32-THREAD)
     
    142143BOOL WIN32API GetThreadContext(HANDLE hThread, PCONTEXT lpContext)
    143144{
     145 USHORT cs, ds;
     146
    144147  dprintf(("GetThreadContext NOT IMPLEMENTED!! (TRUE)\n"));
    145148  memset(lpContext, 0, sizeof(CONTEXT));
     149
     150  /* make up some plausible values for segment registers */
     151  cs = getCS();
     152  ds = getDS();
     153  lpContext->SegCs   = cs;
     154  lpContext->SegDs   = ds;
     155  lpContext->SegEs   = ds;
     156  lpContext->SegGs   = ds;
     157  lpContext->SegSs   = ds;
     158  lpContext->SegFs   = ds;
     159
    146160  return TRUE;
    147161}
Note: See TracChangeset for help on using the changeset viewer.