Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Sử dụng Win32API WriteProcessMemory trong .Net như thế nào ?

  1. #1
    Ngày gia nhập
    10 2009
    Nơi ở
    gầm cầu
    Bài viết
    156

    Mặc định Sử dụng Win32API WriteProcessMemory trong .Net như thế nào ?

    em có đoạn code
    C++ Code:
    1. LPVOID epLvi = VirtualAllocEx(hProcess,....);
    2. LVITEM lvi;
    3. SIZE_T cbWritten = 0;
    4. WriteProcessMemory(hProcess, epLvi, &lvi, sizeof(lvi), &cbWritten);
    LVITEM là 1 struc
    đối với C# tham số thứ 3 WriteProcessMemory dc pinvoke.net ghi là byte[] lpBuffer hình như ko liên quan &lvi . . Xin giúp em viết hàm WriteProcessMemory cho C# trong trường hợp này

  2. #2
    Ngày gia nhập
    12 2008
    Nơi ở
    Hà Nội
    Bài viết
    374

    Trên MSDN :


    BOOL WINAPI WriteProcessMemory(
    _In_ HANDLE hProcess,
    _In_ LPVOID lpBaseAddress,
    _In_ LPCVOID lpBuffer,
    _In_ SIZE_T nSize,
    _Out_ SIZE_T *lpNumberOfBytesWritten
    );

    lpBuffer [in]
    A pointer to the buffer that contains data to be written in the address space of the specified process.
    Là kiểu LPCVOID, bạn xem lại nha.

    ref:
    Code:
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms681674%28v=vs.85%29.aspx

  3. #3
    Ngày gia nhập
    10 2009
    Nơi ở
    gầm cầu
    Bài viết
    156

    @luc13aka47 :
    C++ em biết ít lắm anh ơi . em thường dùng hàm WriteProcessMemory C# theo kiểu
    Visual C# Code:
    1. byte [] b = bitconverter.getbytes(newval) ;
    2. WriteProcessMemory (hProcess, _Address,b,b.Length,out x );
    anh có thể demo cho em WriteProcessMemory trường hợp này phải viết sao ko ?

  4. #4
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Trích dẫn Nguyên bản được gửi bởi doveandrose Xem bài viết
    @luc13aka47 :
    C++ em biết ít lắm anh ơi . em thường dùng hàm WriteProcessMemory C# theo kiểu
    Visual C# Code:
    1. byte [] b = bitconverter.getbytes(newval) ;
    2. WriteProcessMemory (hProcess, _Address,b,b.Length,out x );
    anh có thể demo cho em WriteProcessMemory trường hợp này phải viết sao ko ?
    Bạn có thể dùng Marshalling để chuyển đổi kiểu trong C#

    Đầu tiên cần khai báo cấu trúc LVITEM trong C#
    Bạn dùng :
    Visual C# Code:
    1. [StructLayoutAttribute(LayoutKind.Sequential)]
    2. {
    3.     public uint mask;
    4.     public int iItem;
    5.     public int iSubItem;
    6.     public uint state;
    7.     public uint stateMask;
    8.     public IntPtr pszText;
    9.     public int cchTextMax;
    10.     public int iImage;
    11.     public IntPtr lParam;
    12. }

    Khi sử dụng Marshalling , cần khai báo dòng sau ở đầu file

    Visual C# Code:
    1. using System.Runtime.InteropServices

    Sau đó, bạn viết 1 hàm chuyển đổi kiểu từ kiểu LVITEM sang kiểu byte[]

    Visual C# Code:
    1. byte[] getBytes(LVITEM lvi) {
    2.     int size = Marshal.SizeOf(lvi);
    3.     byte[] arr = new byte[size];
    4.     IntPtr ptr = Marshal.AllocHGlobal(size);
    5.  
    6.     Marshal.StructureToPtr(lvi, ptr, true);
    7.     Marshal.Copy(ptr, arr, 0, size);
    8.     Marshal.FreeHGlobal(ptr);
    9.  
    10.     return arr;
    11. }

    Cuối cùng, trước khi gọi hàm WriteProcessMemory, thì chuyển đổi kiểu của biến trước

    Visual C# Code:
    1. WriteProcessMemory(hProcess, epLvi, getBytes(lvi), sizeof(lvi), &cbWritten);

    có thể, bạn cần đọc thêm ở đây http://msdn.microsoft.com/en-us/library/4ca6d5z7.aspx

  5. #5
    Ngày gia nhập
    10 2009
    Nơi ở
    gầm cầu
    Bài viết
    156

    Vâng Code hoạt động tốt . cám ơn các tiền bối

Các đề tài tương tự

  1. Cách sử dụng hàm API WriteProcessMemory trong C# ntn ?
    Gửi bởi GunLengend trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 25-05-2013, 06:16 PM
  2. Lập trình C++ Chứng minh câu lệnh "While" có thể thay thế cho tất các câu lệnh trong lập trình.
    Gửi bởi hoangcuongflp trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 03-10-2012, 11:14 PM
  3. Kết nối với MSSQL, Access trong chương trình Win32API
    Gửi bởi Socket trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 15-01-2011, 06:09 PM
  4. vẻ hình chử nhật trong Win32Api ?
    Gửi bởi nguyen my trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 1
    Bài viết cuối: 02-08-2010, 11:00 AM
  5. Cần giúp về chuỗi trong win32Api
    Gửi bởi ddhung trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 28-04-2010, 08:42 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn