|

提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).
刚修改了又被封,而且偏移据说变了,因为已经没有W美世界的游戏程序,不再修改程序提供下载。下面的资料仅能供参考了,因为偏移变化范围不会太大。
160:具体功能没变化,因为现在没时间玩游戏,只对exe功能做了增强,详见说明。
应同事的需求,修改了下旧挂,顺便再次发出来,偏移改动了,重新编译,半天时间,然后继续消失。
140:
1、妖精打怪前先发送宝宝打怪消息。
2、查找了下跟随Call(想加 但是没时间)。
3、如果想双开游戏,请在含有 的游戏正常运行时,将 程序目录复制到另一目录,再开另一个窗口。
停止更新,我都把W美删除了,没时间懒得玩了.目前是98版本,各位想用的请自己尝试修改升级.好多地址是别人找的,感谢他们.
短消息好多,论坛里也有帖子,有些找我交流技术的朋友我很高兴,不过我没时间回答了.
jiajiasa,我把你说删除的删了呵呵.希望大家以技术为主,不要总是拿来主义.我写这些东西都是论坛里学的.相信交流就会进步.现在心情很乱,语无伦次.更希望大家不要把心全用在游戏上,多关心下实际空间里的人.风风雨雨玩网游也快8年了,每个游戏也就是那么回事.
增加了一些地址,刚添加的答题功能随着W美更新又不能用了.用挂玩游戏都这么累.希望007能长点良心,没必要.如果看帖子太乱,就看压缩包.最后再次感谢共享和交流的朋友.
部分加了个压缩,写了个说明.别再问怎么用了哦.
今天刚把水下打怪跑路问题修正了,就看说是封号了.初步判断是发包call被检测的问题,我现在还不明白,调用又不改动代码,怎么检测的呢,从栈里检测?我再慢慢学习学习,希望有心得的可以交流下,邮件消息都行啊.
昨天编译的时候忘记改动态库的路径了,我调试的时候用的绝对路径.现在应该好了.
感谢skyidmail提供穿墙地址,我把bt全加上了.发在下面.
中午把地址找了找,发在下面了.
修改了程序,目前问题如下:
1. 发包函数里改动了,增加了一个函数调用,估计是验证反挂机制.所以挂机可能会被封,具体不清楚.
00588170 与原来发包对应位置函数
2. bt功能里的穿墙和隐藏建筑还有问题,无法使用.与原来地址对应的函数如下:
0x00405180 与原来穿墙对应位置函数
0x0041E8D0 与原来隐藏建筑对应位置函数
3. 肯定还有新的更改不知道的,反挂机制肯定是增强了.
修改了发言功能,不再用call了,模拟键盘实现的,好用些了,不过聊天模式还要手动在游戏里选择,或者聊第一句的时候打上!! !~等等.希望有什么问题多讨论讨论.
另,本人不提供代码下载原因:
1.并非我不想,而是没必要.我工作之余随便弄弄,又不卖钱,希望和大家多交流.最关键的部分:地址已经发了,如果还不会,那么学下基础知识先.直接看代码不是最好的学习方式,思路最重要.而且看别人的代码不是一般的累.想想本论坛的说明里不是也写了么,不欢迎求源码者参与.
2.本人写的代码很烂,而且大多的低级水平,实在不好意思拿出来看,同事经常嘲笑偶.
3.虽然我发的程序没有任何保护,但是毕竟分析起来慢一点点,防止封杀啊(当然还远远没到W美关注的程度呵呵).
1.查找了下帮会id,添加在下面了,把我帐号帮派退了呵呵.还有把所用的call全加上了,都是在论坛里找的,没一个我自己找的呵呵,不过可能改了下汇编代码.压缩包里也有.发送封包没有使用结构,因为这样比较好控制,结构反觉得麻烦.
2.增加了与目标怪物保持距离,也可能后退到怪物堆里去哦,如果能判断是主动怪和被动怪就好了,主动就不后退,不知道怪物属性里有没有.
3.修正了宝宝温饱保护和打怪等级限制
4.打坐时间控制放在1分钟以内了,不满也起立.个人不喜欢打坐呵呵.
问题:
1.全屏呼出窗口的时候会最小化游戏.要解决据说跟DirectX有关,不会弄,窗口模式没问题;
2.发言CALL没好好弄,不会
3.不知道怎么解决答题问题.我又建不了题库
4.肯定还有很多问题现在知道或者不知道的
修正一些bug,少了一些定住不动的时候,这回挂了6个小时没出过问题(答题手动~).但是还有首攻技能发不出来的时候会定一下,可能是因为攻击距离远了些.可以先开游戏再开程序,按home调出,现在只有周围物品和怪物5秒一刷新,别的手动右键刷新
69,70,71,72,73,74,75一样的,修改了下已知的bug,增加了点右键菜单和武器替换.
忙了一天,又把程序改了改,找玩家名字费了事.增加了周围玩家和组队队员.特别是增加了bt功能.(在下面)
但是由于穿墙和隐藏建筑还是修改指令,所以会被封号,我屏蔽了.无限跳跃和空中游泳没改指令,不知道会不会被封,帮忙测试下,有bug告诉我.小问答报警加上了.还有一点挂机经验统计.队员的名字是从周围玩家的名字里搜索的.所以超出范围会没显示.还有增加了个发言功能,只支持普通说话.
现在最新的宏定义在下面.有谁知道防封函数或者方法的希望讨论下.共享才能共同提高吗
修改了下程序,修改了打坐的bug,增加了跑路,扩大捡取范围和维持宝宝饥饿度的,这回测试挂机好多了.还有一些问题我在慢慢改.还有就是周围玩家的信息和组队玩家的信息还没添加上.懒得的找地址,谁知道望告之.因为加了地图,所以有点大
工作好忙啊,好不容易才弄好一个试验版本,发上来看看,有些功能没实现,特殊功能也没做,
物品名称开始是Id,然后会自动根据地面上的物品添加到ini里,就能显示包裹里的了(很多bug哈,HOME快截键). 里面用的就是下面的全部地址和一个发包call (参见http://www.ghoffice.com/bbs/read.php?tid-44149-fpage-1-toread--page-1.html),就这么多东西.
原来的宏定义可能会有问题,我改了.顺便发个搜索怪物的代码,不知道效率怎么样.
我很菜的,不好意思发整个代码,因为写的太烂了.很多地方自己都不明白.程序其实不是最麻烦的,
最麻烦的就是反汇编找基地址,我一弄就头大,而且我没太多时间.
感觉论坛里的基址好难找,可能是因为我来的晚了,许多地址都是以前版本的,弄了一个星期才弄好最新70版(elementclient.exe大小5,287,936 字节)的地址.有的是自己找的,有的是查的,虽然还差好多,望知道补充下.
本人采用vc编写,exe加dll方式,键盘hook注入. 目前只实现了读取信息.有了信息就好办了.
下面是地址说明,随后有我的全部宏定义,在VC中直接调用即可.
//从配置文件更改
DWORD W2I_BASE_ADDR = 0x009297D0; //全局基址
DWORD W2I_SPEECH_MODE = 0x008F5D08; //是否聊天模式
DWORD W2I_HAS_QUESTION = 0x0092C164; //是否有答题 0正常 1答题
DWORD W2I_GAME_STATUS = 0x0092CC70; //是否断线 2正常 1下线
DWORD W2I_CALL_BASE = 0x00929174; //CALL基址
DWORD W2I_SEND_PACK_CALL = 0x0058D99B; //发包跳转
DWORD W2I_SEND_PACK_STACK = 0x00847C88; //发包入栈
DWORD W2I_ANSWER_QUESTION_CALL = 0x0058D905; //答题跳转
DWORD W2I_ANSWER_QUESTION_STACK = 0x00847C68; //答题入栈
DWORD W2I_GOTO_COS_CALL1 = 0x0045DCC0; //走路CALL1
DWORD W2I_GOTO_COS_CALL2 = 0x004616F0; //走路CALL2
DWORD W2I_GOTO_COS_CALL3 = 0x0045E0C0; //走路CALL3
DWORD W2I_FOLLOW_PLAYER_CALL = 0x00458250; //跟随CALL
//Perfect World International 140
//头文件
//**************************************************************************************
extern DWORD W2I_BASE_ADDR; //全局基址
extern DWORD W2I_SPEECH_MODE; //是否聊天模式
extern DWORD W2I_HAS_QUESTION; //是否有答题
extern DWORD W2I_GAME_STATUS; //游戏状态 2正常 1下线
#define W2I_SERVER_NAME (CHAR *)(W2I_BASE_ADDR+0x314) //服务器名称(MultiByte)
#define W2I_ROLE_EXPERS_ADDR (DWORD *)(W2I_BASE_ADDR+0xa24) //升级所需经验列表(DWORD)[当前等级-1]
//--------------------------------------------------------------------------------------
#define W2I_DYNAMIC_BASE_ADDR (*(DWORD *)(W2I_BASE_ADDR+0x1c)) //动态基址
#define W2I_ENVIRON_BASE_ADDR (*(DWORD *)(W2I_DYNAMIC_BASE_ADDR+0x8)) //周围环境基址
#define W2I_ROLE_BASE_ADDR (*(DWORD *)(W2I_DYNAMIC_BASE_ADDR+0x20)) //角色基址
//--------------------------------------------------------------------------------------
#define W2I_ROLE_X (*(float *)(W2I_ROLE_BASE_ADDR+0x3c)) //当前角色X坐标 取整(float/10)+400
#define W2I_ROLE_Z (*(float *)(W2I_ROLE_BASE_ADDR+0x40)) //当前角色Z坐标 取整(float/10)
#define W2I_ROLE_Y (*(float *)(W2I_ROLE_BASE_ADDR+0x44)) //当前角色Y坐标 取整(float/10)+550
#define W2I_ROLE_ID (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x43c)) //当前角色ID
#define W2I_ROLE_LEVEL (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x448)) //当前等级
#define W2I_ROLE_PROG (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x44c)) //当前修真(筑基 灵虚 和合 元婴 空冥 履霜 渡劫 寂灭 大乘)
#define W2I_ROLE_CURHP (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x450)) //当前血量
#define W2I_ROLE_CURMP (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x454)) //当前魔量
#define W2I_ROLE_EXPER (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x458)) //当前经验
#define W2I_ROLE_VIGOUR (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x45c)) //当前元神
#define W2I_ROLE_DOTS (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x460)) //剩余点数
#define W2I_ROLE_ENERGY (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x464)) //当前元气
#define W2I_ROLE_PHYSICAL (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x470)) //体质点数
#define W2I_ROLE_SPIRIT (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x474)) //灵力点数
#define W2I_ROLE_STRENGTH (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x478)) //力量点数
#define W2I_ROLE_AGILITY (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x47c)) //敏捷点数
#define W2I_ROLE_MAXHP (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x480)) //全部血量
#define W2I_ROLE_MAXMP (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x484)) //全部魔量
#define W2I_ROLE_PRECISE (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4a0)) //准确度
#define W2I_ROLE_MINPATTACK (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4a4)) //最小物理攻击
#define W2I_ROLE_MAXPATTACK (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4a8)) //最大物理攻击
#define W2I_ROLE_MINMATTACK (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4dc)) //最小法术攻击
#define W2I_ROLE_MAXMATTACK (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4e0)) //最大法术攻击
#define W2I_ROLE_GOLDDEFENCE (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4e4)) //金抗
#define W2I_ROLE_WOODDEFENCE (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4e8)) //木抗
#define W2I_ROLE_WATERDEFENCE (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4ec)) //水抗
#define W2I_ROLE_FIREDEFENCE (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4f0)) //火抗
#define W2I_ROLE_EARTHDEFENCE (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4f4)) //土抗
#define W2I_ROLE_PDEFENCE (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4f8)) //物防
#define W2I_ROLE_JOUK (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x4fc)) //闪避
#define W2I_ROLE_MONEY (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x504)) //金钱
#define W2I_ROLE_HONOR (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x568)) //声望
#define W2I_ROLE_PARTYID (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x5a4)) //帮派ID
#define W2I_ROLE_NAME ((WCHAR *)(*(DWORD *)(W2I_ROLE_BASE_ADDR+0x5d8))) //角色名称(Unicode)
#define W2I_ROLE_CAREER (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x5e0)) //职业(0武侠 1法师 3妖精 4妖兽 6羽芒 7羽灵)
#define W2I_ROLE_SEX (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x5e4)) //性别(0男 1女)
#define W2I_ROLE_POSITION (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x5ec)) //当前位置状态(0地面 1水中 2空中)
#define W2I_ROLE_STATUS (*(BYTE *)(W2I_ROLE_BASE_ADDR+0x638)) //角色当前状态(0正常 32打坐 16飞行)
//--------------------------------------------------------------------------------------
#define W2I_TEAM_ADDR (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x678)) //组队信息基址
#define W2I_TEAM_COUNT (*(DWORD *)(W2I_TEAM_ADDR+0x18)) //队伍队员人数
#define W2I_TEAM_INFO_ADDR (*(DWORD *)(W2I_TEAM_ADDR+0x14)) //队员信息基址
#define W2I_TEAM_MEMBER_ADDR(i) (*(DWORD *)(W2I_TEAM_INFO_ADDR+(i)*4)) //相应位置队员信息基址
#define W2I_TEAM_MEMBER_ID(team_member_addr) (*(DWORD *)(team_member_addr+0xc)) //相应位置队员ID
#define W2I_TEAM_MEMBER_LEVEL(team_member_addr) (*(DWORD *)(team_member_addr+0x10)) //相应位置队员等级
#define W2I_TEAM_MEMBER_CURHP(team_member_addr) (*(DWORD *)(team_member_addr+0x1c)) //相应位置队员当前生命
#define W2I_TEAM_MEMBER_CURMP(team_member_addr) (*(DWORD *)(team_member_addr+0x20)) //相应位置队员当前魔法
#define W2I_TEAM_MEMBER_MAXHP(team_member_addr) (*(DWORD *)(team_member_addr+0x24)) //相应位置队员最大生命
#define W2I_TEAM_MEMBER_MAXMP(team_member_addr) (*(DWORD *)(team_member_addr+0x28)) //相应位置队员最大魔法
#define W2I_PARTY_ADDR (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x6c0)) //帮派基址
#define W2I_PARTY_INFO_ADDR (*(DWORD *)(W2I_PARTY_ADDR+0xc)) //帮派信息基址
#define W2I_PARTY_NAME_ADDR (*(DWORD *)(W2I_PARTY_INFO_ADDR))
#define W2I_PARTY_NAME (WCHAR *)(*(DWORD *)(W2I_PARTY_NAME_ADDR)) //帮派名称
//--------------------------------------------------------------------------------------
#define W2I_ROLE_USINGMAGIC (*(WORD *)(W2I_ROLE_BASE_ADDR+0x69A)) //是否正在使用魔法(大于0时为正在使用)
#define W2I_ROLE_EYESHOT (*(float *)(W2I_ROLE_BASE_ADDR+0x7c4+0x3c)) //角色当前视野距离(float 0-835)
#define W2I_ROLE_VERTANGLE (*(float *)(W2I_ROLE_BASE_ADDR+0x7f0)) //角色当前俯仰角(float 向下为负 (-90,90))
#define W2I_ROLE_HORIANGLE (*(float *)(W2I_ROLE_BASE_ADDR+0x7f8)) //角色当前方位角(float 北为0 顺时针[0,360))
#define W2I_ROLE_STATIC (*(BYTE *)(W2I_ROLE_BASE_ADDR+0x854)) //角色当前是否静止(byte 0跑路 1静止)
#define W2I_ROLE_REDLEFT (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x970)) //红药冷却剩余时间
#define W2I_ROLE_BLUELEFT (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x978)) //蓝药冷却剩余时间
#define W2I_ROLE_WATERLEFT (*(DWORD *)(W2I_ROLE_BASE_ADDR+0x9A8)) //清水冷却剩余时间
//--------------------------------------------------------------------------------------
#define W2I_ROLE_SELECT_OBJSN (*(DWORD *)(W2I_ROLE_BASE_ADDR+0xa24)) //角色选中的事物SN
#define W2I_ROLE_LCLICK_OBJSN (*(DWORD *)(W2I_ROLE_BASE_ADDR+0xa28)) //角色点击的事物SN
#define W2I_ROLE_MOVER_OBJSN (*(DWORD *)(W2I_ROLE_BASE_ADDR+0xa3c)) //角色鼠标指向的事物SN
//--------------------------------------------------------------------------------------
#define W2I_PACKAGE_ADDR (*(DWORD *)(W2I_ROLE_BASE_ADDR+0xb58)) //角色包裹基址
#define W2I_PACKAGE_SIZE (*(DWORD *)(W2I_PACKAGE_ADDR+0x10)) //包裹最大容量(32)
#define W2I_PACKAGE_ITEM_ADDR (*(DWORD *)(W2I_PACKAGE_ADDR+0xc)) //包裹物品基址
#define W2I_PACK_ITEM_ADDR(i) (*(DWORD *)(W2I_PACKAGE_ITEM_ADDR+(i)*4)) //相应位置物品基址
#define W2I_PACK_ITEM_TYPE(pack_item_addr) (*(DWORD *)(pack_item_addr+0x4)) //相应位置物品类型
#define W2I_PACK_ITEM_ID(pack_item_addr) (*(DWORD *)(pack_item_addr+0x8)) //相应位置物品ID
#define W2I_PACK_ITEM_COUNT(pack_item_addr) (*(DWORD *)(pack_item_addr+0x14)) //相应位置物品数量
#define W2I_PACK_ITEM_MAXNUM(pack_item_addr) (*(DWORD *)(pack_item_addr+0x18)) //相应位置物品最大数量
#define W2I_PACK_ITEM_WEAR(pack_item_addr) (*(DWORD *)(pack_item_addr+0x64)) //相应位置物品耐久
#define W2I_PACK_ITEM_MAXWEAR(pack_item_addr) (*(DWORD *)(pack_item_addr+0x68)) //相应位置物品最大耐久
//--------------------------------------------------------------------------------------
#define W2I_EQUIPMENT_ADDR (*(DWORD *)(W2I_ROLE_BASE_ADDR+0xb5c)) //角色装备基址
#define W2I_EQUIPMENT_SIZE (*(DWORD *)(W2I_EQUIPMENT_ADDR+0x10)) //装备最大数量(23)
#define W2I_EQUIPMENT_ITEM_ADDR (*(DWORD *)(W2I_EQUIPMENT_ADDR+0xc)) //装备物品基址
#define W2I_EQUIP_ITEM_ADDR(i) (*(DWORD *)(W2I_EQUIPMENT_ITEM_ADDR+(i)*4)) //相应位置装备基址
#define W2I_EQUIP_ITEM_TYPE(equip_item_addr) (*(DWORD *)(equip_item_addr+0x4)) //相应位置装备类型
#define W2I_EQUIP_ITEM_ID(equip_item_addr) (*(DWORD *)(equip_item_addr+0x8)) //相应位置装备ID
#define W2I_EQUIP_ITEM_COUNT(equip_item_addr) (*(DWORD *)(equip_item_addr+0x14)) //相应位置装备数量
#define W2I_EQUIP_ITEM_MAXNUM(equip_item_addr) (*(DWORD *)(equip_item_addr+0x18)) //相应位置装备最大数量
#define W2I_EQUIP_ITEM_WEAR(equip_item_addr) (*(DWORD *)(equip_item_addr+0x64)) //相应位置装备耐久
#define W2I_EQUIP_ITEM_MAXWEAR(equip_item_addr) (*(DWORD *)(equip_item_addr+0x68)) //相应位置装备最大耐久
//--------------------------------------------------------------------------------------
#define W2I_PET_ADDR (*(DWORD *)(W2I_ROLE_BASE_ADDR+0xbe0)) //宠物包裹基址
#define W2I_PET_ORDER (*(DWORD *)(W2I_PET_ADDR+0x8)) //招出的宠物在包裹中位次(未招出时0xffffffff)
#define W2I_PET_SN (*(DWORD *)(W2I_PET_ADDR+0x38)) //招出的宠物SN(未招出时0)
#define W2I_ROLE_PET_ADDR(i) (*(DWORD *)(W2I_PET_ADDR+0x10+(i)*4)) //相应位置宠物基址
#define W2I_ROLE_PET_LOYALTY(role_pet_addr) (*(DWORD *)(role_pet_addr+0x4)) //相应位置宠物忠诚度
#define W2I_ROLE_PET_HUNGER(role_pet_addr) (*(DWORD *)(role_pet_addr+0x8)) //相应位置宠物宠物饥饱度(0酒足饭饱 1正常)
#define W2I_ROLE_PET_LEVEL(role_pet_addr) (*(DWORD *)(role_pet_addr+0x20)) //相应位置宠物等级
#define W2I_ROLE_PET_EXPER(role_pet_addr) (*(DWORD *)(role_pet_addr+0x28)) //相应位置宠物经验
#define W2I_ROLE_PET_CURHP(role_pet_addr) (*(DWORD *)(role_pet_addr+0x38)) //相应位置宠物当前生命
#define W2I_ROLE_PET_HPRATE(role_pet_addr) (*(float *)(role_pet_addr+0x1c)) //相应位置宠物生命比例(float未复活时0)
#define W2I_ROLE_PET_NAME(role_pet_addr) (WCHAR *)(*(DWORD *)(role_pet_addr+0x34)) //相应位置宠物名称
//--------------------------------------------------------------------------------------
#define W2I_MAGIC_ADDR (*(DWORD *)(W2I_ROLE_BASE_ADDR+0xbf0)) //角色技能基址
#define W2I_MAGIC_COUNT (*(DWORD *)(W2I_ROLE_BASE_ADDR+0xbf4)) //角色已学技能数量
#define W2I_ROLE_MAGIC_ADDR(i) (*(DWORD *)(W2I_MAGIC_ADDR+(i)*4)) //相应位置技能基址
#define W2I_ROLE_MAGIC_ID(role_magic_addr) (*(DWORD *)(role_magic_addr+0x8)) //相应位置技能ID
#define W2I_ROLE_MAGIC_LEVEL(role_magic_addr) (*(DWORD *)(role_magic_addr+0xc)) //相应位置技能等级
#define W2I_ROLE_MAGIC_TIMELEFT(role_magic_addr) (*(DWORD *)(role_magic_addr+0x10)) //相应位置技能冷却剩余时间
#define W2I_ROLE_MAGIC_INTER(role_magic_addr) (*(DWORD *)(role_magic_addr+0x14)) //相应位置技能施放间隔
#define W2I_ROLE_MAGIC_STATUS(role_magic_addr) (*(BYTE *)(role_magic_addr+0x18)) //相应位置技能状态(0可用 1冷却)
#define W2I_ROLE_MAGIC_NAME_ADDR1(role_magic_addr) (*(DWORD *)(role_magic_addr+0x4))
#define W2I_ROLE_MAGIC_NAME_ADDR2(role_magic_addr) (*(DWORD *)(W2I_ROLE_MAGIC_NAME_ADDR1(role_magic_addr)+0x4))
#define W2I_ROLE_MAGIC_NAME(role_magic_addr) (WCHAR *)(*(DWORD *)(W2I_ROLE_MAGIC_NAME_ADDR2(role_magic_addr)+0xc)) //相应位置技能名称
//--------------------------------------------------------------------------------------
#define W2I_PLAYER_BASE_ADDR (*(DWORD *)(W2I_ENVIRON_BASE_ADDR+0x20)) //周围玩家基址
#define W2I_PLAYER_COUNT (*(DWORD *)(W2I_PLAYER_BASE_ADDR+0x14)) //周围玩家数量
#define W2I_PLAYER_MAXCOUNT (*(DWORD *)(W2I_PLAYER_BASE_ADDR+0x24)) //周围玩家最大数量(MAX = 769)
#define W2I_PLAYER_ADDR (*(DWORD *)(W2I_PLAYER_BASE_ADDR+0x18)) //周围玩家列表基址
#define W2I_ENV_PLAYER_ADDR(i) (*(DWORD *)(W2I_PLAYER_ADDR+(i)*4)) //相应位置玩家地址
#define W2I_ENV_PLAYER_OBJ(env_player_addr) (*(DWORD *)(env_player_addr+0x4)) //相应位置玩家指针
#define W2I_ENV_PLAYER_X(env_player_obj) (*(float *)(env_player_obj+0x3c)) //相应位置玩家x坐标 取整(float/10)+400
#define W2I_ENV_PLAYER_Z(env_player_obj) (*(float *)(env_player_obj+0x40)) //相应位置玩家z坐标 取整(float/10)
#define W2I_ENV_PLAYER_Y(env_player_obj) (*(float *)(env_player_obj+0x44)) //相应位置玩家y坐标 取整(float/10)+550
#define W2I_ENV_PLAYER_LEVEL(env_player_obj) (*(DWORD *)(env_player_obj+0x448)) //相应位置玩家等级
#define W2I_ENV_PLAYER_CURHP(env_player_obj) (*(DWORD *)(env_player_obj+0x450)) //相应位置玩家血量
#define W2I_ENV_PLAYER_MAXHP(env_player_obj) (*(DWORD *)(env_player_obj+0x480)) //相应位置玩家全部血量
#define W2I_ENV_PLAYER_SN(env_player_obj) (*(DWORD *)(env_player_obj+0x43c)) //相应位置玩家SN
#define W2I_ENV_PLAYER_NAME(env_player_obj) (WCHAR *)(*(DWORD *)(env_player_obj+0x5D8)) //相应位置玩家名称
#define W2I_ENV_PLAYER_CAREER(env_player_obj) (*(DWORD *)(env_player_obj+0x5e0)) //相应位置玩家职业(0武侠 1法师 3妖精 4妖兽 6羽芒 7羽灵)
#define W2I_ENV_PLAYER_SEX(env_player_obj) (*(DWORD *)(env_player_obj+0x5e4)) //相应位置玩家性别(0男 1女)
//--------------------------------------------------------------------------------------
#define W2I_MONSTER_BASE_ADDR (*(DWORD *)(W2I_ENVIRON_BASE_ADDR+0x24)) //周围怪物基址
#define W2I_MONSTER_COUNT (*(DWORD *)(W2I_MONSTER_BASE_ADDR+0x14)) //周围怪物数量
#define W2I_MONSTER_MAXCOUNT (*(DWORD *)(W2I_MONSTER_BASE_ADDR+0x24)) //周围怪物最大数量(MAX = 769)
#define W2I_MONSTER_ADDR (*(DWORD *)(W2I_MONSTER_BASE_ADDR+0x18)) //周围怪物列表基址
#define W2I_ENV_MONSTER_ADDR(i) (*(DWORD *)(W2I_MONSTER_ADDR+(i)*4)) //相应位置怪物地址(怪物ID % MAX)
#define W2I_ENV_MONSTER_SN1(env_monster_addr) (*(DWORD *)(env_monster_addr+0x8)) //相应位置怪物序号
#define W2I_ENV_MONSTER_OBJ(env_monster_addr) (*(DWORD *)(env_monster_addr+0x4)) //相应位置怪物指针
#define W2I_ENV_MONSTER_TYPE(env_monster_obj) (*(DWORD *)(env_monster_obj+0xb4)) //相应位置怪物种类(6 怪物 7 NPC 9 宠物 A GM)
#define W2I_ENV_MONSTER_SN2(env_monster_obj) (*(DWORD *)(env_monster_obj+0x11c)) //相应位置怪物序号
#define W2I_ENV_MONSTER_ID(env_monster_obj) (*(DWORD *)(env_monster_obj+0x120)) //相应位置怪物ID
#define W2I_ENV_MONSTER_LEVEL(env_monster_obj) (*(DWORD *)(env_monster_obj+0x124)) //相应位置怪物等级
#define W2I_ENV_MONSTER_CURHP(env_monster_obj) (*(DWORD *)(env_monster_obj+0x12c)) //相应位置怪物当前血量
#define W2I_ENV_MONSTER_MAXHP(env_monster_obj) (*(DWORD *)(env_monster_obj+0x15c)) //相应位置怪物最大血量
#define W2I_ENV_MONSTER_NAME(env_monster_obj) (WCHAR *)(*(DWORD *)(env_monster_obj+0x238)) //相应位置怪物名称
#define W2I_ENV_MONSTER_X(env_monster_obj) (*(float *)(env_monster_obj+0x3c)) //相应位置怪物x坐标 取整(float/10)+400
#define W2I_ENV_MONSTER_Z(env_monster_obj) (*(float *)(env_monster_obj+0x40)) //相应位置怪物z坐标 取整(float/10)
#define W2I_ENV_MONSTER_Y(env_monster_obj) (*(float *)(env_monster_obj+0x44)) //相应位置怪物y坐标 取整(float/10)+550
#define W2I_ENV_MONSTER_DIST(env_monster_obj) (*(float *)(env_monster_obj+0x25c)) //相应位置怪物与角色距离 取整(float)
#define W2I_ENV_MONSTER_STATUS1(env_monster_obj) (*(BYTE *)(env_monster_obj+0x29c)) //相应位置怪物状态(死亡后为4)
#define W2I_ENV_MONSTER_STATUS2(env_monster_obj) (*(BYTE *)(env_monster_obj+0x2a4)) //相应位置怪物状态(死亡后为4)
//--------------------------------------------------------------------------------------
#define W2I_ITEM_BASE_ADDR (*(DWORD *)(W2I_ENVIRON_BASE_ADDR+0x28)) //周围物品基址
#define W2I_ITEM_COUNT (*(DWORD *)(W2I_ITEM_BASE_ADDR+0x14)) //周围物品数量
#define W2I_ITEM_MAXCOUNT (*(DWORD *)(W2I_ITEM_BASE_ADDR+0x24)) //周围物品最大数量(769)
#define W2I_ITEM_ADDR (*(DWORD *)(W2I_ITEM_BASE_ADDR+0x18)) //周围物品列表基址
#define W2I_ENV_ITEM_ADDR(i) (*(DWORD *)(W2I_ITEM_ADDR+(i)*4)) //相应位置物品地址
#define W2I_ENV_ITEM_OBJ(env_item_addr) (*(DWORD *)(env_item_addr+0x4)) //相应位置物品指针
#define W2I_ENV_ITEM_SN(env_item_obj) (*(DWORD *)(env_item_obj+0x10c)) //相应位置物品序号
#define W2I_ENV_ITEM_ID(env_item_obj) (*(DWORD *)(env_item_obj+0x110)) //相应位置物品ID
#define W2I_ENV_ITEM_NAME(env_item_obj) (WCHAR *)(*(DWORD *)(env_item_obj+0x164)) //相应位置物品名称
#define W2I_ENV_ITEM_X(env_item_obj) (*(float *)(env_item_obj+0x3c)) //相应位置物品x坐标 取整(float/10)+400
#define W2I_ENV_ITEM_Z(env_item_obj) (*(float *)(env_item_obj+0x40)) //相应位置物品z坐标 取整(float/10)
#define W2I_ENV_ITEM_Y(env_item_obj) (*(float *)(env_item_obj+0x44)) //相应位置物品y坐标 取整(float/10)+550
#define W2I_ENV_ITEM_GETTYPE(env_item_obj) (*(BYTE *)(env_item_obj+0x14C)) //相应位置物品获取方式 1拾取 2挖取 3金钱
#define W2I_ENV_ITEM_DIST(env_item_obj) (*(float *)(env_item_obj+0x154)) //相应位置物品与角色距离 取整(float)
//--------------------------------------------------------------------------------------
#define W2I_ENVIRON_MAP_ADDR (*(DWORD *)(W2I_ENVIRON_BASE_ADDR+0x60)) //环境地图基址
#define W2I_ENVIRON_MAP_NAME (WCHAR *)(*(DWORD *)(W2I_ENVIRON_MAP_ADDR+0x4)) //环境地图名称
//--------------------------------------------------------------------------------------
#define W2I_QUESTION_BASE_ADDR1 (*(DWORD *)(W2I_DYNAMIC_BASE_ADDR+0x4)) //
#define W2I_QUESTION_BASE_ADDR2 (*(DWORD *)(W2I_QUESTION_BASE_ADDR1+0x8)) //
#define W2I_QUESTION_BASE_ADDR3 (*(DWORD *)(W2I_QUESTION_BASE_ADDR2+0x270)) //
#define W2I_QUESTION_BASE_ADDR (*(DWORD *)(W2I_QUESTION_BASE_ADDR3+0x134)) //题目基址
#define W2I_QUESTION_TYPE (*(DWORD *)(W2I_QUESTION_BASE_ADDR3+0x164)) //题目类型 3图片
#define W2I_QUESTION_ID (*(DWORD *)(W2I_QUESTION_BASE_ADDR3+0x168)) //题目ID
#define W2I_QUESTION_LISTADDR (*(DWORD *)(W2I_QUESTION_BASE_ADDR3+0x18C)) //题目绘图数据表总地址
#define W2I_QUESTION_LISTCONUT (*(DWORD *)(W2I_QUESTION_BASE_ADDR3+0x198)) //题目绘图数据表总个数
#define W2I_QUESTION_ANSWER_ADDR(i) (*(DWORD *)(W2I_QUESTION_BASE_ADDR+((i+0x1E)<<2))) //0-3四个答案 4剩余时间 5答题说明 6题目
#define W2I_QUESTION_ANSWER_OBJ(ques_answer_addr) (*(DWORD *)(ques_answer_addr+0x4)) //
#define W2I_QUESTION_ANSWER(ques_answer_addr) (WCHAR *)(*(DWORD *)(W2I_QUESTION_ANSWER_OBJ(ques_answer_addr)+0x74)) //题目和说明等
//--------------------------------------------------------------------------------------
#define W2I_PLAY_FLAG (W2I_DYNAMIC_BASE_ADDR && W2I_ROLE_BASE_ADDR && W2I_ENVIRON_BASE_ADDR)
//**************************************************************************************
以下是cpp文件的
//**************************************************************************************
//跑到相应位置
void CallGotoCoordinates(float X, float Y, float Z)
{
BOOL IsFlying = (W2I_ROLE_POSITION>0);
_asm
{
pushad
mov eax, W2I_BASE_ADDR
mov eax, [eax+0x1c]
mov esi, [eax+0x20]
mov ecx, [esi+0xbcc] //偏移
push 1
mov edx, W2I_GOTO_COS_CALL1
call edx
mov edi, eax
mov ecx, [esi+0xbcc] //偏移
mov ecx, [ecx+0x30]
mov ecx, [ecx+4]
mov eax, X
mov [ecx+0x20], eax
mov eax, Z
mov [ecx+0x24], eax
mov eax, Y
mov [ecx+0x28], eax
lea ecx, [ecx+0x20]
push ecx
push IsFlying
mov ecx, edi
mov edx, W2I_GOTO_COS_CALL2
call edx
push 0
push 1
push edi
mov ecx, [esi+0xbcc] //偏移
push 1
mov edx, W2I_GOTO_COS_CALL3
call edx
popad
}
}
//讲话(好像有问题,我没用到,我是用的模拟键盘,代码在一个帖子里发过)
void CallSpeech(TCHAR * Content, int Mode)
{
_asm
{
mov ecx, W2I_CALL_BASE;
mov ecx, [ecx];
mov ecx, [ecx+0x20];
lea eax, Content;
push eax;
push Mode;
mov edx, W2I_SPEECH_CALL;
call edx;
}
}
//发送封包
void CallSendPack(BYTE * buf, int len)
{
_asm
{
pushad;
mov ecx, W2I_CALL_BASE;
mov ecx, [ecx];
push len;
push buf;
mov ecx, [ecx+0x20];
mov eax, W2I_SEND_PACK_CALL;
call eax;
popad;
}
}
//跟随某人
void CallFollowPlayer(DWORD PlayerSn)
{
_asm
{
pushad;
/*
mov ecx, W2I_BASE_ADDR
mov ecx, [ecx+0x1c];
mov ecx, [ecx+0x58];
mov ecx, [ecx+0x04];
mov ecx, [ecx+0x08];
mov ecx, [ecx+0x20];
mov ecx, [ecx+0x08];
mov ecx, [ecx+0x20];
*/
mov ecx, W2I_BASE_ADDR
mov ecx, [ecx+0x1c];
mov ecx, [ecx+0x20];
push PlayerSn;
mov eax, W2I_FOLLOW_PLAYER_CALL;
call eax;
popad;
}
}
//**************************************************************************************
//发送捡取物品封包
void CallSendPickItem(DWORD ItemSn, DWORD ItemId)
{
//06 00 00 6F 11 C0 39 03 00 00 (06 00 Sn Id)
BYTE buf[10] = {0};
buf[0] = 0x06;
*(DWORD *)(buf+2) = ItemSn;
*(DWORD *)(buf+6) = ItemId;
CallSendPack(buf, 10);
}
//发送挖取物品封包
void CallSendDigItem(DWORD ItemSn, DWORD ToolPos, DWORD ToolId)
{
//36 00 82 02 10 C0 00 00 15 00 01 0C 00 00 00 00 00 00
//36 00 Sn 00 00 ToolPos ToolId 00 00 00 00
BYTE buf[18] = {0};
buf[0] = 0x36;
*(DWORD *)(buf+2) = ItemSn;
*(WORD *)(buf+8) = (WORD)ToolPos;
*(DWORD *)(buf+0xA) = ToolId;
CallSendPack(buf, 18);
}
//发送丢弃物品封包
void CallSendDropItem(DWORD ItemPos, DWORD ItemCount)
{
//0E 00 04 30 01 (0E 00 ItemPos, ItemCount)
BYTE buf[5] = {0};
buf[0] = 0x0e;
buf[2] = (BYTE)ItemPos;
*(WORD *)(buf+3) = (WORD)ItemCount;
CallSendPack(buf, 5);
}
//发送使用药品封包
void CallSendUseTonic(DWORD ItemPos, DWORD ItemId)
{
//28 00 00 01 15 00 C7 21 00 00 (28 00 00 01 Pos Id)
BYTE buf[10] = {0};
buf[0] = 0x28;
buf[3] = 0x01;
*(DWORD *)(buf+4) = ItemPos;
*(DWORD *)(buf+6) = ItemId;
CallSendPack(buf, 10);
}
//发送穿上或除去装备封包
void CallSendEquipWeapon(DWORD ItemPos, DWORD EquipPos)
{
//11 00 0B 0C (11 00 ItemPos, EquipPos)
BYTE buf[4] = {0};
buf[0] = 0x11;
buf[2] = (BYTE)ItemPos;
buf[3] = (BYTE)EquipPos;
CallSendPack(buf, 4);
}
//发送选中怪物封包
void CallSendSelMonster(DWORD MonsterSn)
{
//02 00 93 16 10 80 (02 00 Sn)
BYTE buf[6] = {0};
buf[0] = 0x2;
*(DWORD *)(buf+2) = MonsterSn;
CallSendPack(buf, 6);
}
//发送激活Npc封包
void CallSendActivateNpc(DWORD NpcSn)
{
//23 00 10 15 10 80 (23 00 Sn)
BYTE buf[6] = {0};
buf[0] = 0x23;
*(DWORD *)(buf+2) = NpcSn;
CallSendPack(buf, 6);
}
//发送复活回城封包
void CallSendReviveBack()
{
//04 00
BYTE buf[2] = { 0x04, 0x00 };
CallSendPack(buf, 2);
}
//发送取消选中封包
void CallSendEscSelect()
{
//08 00
BYTE buf[2] = { 0x08, 0x00 };
CallSendPack(buf, 2);
}
//发送取消技能封包
void CallSendEscMagic()
{
//2A 00
BYTE buf[2] = { 0x2a, 0x00 };
CallSendPack(buf, 2);
}
//发送坐下封包
void CallSendSitDown()
{
//2e 00
BYTE buf[2] = { 0x2e, 0x00 };
CallSendPack(buf, 2);
}
//发送起立封包
void CallSendStandUp()
{
//2f 00
BYTE buf[2] = { 0x2f, 0x00 };
CallSendPack(buf, 2);
}
//发送打坐切换封包
void CallSendRecover()
{
//2e 00 / 2f 00
BYTE buf[2] = {0};
static BYTE Status = 0x2f;
Status ^= 1;
buf[0] = Status;
CallSendPack(buf, 2);
}
//发送回城封包
void CallSendGoBack()
{
//29 00 A7 00 00 00 00 01 00 00 00 00
BYTE buf[12] = {0};
buf[0] = 0x29;
buf[2] = 0xa7;
buf[7] = 0x01;
CallSendPack(buf, 12);
}
//发送驯服宠物封包
void CallSendTamePet(DWORD PetSn)
{
//29 00 48 01 00 00 00 01 50 52 10 80 (29 00 48 01 00 00 00 01 Sn)
BYTE buf[12] = { 0x29, 0x00, 0x48, 0x01, 0x00, 0x00, 0x00, 0x01 };
*(DWORD *)(buf+8) = PetSn;
CallSendPack(buf, 12);
}
//发送治疗宠物封包
void CallSendRecoverPet(DWORD PetSn)
{
//29 00 4A 01 00 00 00 01 46 49 12 80 (29 00 4A 01 00 00 00 01 Sn)
BYTE buf[12] = { 0x29, 0x00, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x01 };
*(DWORD *)(buf+8) = PetSn;
CallSendPack(buf, 12);
}
//发送复活宠物封包
void CallSendRevivePet()
{
//29 00 49 01 00 00 00 01 C1 A3 10 02
BYTE buf[12] = { 0x29, 0x00, 0x49, 0x01, 0x00,
0x00, 0x00, 0x01, 0xC1, 0xA3, 0x10, 0x02 };
CallSendPack(buf, 12);
}
//发送召出宠物封包
void CallSendCallupPet(DWORD PetPos)
{
//64 00 01 00 00 00 (64 00 Pos)
BYTE buf[6] = {0};
buf[0] = 0x64;
*(DWORD *)(buf+2) = PetPos;
CallSendPack(buf, 6);
}
//发送召回宠物封包
void CallSendCallbackPet()
{
//65 00
BYTE buf[2] = { 0x65, 0x00 };
CallSendPack(buf, 2);
}
//发送宠物攻击封包
void CallSendPetAttack(DWORD MonsterSn)
{
//67 00 DC 50 10 80 01 00 00 00 00 (67 00 MonsterSn 01 00 00 00 00)
BYTE buf[11] = {0};
buf[0] = 0x67;
buf[6] = 0x01;
*(DWORD *)(buf+2) = MonsterSn;
CallSendPack(buf, 11);
}
//发送组队封包
void CallSendMakeTeam(DWORD PlayerSn)
{
//1B 00 02 B0 7A 09 (1B 00 Sn)
BYTE buf[6] = {0};
buf[0] = 0x1b;
*(DWORD *)(buf+2) = PlayerSn;
CallSendPack(buf, 6);
}
//发送飞行切换封包
void CallSendSwitchFly(DWORD PlaneId)
{
//28 00 01 01 0C 00 30 08 00 00 (28 00 01 01 0C 00 PlaneId)
BYTE buf[10] = {0x28, 0x00, 0x01, 0x01, 0x0C, 0x00};
*(DWORD *)(buf+6) = PlaneId;
CallSendPack(buf, 10);
}
//发送全部修理封包
void CallSendRepairAll()
{
//25 00 03 00 00 00 06 00 00 00 FF FF FF FF 00 00
BYTE buf[16] = {0x25, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00};
CallSendPack(buf, 16);
}
//发送出售物品封包
void CallSendSellItem(DWORD ItemId, DWORD ItemPos, DWORD ItemCount)
{
//25 00 02 00 00 00 10 00 00 00 01 00 00 00 AE 00 00 00 18 00 00 00 01 00 00 00
//25 00 02 00 00 00 ByteCount GroupCount ItemId ItemPos ItemCount
BYTE buf[0x1a] = {0x25, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00};
*(DWORD *)(buf+6) = (DWORD)0x10;
*(DWORD *)(buf+0x0a) = (DWORD)0x01;
*(DWORD *)(buf+0x0e) = (DWORD)ItemId;
*(DWORD *)(buf+0x12) = (DWORD)ItemPos;
*(DWORD *)(buf+0x16) = (DWORD)ItemCount;
CallSendPack(buf, 0x1a);
}
//发送购买物品封包
void CallSendBuyItem(DWORD ItemId, DWORD ItemPos, DWORD ItemCount)
{
//ItemPos为Npc包裹里的位置
//25 00 01 00 00 00 14 00 00 00 00 00 00 00 01 00 00 00 AA 21 00 00 01 00 00 00 01 00 00 00
//25 00 01 00 00 00 ByteCount 00 00 00 00 GroupCount ItemId ItemPos ItemCount
BYTE buf[0x1e] = {0x25, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00};
*(DWORD *)(buf+6) = (DWORD)0x14;
*(DWORD *)(buf+0x0e) = (DWORD)0x01;
*(DWORD *)(buf+0x12) = (DWORD)ItemId;
*(DWORD *)(buf+0x16) = (DWORD)ItemPos;
*(DWORD *)(buf+0x1a) = (DWORD)ItemCount;
CallSendPack(buf, 0x1e);
}
//根据种类取身上物品名称
TCHAR * GetItemName(DWORD item_addr)
{
if(item_addr)
{
switch(W2I_PACK_ITEM_TYPE(item_addr))
{
case 0: //衣甲
case 3: //饰品
{
return (TCHAR *)((*(DWORD *)(item_addr+0xdc))+0xc);
}
case 2: //弹药
{
return (TCHAR *)((*(DWORD *)(item_addr+0xc8))+0x8);
}
case 4: //灵符
{
return (TCHAR *)((*(DWORD *)(item_addr+0xb0))+0x8);
}
case 5: //灵石
case 10: //工具
case 19: //书籍
case 20: //仙石
case 27: //宠粮
case 31: //仙丹
case 38: //神药
{
return (TCHAR *)((*(DWORD *)(item_addr+0x4c))+0x4);
}
case 6: //时装
{
return (TCHAR *)((*(DWORD *)(item_addr+0xcc))+0xc);
}
case 7: //飞器
{
return (TCHAR *)((*(DWORD *)(item_addr+0xd0))+0x4);
}
case 8: //材料
case 9: //药品
case 22: //卷轴
{
return (TCHAR *)((*(DWORD *)(item_addr+0x54))+0xc);
}
case 15: //武器
{
return (TCHAR *)((*(DWORD *)(item_addr+0xe4))+0xc);
}
case 17: //魂石
{
return (TCHAR *)((*(DWORD *)(item_addr+0x4c))+0x8);
}
case 18: //翅膀
{
return (TCHAR *)((*(DWORD *)(item_addr+0xc0))+0x4);
}
case 36: //红符
case 37: //蓝符
{
return (TCHAR *)((*(DWORD *)(item_addr+0xb8))+0x4);
}
}
}
return NULL;
}
联系我时,请说是在 挂海论坛 上看到的,谢谢! |
免费评分
-
上一篇: 一个1631走路Call写法下一篇: 键盘钩子回调函数为什么接收不到SendMessage消息
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。
2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。
|