首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 实现鬼泣4修改器,玩的朋友进来看看。小弟我贴点源码 ,散分吧

2012-03-21 
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,真强
[解决办法]
探讨

引用:
弄个dota的呗。。全图挂,无视VS、浩方、AA、11等对战平台。

VS 真3 dota 全图, 这个我都做好一段时间了- -,就是没有支持我,就我自己有时在用,,悲剧吧

[解决办法]
请问网游从理论上讲,可以破解吗,。。。。。。。。。。。。。。。
[解决办法]
做修改器的没什么,但是竞技类游戏做挂就不太好了
[解决办法]
鬼泣我很喜欢玩的,但从来不用作弊器!不过还是顶下楼主!
[解决办法]
楼主会做自动登录QQ不?
[解决办法]
额 问下的都有 顶一下吧 希望贴个完整的思路出来
[解决办法]

[解决办法]
我R, LZ真是牛人,什么时候带下小弟啊

[解决办法]
大学跟同学玩过鬼3,鬼4系列,现在貌似鬼5也出来了。一直没机会玩,现在也做c#开发了,不过没想过写外挂。大学玩竞技游戏时,一直觉得开外挂很可耻。(呵呵,当然这里不是骂楼主或者其他人,只是当时玩游戏比较较真)
[解决办法]
楼主搞个Dota的
[解决办法]
探讨

引用:
引用:

引用:
弄个dota的呗。。全图挂,无视VS、浩方、AA、11等对战平台。

VS 真3 dota 全图, 这个我都做好一段时间了- -,就是没有支持我,就我自己有时在用,,悲剧吧


弄个犀利的VS 真三得图啊。 要是不能被检测出来就……

[解决办法]
内存地址可以找出来 但是你怎么知道 哪个地址 是对应 血 还是 其它什么的??
[解决办法]
CheatAPI这个代码贴出来比较有用
[解决办法]
呵呵,强大
[解决办法]
发全代码吧行不行,发一点有什么用?代码比较多,发我邮箱里行么wjfwd2009@163.com
谢谢你了,向你学习
[解决办法]
楼主是个人才啊。~
[解决办法]
求lz分享dota外挂制作原理
[解决办法]
DING DING DING
[解决办法]
探讨

引用:
弄个dota的呗。。全图挂,无视VS、浩方、AA、11等对战平台。

VS 真3 dota 全图, 这个我都做好一段时间了- -,就是没有支持我,就我自己有时在用,,悲剧吧

[解决办法]
强人,分析分析思路吧!
------解决方案--------------------


探讨
资源上传了
http://download.csdn.net/detail/sweet_/3768287

[解决办法]
找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外挂思路。
[解决办法]

[解决办法]
鬼泣玩了,就是玩不过去,郁闷
[解决办法]
探讨

引用:
找call最头疼了!
楼主能不能在这方面给点指教?

唉!先用CE找指令地址 再用OD跟呀,有call 你就跟进去,我就这样弄的..
我纯粹是业余的,说错了别骂俺..呵呵

[解决办法]
楼主能否让xbox360也能改.
[解决办法]
佩服!

热点排行