ABA


"האק קטן שבניתי... שימושי לעריכת זיכרון של יישומים שונים"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #14200 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 14200
DLN
חבר מתאריך 20.4.07
15884 הודעות
   22:45   10.07.07   
אל הפורום  
  האק קטן שבניתי... שימושי לעריכת זיכרון של יישומים שונים  
 
   הקוד הזה ספציפית מעיף את ההגבלת נדנודים במסנג'ר
אבל זה בדיוק 2 שניות לשנות את לעשות כל דבר אחר
זה בC#, הרוב פה לא נכתב על ידי, זה סה"כ קוד ששיפצתי קצת
כל הMemoryRW זה הפונקציות API,
המחלקת GameMemoryRW זה בסה"כ יישום יותר נוח של הפונקציות API
וזה יכול לשמש כאחלה תבנית לכל Trainer למינו

using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Diagnostics;
using System.Text;
using System.Windows.Forms;
using MemoryRW;
namespace WindowsApplication8
{
public partial class Form1 : Form
{
GameMemoryRW GMem = new GameMemoryRW();
bool done = false;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (done == true)
Close();
for (; ; )
{
int success = GMem.start();
if (success == 1)
break;
}
button1.Text = "Done!";
done = true;
IntPtr address = (IntPtr)0x0058B856;
byte buffer1 = { 0x90, 0x90};
byte buffer2 = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 };
byte buffer3 = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 };
GMem.poke(address, buffer2);
address = (IntPtr)0x0061F239;
GMem.poke(address, buffer3);
address = (IntPtr)0x0058B7F6;
GMem.poke(address, buffer1);
GMem.finish();
}

}
class GameMemoryRW
{
MemoryRW.ProcessRW GameRW = new MemoryRW.ProcessRW();

public int start()
{
Process pArray = Process.GetProcessesByName("msnmsgr");

if (pArray.Length==0)
{
MessageBox.Show("Open your messenger you stupid fuck!");
return 0;
}

else
{
GameRW.Read_WriteProcess = pArray;
GameRW.OpenProcess();
return 1;
}
}

public void peek(IntPtr memoryAddress, out byte buffer, uint bytesToRead)
{
buffer = GameRW.ReadProcessMemory(memoryAddress, bytesToRead);
}

public void poke(IntPtr memoryAddress, byte bytesToWrite)
{
GameRW.WriteProcessMemory(memoryAddress, bytesToWrite);
}

public void finish()
{
GameRW.CloseHandle();
}
}
}
namespace MemoryRW
{
class ProcessInformationApi
{

public enum ProcessAccessRights
{
PROCESS_VM_READ = (0x0010),
PROCESS_VM_WRITE = (0x0020),
PROCESS_VM_OPERATION = (0x0008)
}

/* HANDLE WINAPI OpenProcess(
* DWORD dwDesiredAccess,
* BOOL bInheritHandle,
* DWORD dwProcessId
* );
*/

public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32

bInheiritHandle, UInt32 dwProcessId);

/* BOOL CloseHandle(
* HANDLE hObject
* );
*/

public static extern Int32 CloseHandle(IntPtr hObject);

/* BOOL ReadProcessMemory(
* HANDLE hProcess,
* LPCVOID lpBaseAddress,
* LPVOID lpBuffer,
* DWORD nSize,
* LPDWORD lpNumberOfBytesRead
* );
*/

public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress,

byte lpBuffer, UInt32 nSize, out IntPtr lpNumberOfBytesRead);

/* BOOL WriteProcessMemory(
* HANDLE hProcess,
* LPVOID lpBaseAddress,
* LPVOID lpBuffer,
* DWORD nSize,
* LPDWORD lpNumberOfBytesWritten
* );
*/

public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress,

byte lpBuffer, UInt32 nSize, out IntPtr lpNumberOfBytesWritten);
}

public class ProcessRW
{
public Process Read_WriteProcess
{
get
{
return m_ReadWriteProcess;
}

set
{
m_ReadWriteProcess = value;
}
}

private Process m_ReadWriteProcess = null;

private IntPtr m_hProcess = IntPtr.Zero;

public void OpenProcess()
{
ProcessInformationApi.ProcessAccessRights access;
access = ProcessInformationApi.ProcessAccessRights.PROCESS_VM_READ |
ProcessInformationApi.ProcessAccessRights.PROCESS_VM_WRITE |
ProcessInformationApi.ProcessAccessRights.PROCESS_VM_OPERATION;
m_hProcess = ProcessInformationApi.OpenProcess((uint)access, 1, (uint)

m_ReadWriteProcess.Id);

if (m_hProcess.ToInt32() == 0)
{
throw new Exception("OpenProcess Failed");
}
}

public void CloseHandle()
{
int returnVal;
returnVal = ProcessInformationApi.CloseHandle(m_hProcess);

if (returnVal == 0)
{
throw new Exception("CloseHandle Failed");
}

}

public byte ReadProcessMemory(IntPtr memoryAddress, uint bytesToRead)
{
byte buffer = new byte;

IntPtr ptrBytesRead;
ProcessInformationApi.ReadProcessMemory(m_hProcess, memoryAddress, buffer,

bytesToRead, out ptrBytesRead);

return buffer;
}

public void WriteProcessMemory(IntPtr memoryAddress, byte bytesToWrite)
{
IntPtr ptrBytesWritten;
ProcessInformationApi.WriteProcessMemory(m_hProcess, memoryAddress, bytesToWrite,

(uint)bytesToWrite.Length, out ptrBytesWritten);
}
}
}


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תעלה קובץ CS... זה לא נוח ככה. Sn00py  10.07.07 22:58 1
     לא היה לי כוח להעיף אותם ולמה לא נוח? :| DLN 10.07.07 23:09 2
  הערות Net_Boy  11.07.07 00:15 3
     מכתב DLN 11.07.07 11:07 4
         עכשיו תגיד , מאיפה הבאת את השורות בתוכנית Net_Boy  11.07.07 21:29 5
             TSearch DLN 11.07.07 22:18 6

       
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   22:58   10.07.07   
אל הפורום  
  1. תעלה קובץ CS... זה לא נוח ככה.  
בתגובה להודעה מספר 0
 
   ואגב יש לך מלא הערות מיותרות שם XD

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   23:09   10.07.07   
אל הפורום  
  2. לא היה לי כוח להעיף אותם ולמה לא נוח? :|  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   00:15   11.07.07   
אל הפורום  
  3. הערות  
בתגובה להודעה מספר 0
 
   - יכולות להיות המון סיבות למה לא תצליח לפתוח process , לקרוא או לכתוב
לכן VOID לא אמור להיות ערך החזר של פונקציה , במיוחד שמדובר ב win32api שלא זורק exceptions . לכן חובה לבדוק אם כל הפונקציות הצליחו.

- for(;;;) זה גרוע , וזה ממש לא ידידותי למשתמש - אתה תוקע אותו בלופ אינסופי אם אין לו את התוכנה או משהו לא הצליח. (יכול להיות שאתה לא יכול לפתוח PROCESSS עם ההרשאות שנתת לו לדוגמא )

- במקום Finish , לסגור את כל ה handles ב dtor ולא לסמוך על המתכנת.

- אני הייתי עושה את המעטפת הזאת יותר גנרית , ב C++ כ unmanaged DLL זה לא יפה להשתמש בפונקציות win32api מ C#.

חוץ מזה , בהקשר לתוכנה הזאת מאיפה מצאת את הכתובת בזיכרון שאותה אתה משנה ?

וסחטיין סה"כ , תמשיך לעשות עוד דברים כאלה (בהקשר לאשכול הקודם שאמרתי לך שכדאי לך לכתוב דברים בבית ולהתקדם)
רק עצה שלי אישית off the record , עזוב אותך מ C# תתמקד ב C++.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   11:07   11.07.07   
אל הפורום  
  4. מכתב  
בתגובה להודעה מספר 3
 
   תראה אמרתי כבר שלא אני כתבתי פה את הרוב
וכל השיפוצים האלה זה תיקונים חפיפיניקיים כאלה
למשתמש שאין את התוכנה על המחשב אכל אותה חח ctrl alt delete
ולדברים הקטנים אני עובד בC# הרבה יותר נוח לי
גם אין לי מושג לגבי גרפיקה בC++ אז אני לא נוגע בזה הרבה בזמן האחרון
בכלליות הרמה שלי בC++ יותר גבוהה מבC#


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   21:29   11.07.07   
אל הפורום  
  5. עכשיו תגיד , מאיפה הבאת את השורות בתוכנית  
בתגובה להודעה מספר 4
 
   שאתה רוצה לשנות ?
איך ידעת את הכתובת היחסית ?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   22:18   11.07.07   
אל הפורום  
  6. TSearch  
בתגובה להודעה מספר 5
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net