数据集对应的子文件夹 tulip/郁金香 sunflower/太阳花 rose/玫瑰 dandelion/蒲公英 daisy/雏菊
2022-11-21 15:26:59 218.32MB 花朵数据集 数据集 深度学习 人工智能
1
虽然现在PC网游已进入落幕时期,但是曾经的游戏安全辉煌有郁金香一份功劳。现在我把40G郁金香VC++游戏辅助制作视频教程全部发布出来,其中包括VC基础和OD反汇编调试教程和驱动研发教程等是非常完整一系列游戏辅助视频教程。也适合以后到游戏公司从事游戏安全行业的人研究和学习。
2022-08-12 12:20:28 9KB VC++
1
郁金香代码注入器,也被人称为“郁金香call测试工具”,可以测试找出来的游戏call,有利于制作游戏辅助 一个不错的汇编线程注入工具,在调试程序CALL或者游戏CALL的时候这个工具非常的强大,可以直接带参数测试CALL是否正确,实现相应的功能。 已实测无毒。
2022-07-20 18:10:38 67KB call测试工具 郁金香 代码注入器
1
课程安排,暂定,有可能会实时修改 编程语言:VC++6.0 (VB/Delphi有译本) 分析工具主要为(OD1.1,CE5.4) 预计平均3天左右更新一课 大家好,我是郁金香老师:QQ150330575 欢迎大家参加梅州技术 VC++外挂编程VIP培训班。 在接下来的一段时间将由我和大家一起学习游戏外挂的分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的调mouse_event,GetWindowRect,SetCursorPos,FindWindow,SendMessage) CE5.4工具的使用方法 中级篇内容:调试工具的使用技巧,功能CALL的概念 调试工具OD1.1的使用技巧(如硬件断点,条件断点,内存断点。 常用汇编指令与对应高级语言的转换。 游戏功能CALL概念 找第一个功能CALL 外挂框架的构建(通用) 进阶篇内容:分析游戏内部数据,分析常用功能CALL 游戏数据实践找各种功能CALL(如打怪,选怪,物品使用,技能栏之类)及相应的代码编写 高级篇内容:编写完整外挂 完成一个相对完整的外挂,实现 自动挂机,打怪,存放物品之类的功能 1 入门篇.以《QQ连连看为例》 1.1、一个最简单的外挂 1.1.1、游戏窗口数据分析(SPY++) a、取得窗口相对坐标 b、读出游戏窗口信息GetWindowRect c、移动鼠标指针SetCursorPos 1.1.2 用VC++写个最简单的外挂(实现游戏开局) a、鼠拟鼠标单击mouse_event b、鼠标指针移动还原 c、集成到startgame函数里 1.2、用CE查找棋盘数据 1.2.1、CE中的数据类型 a、数据类型:Bit,Byte,Word,Dword,float,double b、用CE查找出坐位号; c、保存分析数据 1.2.2、编程读出坐位号; a、远程读取进程数据 b、打开远程进程 c、读取远程进程数据 1.2.3、用CE查出棋盘基址; a、找棋盘数据基址 b、分析棋盘数据结构 1.2.4、读出当前棋盘数据 a、编程读出棋盘数据 b、棋盘数据显示出来 1.3、用模拟技术编制外挂 1.3.1 分析棋子与棋盘坐标关系 a、鼠标软件模拟,函数SendMessage b、分析窗口内棋子相对坐标X,Y c、软件模拟点击棋盘坐标x,y处的棋子 1.3.2 消掉一对棋子的算法框架 a、遍历棋盘同类型棋子配对 b、构建算法框架 1.3.3 获取一对可以消除的棋子 a、通过棋盘数据设计算法(获取一对可消除的棋子) b、写代码实现 1.3.4 消除一对棋子函数的实现 1.3.5 编写完整外挂,界面美化 1.4、游戏加速.去掉对动画效果.非HOOK 1.4.1:用OD找出 动画延时代码 1.4.2:写代码去掉延时,实现游戏加速 2 中级篇 以热血江湖为例 2.1、分析前的准备..CALL简介: 2.1.1、CALL调用示例分析.远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找打坐CALL 2.2.3、读出角色当前血值 2.2.4、远程注入代码,调用打坐CALL; 2.2.5、实例分析:找技能栏对象数组基址+偏移: 2.2.6: 拦截F1-F8功能CALL 2.3、外挂框架构建 2.3.1、DLL动态链接库构建,与调用 2.3.2、API与回调函数 2.3.3、DLL中构建窗口 2.4、用OD分析游戏功能CALL.《热血江湖》为例:主要是找CALL 2.4.1、选怪CALL 2.4.2、找游戏物品背包的基址+偏移 2.4.3、 吃红药(补血)CALL 2.4.4、 吃蓝(补魔)CALL 2.4.5、 技能CALL1 2.4.6、技能CALL2 2.4.7、所有技能CALL 2.4.8、捡物CALL 2.4.9、所有动作CALL 3、进阶篇 主要讲功能CALL的参数分析 汇编浮点指令/浮点运行/浮点数整数转换/汇编里的指针 3.1、喊话功能 3.2、走路 3.3、 怪物过滤 3.3.1、怪物属性分析 3.3.2、怪物列表关键代码分析 3.3.3、怪物列表基址+大小 3.3.4、怪物列表编写代码 3.3.5、怪物过滤 3.4、 物品过滤 3.4.1、物品属性分析 3.4.2、物品列表关键代码分析 3.4.3、找出物品列表基址+偏移 3.4.4、物品过滤(编程读出物品列表数据) 3.5、 组队相关 3.5.1、 玩家列表 3.5.2、 组队功能 3.5.3、 离队功能 3.6、购物/售物 3.6.1、与NPC对话框 3.6.2、打开购物/售物对话框 3.6.3、购物功能 3.6.4、售物功能 3.7、 摆摊.开店 a、开店CALL参数分析 b、写代码测试 4、高级篇 4.1、编写完整的外挂 4.2、游戏更新后的外挂更新 4.3、脚本功能 4.4、游戏多开实现 4.5、盗号的实现
2022-06-08 18:34:13 14.36MB 郁金香 VC++外挂 编程全集 初级篇1.1.2
1
郁金香老师网授VIP会员专用OD,非常稳定。亲测好用,分享一下。
2022-05-07 18:29:07 43.75MB OD,反汇编
1
几十款Ollydbg、郁金香OD、小生我怕怕OD……
2022-04-14 17:17:21 206.84MB Ollydbg
1
郁金香彩色简历模板表格.doc
2022-02-08 14:03:51 197KB 范文
内容包括郁金香驱动1-37课 vc++歪挂制作最新整理+delphi歪挂制作教程全新整理 的下载地址 郁金香VC++过驱动保护全套 免key版 天異赤提供 郁金香VC++过驱动保护全套 免key版 天異赤提供 郁金香VC++过驱动保护全套 免key版 天異赤提供 郁金香VC++过驱动保护全套 免key版 天異赤提供 郁金香VC++过驱动保护全套 免key版 天異赤提供 教程下载地址获取方法: 第一步:打开下方链接,填写QQ邮箱,系统会往QQ邮箱发一封确认订阅邮件 第二步:打开QQ邮箱查看邮件,确认订阅,订阅成功后系统会自动把下载地址和解压密码一起发送到你QQ邮箱 http://list.qq.com/cgi-bin/qf_invite?id=585e150c59f30e1213af9a9352367711b2e45c217582cf35 郁金香驱动38-51课下载地址 简单加密 水晶情缘加密软件 能破的下载 水晶加密网址: http://www.lovehy.com 本下载是娱乐下载版 地址长期邮箱 不能下载联系QQ1256612149 DWORD ssdtaddr, oldreadaddr,readpush ,readjmpaddr, oldwriteaddr,writepush ,writejmpaddr , ntopenprcaddr , ntopentrdaddr , KiAttachProcessaddr,KeStackAttachProcess_jmpaddr, ObOpenObjectByPointeraddr/*, h1,h2,hr,hw*/; #pragma PAGECODE __declspec(naked) VOID yjxsoft_com_KeStackAttachProcess() { KdPrint(("yjxsoft_com_KeStackAttachProcess\n")); //KeStackAttachProcess_jmpaddr+0xD __asm { //还原jmp占用处指令字节指令 push dword ptr [ebp+0ch] push dword ptr [ebp+8] push edi push esi //压入返回地址 mov eax,KeStackAttachProcess_jmpaddr add eax,0xd //push dword ptr [ebp+8] 至CALL KiAttachProcess后的距离 push eax //返回地址 //KiAttachProcess 前7字节 mov edi,edi push ebp mov ebp,esp push ebx push esi //jmp 至KiAttachProcess+7位置执行,执行完返回至 KeStackAttachProcess_jmpaddr+D处继续执行 mov eax, KiAttachProcessaddr add eax,7 jmp eax } } #pragma PAGECODE __declspec(naked) VOID yjxsoft_com_KiAttachProcess() { //KdPrint(("yjxsoft_com_KiAttachProcess\n")); __asm { /* 804f9b5e ff7508 push dword ptr [ebp+8] 804f9b61 57 push edi 804f9b62 56 push esi 804f9b63 e890feffff call nt!KiAttachProcess (804f99f8) 804f9b68 5f pop edi 804f9b69 5e pop esi 804f9b6a 5d pop ebp 804f9b6b c20400 ret 4 */ push dword ptr [ebp+8] push edi push esi //恢复 前7字节指令 /* nt!KiAttachProcess: 804f99f8 8bff mov edi,edi 804f99fa 55 push ebp 804f99fb 8bec mov ebp,esp 804f99fd 53 push ebx 804f99fe 56 push esi */ push endCall //压栈返回地址 mov edi,edi push ebp mov ebp,esp push ebx push esi // mov eax, KiAttachProcessaddr add eax,7 jmp eax endCall: pop edi pop esi pop ebp ret 4 } } #pragma PAGECODE __declspec(naked) VOID yjxsoft_com_NtReadVirtualMemory() { //KdPrint(("yjxsoft_com_NtReadVirtualMemory\n")); __asm { // push 0x1c push readpush ////压栈参数 // jmp readjmpaddr } } // //;/////////////////////////////////////////////////////////////////// // #pragma PAGECODE __declspec(naked)VOID yjxsoft_com_NtWriteVirtualMemory() { // KdPrint(("yjxsoft_com_NtWriteVirtualMemory\n")); __asm { push 0x1c push writepush //压栈参数 // jmp writejmpaddr } } // //;///////////////////////////////////////////////////////////////// //805cc613 8d8548ffffff lea eax,[ebp-0B8h] //805cc619 50 push eax //805cc61a ff75c8 push dword ptr [ebp-38h] //805cc61d ff75dc push dword ptr [ebp-24h] //805cc620 e84706ffff call nt!ObOpenObjectByPointer (805bcc6c) //805cc625 8bf8 mov edi,eax //805cc625-805cc61a= 0bh #pragma PAGECODE __declspec(naked)VOID yjxsoft_com_OpenProcess() { __asm { push dword ptr [ebp-38h] push dword ptr [ebp-24h] mov eax,ntopenprcaddr add eax,0bh push eax //CALL后返回的地址 非压栈参数 // jmp ObOpenObjectByPointeraddr } } // //;////////////////////////////////////////////////////////////////// // #pragma PAGECODE __declspec(naked)VOID yjxsoft_com_OpenTread() { //KdPrint(("yjxsoft_com_OpenTread \n")); __asm { push dword ptr [ebp-34h] push dword ptr [ebp-20h] mov eax,ntopentrdaddr add eax,0bh push eax // jmp ObOpenObjectByPointeraddr } } // //;////////////////////////////////////////////////////////////////// // #pragma PAGECODE __declspec(naked) DWORD __stdcall Findcodeaddr(DWORD code1,WORD code2,DWORD prcaddr) { __asm { mov edx,[esp+0x0c] //prcaddr mov ecx,1000h //while( ecx>0) //// start: sub ecx,1h add edx,1h mov ebx,dword ptr [edx] xor eax,eax mov ax,word ptr [edx+4h] test ecx,ecx jz end cmp ebx,[esp+4] //code1 jnz start cmp ax,[esp+8] //code2 jnz start /*if (ebx==code1 && ax==code2) break */ end: mov eax,edx ret 0x0c } } //;//////////////////////////////////////////////////////////////// // #pragma PAGECODE VOID PassTPhook () { UNICODE_STRING g_ProcessAddr,g_ThreadAddr,g_KeAttachAddr,g_PointerAddr,g_KeStackAttachProcess; RtlInitUnicodeString(&g_ProcessAddr,L"NtOpenProcess"); RtlInitUnicodeString(&g_ThreadAddr,L"NtOpenThread"); RtlInitUnicodeString(&g_KeAttachAddr,L"KeAttachProcess"); RtlInitUnicodeString(&g_PointerAddr,L"ObOpenObjectByPointer"); RtlInitUnicodeString(&g_KeStackAttachProcess,L"KeStackAttachProcess"); // __asm // // __asm mov eax,eax // ntopenprcaddr=(DWORD)MmGetSystemRoutineAddress(&g_ProcessAddr); // // Findcodeaddr(0xffc875ff,0xdc75,ntopenprcaddr); __asm { // pushad lea eax,g_KeStackAttachProcess push eax call DWORD ptr DS:[ MmGetSystemRoutineAddress] push eax //传入 KeStackAttachProcess地址 //push 0E856h //push 570875FFh push 0875h push 0FF0C75FFh call Findcodeaddr mov KeStackAttachProcess_jmpaddr,eax //// KeStackAttachProcess里 CALL KiAttachProcess的地址 定位push dword ptr[ebp+8] // hook KeStackAttachProcess+7d lea ebx,yjxsoft_com_KeStackAttachProcess sub ebx,eax sub ebx,5 mov BYTE ptr [eax],0E9h mov dword ptr [eax+1],ebx //hook end ///////////// lea eax,g_ProcessAddr push eax call DWORD ptr DS:[ MmGetSystemRoutineAddress] push eax //传入 NtOpenProcess地址 push 0dc75h push 0ffc875ffh call Findcodeaddr mov ntopenprcaddr,eax ///NtOpenProcess里 CALL ObOpenObjectByPointer的地址 lea eax, g_ThreadAddr push eax call DWORD ptr DS:[ MmGetSystemRoutineAddress] push eax ////传入 NtOpenThread地址 push 0e075h push 0ffcc75ffh call Findcodeaddr mov ntopentrdaddr,eax //////存放 NtOpenThread 里 CALL ObOpenObjectByPointer的地址 lea eax,g_PointerAddr push eax call DWORD ptr DS:[ MmGetSystemRoutineAddress] mov ObOpenObjectByPointeraddr,eax //存放 ObOpenObjectByPointer地址 //hook KiAttachProcess begin lea eax,g_KeAttachAddr push eax call DWORD ptr DS:[ MmGetSystemRoutineAddress] push eax // 传入KeAttachProcess push 0e856h push 570875ffh call Findcodeaddr //查找KiAttachProcess地址 add eax,6h //指向 804f9b64// 804f9b63 e890feffff call nt!KiAttachProcess (804f99f8) mov ebx,dword ptr [eax] //取CALL 地址 add ebx,eax //当前地址+取出地址+4 add ebx,4h mov KiAttachProcessaddr,ebx //计算出 KiAttachProcess 这个未导出函数地址 sub eax,6h //mov KiAttachProcess -6 // HOOK KeAttachProcessPush->KiAttachProcessPush-5 mov dword ptr[eax],0xE9 //jmp lea ebx,yjxsoft_com_KiAttachProcess sub ebx,eax sub ebx,5 mov dword ptr[eax+1],ebx //hook KiAttachProcess end mov eax, KeServiceDescriptorTable mov eax,[eax] //address of KeServiceDescriptorTable mov ssdtaddr,eax mov eax,ssdtaddr add eax,2e8h //0xBA * 4 ntreadvirtualmemoryaddr ssdt186 mov eax,DWORD PTR [eax] mov oldreadaddr,eax mov ebx,DWORD PTR [eax+3h] mov readpush,ebx add eax,7h mov readjmpaddr,eax mov eax,ssdtaddr add eax,454h //0x115*4 ntwritevirtualmemoryaddr ssdt227 mov eax,DWORD PTR [eax] mov oldwriteaddr,eax mov ebx,DWORD PTR [eax+3h] mov writepush,ebx add eax,7h mov writejmpaddr,eax cli mov eax,cr0 and eax,not 10000h mov cr0,eax mov ebx,ssdtaddr mov eax,yjxsoft_com_NtReadVirtualMemory mov DWORD ptr [ebx+2e8h],eax // lea ebx,DWORD ptr [ebx+2e8h] // mov hr,ebx mov eax,yjxsoft_com_NtWriteVirtualMemory mov DWORD ptr [ebx+454h],eax // lea ebx,DWORD ptr [ebx+454h] // mov hw,ebx mov ebx,ntopenprcaddr mov BYTE ptr [ebx],0e9h /* int 3*/ mov eax,offset yjxsoft_com_OpenProcess lea eax,yjxsoft_com_OpenProcess sub eax,ebx sub eax,5h mov DWORD ptr [ebx+1h],eax /*lea ebx,DWORD ptr[ebx+1h] mov h1,ebx*/ mov ebx,ntopentrdaddr mov BYTE ptr [ebx],0e9h mov eax,offset yjxsoft_com_OpenTread sub eax,ebx sub eax,5h //计算跳转地址 mov DWORD ptr [ebx+1h],eax //紧接着 E9后边写 跳转地址 lea ebx,DWORD ptr[ebx+1h] // mov h2,ebx // mov eax,90h // mov BYTE ptr [ebx+4],al mov eax,cr0 or eax,10000h mov cr0,eax sti } // //;///////////////////////////////////////////////////////////////// // void jxcom_UnHook() { __asm { pushad cli mov eax,cr0 and eax,not 10000h mov cr0,eax mov eax,ssdtaddr mov ebx,DWORD ptr [oldreadaddr] mov DWORD ptr [eax+2e8h],ebx mov ebx,DWORD ptr [oldwriteaddr] mov DWORD ptr [eax+454h],ebx mov eax,ntopenprcaddr mov dword PTR [eax],0ffc875ffh mov WORD ptr [eax+4h],0dc75h mov eax,ntopentrdaddr mov dword PTR [eax],0ffcc75ffh mov WORD ptr [eax+4h],0e075h mov eax,cr0 or eax,10000h mov cr0,eax sti popad } } //yjxsoft_com_UnHook end //;////////////////////////////////////////////////////////////////////
2021-12-13 16:56:40 18.25MB 郁金香驱动 vc++ delphi 38-51课
1
课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的调mouse_event,GetWindowRect,SetCursorPos,FindWindow,SendMessage) CE5.4工具的使用方法 中级篇内容:调试工具的使用技巧,功能CALL的概念 调试工具OD1.1的使用技巧(如硬件断点,条件断点,内存断点。 常用汇编指令与对应高级语言的转换。 游戏功能CALL概念 找第一个功能CALL 外挂框架的构建(通用) 进阶篇内容:分析游戏内部数据,分析常用功能CALL 游戏数据实践找各种功能CALL(如打怪,选怪,物品使用,技能栏之类)及相应的代码编写 高级篇内容:编写完整外挂 完成一个相对完整的外挂,实现 自动挂机,打怪,存放物品之类的功能
2021-12-12 13:38:26 267B 郁金香 VC++游戏辅助 视频
1