C# 实现鬼泣4修改器,玩的朋友进来看看。我贴点源码 ,散分吧~在网上看到好多外挂,大部分都是用VC VB 等其他
C# 实现鬼泣4修改器,玩的朋友进来看看。我贴点源码 ,散分吧~
在网上看到好多外挂,大部分都是用VC VB 等其他语言做的,唉!做了C#的粉丝,这能忍.....最近研究了一下,用了近3
天的时间找相关基址,编码测试,大功告成了,现在来分享一下,那个代码比较多,我就贴一部分吧..呵呵
运行界面:
部分代码
C# code /// <summary> /// 从指定地址读取数据 /// </summary> /// <param name="address">读取数据的地址</param> /// <returns>返回读取的数值</returns> public int ReadValueFromAddress(int pid, int address) { IntPtr handle = CheatAPI.OpenProcess(CheatAPI.PROCESS_ALL_ACCESS, false, pid); byte[] buffer = new byte[4]; IntPtr byteAddress = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0); //获取缓冲区地址 bool read = CheatAPI.ReadProcessMemory(handle, (IntPtr)address, byteAddress, 4, IntPtr.Zero); CheatAPI.CloseHandle(handle); return Marshal.ReadInt32(byteAddress); } /// <summary> /// 向指定地址写数据 /// </summary> /// <param name="address">写数据的地址</param> /// <param name="name">是修改的名称</param> /// <param name="StartOrNo">修改还是还原 true修改 false 还原 </param> /// <returns>写入成功返回true</returns> public bool WriteValueToAddress(int pid, string name, bool StartOrNo) { //无限 修改 开启 try { IntPtr handle = CheatAPI.OpenProcess(CheatAPI.PROCESS_ALL_ACCESS, false, pid); if (StartOrNo) { foreach (DevilClass item in ChangeList) { string ne = item.CheatName.Substring(0, item.CheatName.IndexOf('_')); if (ne == name) { CheatAPI.WriteProcessMemory(handle, (IntPtr)item.Address, item.Data, item.Data.Length, IntPtr.Zero); } } if (name == "无限魔人") { int ad1 = ReadValueFromAddress(pid, ReadValueFromAddress(pid, 0x00e558b8) + 0x24); CheatAPI.WriteProcessMemory(handle, (IntPtr)(ad1 + 0x1f24), new byte[] { 0x00, 0x40, 0x1c, 0x46 }, 4, IntPtr.Zero); //魔法量 CheatAPI.WriteProcessMemory(handle, (IntPtr)(ad1 + 0x1f28), new byte[] { 0x00, 0x40, 0x1c, 0x46 }, 4, IntPtr.Zero);//格子数 } if (name == "无限灾厄") { int ad2 = ReadValueFromAddress(pid, ReadValueFromAddress(pid, 0x00e558b8) + 0x24); CheatAPI.WriteProcessMemory(handle, (IntPtr)(ad2 + 0x151f4), new byte[] { 0x00, 0x34, 0x1c, 0x46 }, 4, IntPtr.Zero); } if (name == "瞬间加速") { int ad3 = ReadValueFromAddress(pid, ReadValueFromAddress(pid, 0x00e558b8) + 0x24); CheatAPI.WriteProcessMemory(handle, (IntPtr)(ad3 + 0x2834), new byte[] { 0x23, 0xFF, 0x61, 0x43 }, 4, IntPtr.Zero); } if (name == "无限RG") { int ad4 = ReadValueFromAddress(pid, ReadValueFromAddress(pid, 0x00E558B8) + 0x24); CheatAPI.WriteProcessMemory(handle, (IntPtr)(ad4 + 0x14dac), new byte[] { 0x46, 0x65 }, 4, IntPtr.Zero); } } else { foreach (DevilClass item in RecoverList) { string na=item.CheatName.Substring(3, item.CheatName.IndexOf('_') - 3); if (na == name) { CheatAPI.WriteProcessMemory(handle, (IntPtr)item.Address, item.Data, item.Data.Length, IntPtr.Zero); } } } CheatAPI.CloseHandle(handle); return true; } catch (Exception ee) { MessageBox.Show(ee.Message); return false; } }
[解决办法]楼主大好人啊,那个鬼泣4是啥?
[解决办法][解决办法]"用了近3天的时间找相关基址"
----------------------
请问这是如何找到的
[解决办法]3D 画面相当炫丽的
百度一下看看 也就知道 了
真的假的呀
查查去
[解决办法]CheatAPI这个类
是Cheat engine 内存查找软件提供的吗
[解决办法]弄个dota的呗。。全图挂,无视VS、浩方、AA、11等对战平台。
[解决办法]LZ,真强
[解决办法][解决办法]请问网游从理论上讲,可以破解吗,。。。。。。。。。。。。。。。
[解决办法]做修改器的没什么,但是竞技类游戏做挂就不太好了
[解决办法]鬼泣我很喜欢玩的,但从来不用作弊器!不过还是顶下楼主!
[解决办法]楼主会做自动登录QQ不?
[解决办法]额 问下的都有 顶一下吧 希望贴个完整的思路出来
[解决办法][解决办法]我R, LZ真是牛人,什么时候带下小弟啊
[解决办法]大学跟同学玩过鬼3,鬼4系列,现在貌似鬼5也出来了。一直没机会玩,现在也做c#开发了,不过没想过写外挂。大学玩竞技游戏时,一直觉得开外挂很可耻。(呵呵,当然这里不是骂楼主或者其他人,只是当时玩游戏比较较真)
[解决办法]楼主搞个Dota的
[解决办法][解决办法]内存地址可以找出来 但是你怎么知道 哪个地址 是对应 血 还是 其它什么的??
[解决办法]CheatAPI这个代码贴出来比较有用
[解决办法]呵呵,强大
[解决办法]发全代码吧行不行,发一点有什么用?代码比较多,发我邮箱里行么wjfwd2009@163.com
谢谢你了,向你学习
[解决办法]楼主是个人才啊。~
[解决办法]求lz分享dota外挂制作原理
[解决办法]DING DING DING
[解决办法][解决办法]强人,分析分析思路吧!
------解决方案--------------------
[解决办法]找call最头疼了!
楼主能不能在这方面给点指教?
[解决办法]没代码!!!
[解决办法]木有分啊 下载不了啊
[解决办法]给我源代码我就能弄清楚是什么原理了,没有源代码弄起来费劲,求源代码
我QQ1131497719
希望楼主能给我源代码,我都下载了你的无源代码的资源了,想要的没拿到还把我所有的下载分都花上了,平常工作用的东西我都不舍得下载,诶楼主你要是个好人就给我把
[解决办法]资源已经下,感谢楼主。
我现在不玩游戏了,但难得看到理论和思路,弄明白当技术储备去。
[解决办法]private __gc class CheatAPI
{
// Methods
public: CheatAPI();
[DllImport(S"kernel32.dll")]
public: static extern void __gc* CloseHandle(IntPtr __gc* hObject);
[DllImport(S"USER32.DLL")]
public: static extern IntPtr __gc* FindWindow(String __gc* lpClassName, String __gc* lpWindowName);
[DllImport(S"kernel32.dll")]
public: static extern IntPtr __gc* OpenProcess(Int32 __gc* dwDesiredAccess, Boolean __gc* bInheritHandle, Int32 __gc* dwProcessId);
[DllImport(S"kernel32.dll")]
public: static extern Boolean __gc* ReadProcessMemory(IntPtr __gc* hProcess, IntPtr __gc* lpBaseAddress, IntPtr __gc* lpBuffer, Int32 __gc* nSize, IntPtr __gc* lpNumberOfBytesRead);
[DllImport(S"user32.dll", SetLastError=true)]
public: static extern Boolean __gc* RegisterHotKey(IntPtr __gc* hWnd, Int32 __gc* id, Int32 __gc* fsModifiers, Keys __gc* vk);
[DllImport(S"user32.dll", SetLastError=true)]
public: static extern Boolean __gc* UnregisterHotKey(IntPtr __gc* hWnd, Int32 __gc* id);
[DllImport(S"kernel32.dll")]
public: static extern Boolean __gc* WriteProcessMemory(IntPtr __gc* hProcess, IntPtr __gc* lpBaseAddress, Byte __gc* lpBuffer __gc [], Int32 __gc* nSize, IntPtr __gc* lpNumberOfBytesWritten);
// Fields
public: const Int32 __gc* PROCESS_ALL_ACCESS = 0x1f0fff;
};
----------------------------------------
CheatAPI的写法,楼主不介意我贴出来吧
[解决办法]求dota外挂思路。
[解决办法][解决办法]鬼泣玩了,就是玩不过去,郁闷
[解决办法][解决办法] 楼主能否让xbox360也能改.
[解决办法]佩服!