做外挂小记(3)--C#调用读写内存类篇
http://hi.baidu.com/859729391/blog/item/d0465b86c252c72dc65cc3a5.html
?
這篇很簡單了...呵呵......完全是C#知識,主要是如何調用方法..
我們可以把上面那一篇編譯成一個dll類庫來調用,,或者直接接著寫..
?
那么我就直接寫了...
?
public class test
{
??? string pid=getpid.pid;//取得pid
???? read_and_write.write(string pid,IntPtr address,int wordin)//調用寫,沒有返回值的
??? string a=read_and_write.write(string pid,IntPtr address,int wordin)//調用讀,有返回值
//OK完了..變量請自己聲明,呵呵...如何找內存地址實現亂飛呀,秒殺呀,啥的,就自己去外掛論壇
//看看咯...呵呵...}
}
下面我總結一下取得PID的集中方法
首先是通用的方法
就是通過API的FINDWINDOW一系列來獲取
hand=FindWindow(NULL, "就上魔力");
?? //api的findwindow方法,其中兩個參數是(類名,窗口名),只需要其中一個就能找到窗口句柄,沒有那個可以???
//填NULL,表示空...
?
GetWindowThreadProcessId(hand,&pidwin);//通過窗口句柄hand找到游戲pid
ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pidwin);//通過pid找到進程句柄,并且得到
?
其次就是C#的方法,當然C#也可以調用API來實現
??? public class getpid//定義取得pid的類
?? ?? {?????? public string pid;//為了省事,我直接聲明一個公共字段了,當然你也可以寫屬性寫構造啦!
?????????? System.Diagnostics.Process[] processes = Process.GetProcesses();
??????????? //獲得當前所有進程列表 ,注意是個數組,除非你的電腦只有一個進程
??????????? foreach (Process a in processes)?? //遍歷每一個進程 ,如果出錯請聲明一下a ??
??????????? {
??????????????? if(a.ProcessName.ToString()=="xxx.exe")//如果進程名等于xxx.exe,可以用資源管理器查看
??????????????????? {
????????????????????????? pid= a.Id.ToString();//就輸出他的pid,這樣就可以獲得pid了
//當然Process a的屬性還有很多,總之很強大,例如?? a.MachineName.ToString();//獲取關聯進程機器名
//???????????????????????????????????????????????????????????????????????????? a.MainWindowTitle.ToString();//獲取主窗口的窗口名
//紅色部分可以任意替換,如果你不知道進程名,知道窗口名,就用a.MainWindowTitle.ToString()="記事本"
???????????????? }
最后C#還有另外一種方法,其代碼如下(不做解釋咯)
using System.Management;//需要此命名空間public int pid(String name)
??????? {
??????????? try
??????????? {
??????????????? string pid = "";
ObjectQuery oQuery = new ObjectQuery("select * from Win32_Process where Name='" + name + "'");
??????????????? ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oQuery);
??????????????? ManagementObjectCollection oReturnCollection = oSearcher.Get();
????????????????
??????????????? foreach (ManagementObject oReturn in oReturnCollection)
??????????????? {
??????????????????? pid = oReturn.GetPropertyValue("ProcessId").ToString();
??????????????? }
??????????????? return Convert.ToInt32(pid);
??????????????
??????????? }
??????????? catch
??????????? {
??????????????? MessageBox.Show("呵呵,你還沒開游戲,我說得對不?");
??????????????? Application.Exit();
??????????????? return 0;
???????????????
??????????? }
下一小記來說說封包類的.......目前正在學習中
轉載于:https://www.cnblogs.com/l1b2q31/articles/2173718.html
總結
以上是生活随笔為你收集整理的做外挂小记(3)--C#调用读写内存类篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 码工的正确坐姿!
- 下一篇: CxImage图像处理类库说明3(转载)