├── DNFHelper.sln ├── DNFHelper ├── 2017.1.25基址.h ├── CALL.cpp ├── CALL.h ├── DNFHelper.vcxproj ├── DNFHelper.vcxproj.filters ├── DNFHelper.vcxproj.user ├── LDR断链 清除PE.cpp ├── LDR断链 清除PE.h ├── dllmain.cpp ├── stdafx.cpp ├── stdafx.h ├── targetver.h ├── 全屏.cpp ├── 全屏.h ├── 公告.cpp ├── 公告.h ├── 内存读写.cpp ├── 内存读写.h ├── 判断.cpp ├── 判断.h ├── 剧情.cpp ├── 剧情.h ├── 加密解密.cpp ├── 加密解密.h ├── 劫持.h ├── 召唤人偶怪物.cpp ├── 召唤人偶怪物.h ├── 基址.h ├── 常用函数.cpp ├── 常用函数.h ├── 常用功能.cpp ├── 常用功能.h ├── 微调buff.cpp ├── 微调buff.h ├── 检测.cpp ├── 检测.h ├── 测试.h ├── 激活.cpp ├── 激活.h ├── 符咒.cpp ├── 符咒.h ├── 组包.cpp ├── 组包.h ├── 自动.cpp ├── 自动.h ├── 超级技能.cpp └── 超级技能.h ├── HelperStart ├── HelperStart.sln └── HelperStart │ ├── HelperStart.cpp │ ├── HelperStart.vcxproj │ ├── HelperStart.vcxproj.filters │ ├── HelperStart.vcxproj.user │ ├── inject.cpp │ ├── inject.h │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h ├── InjectDll ├── InjectDll.sln └── InjectDll │ ├── InjectClass.cpp │ ├── InjectClass.h │ ├── InjectDll.cpp │ ├── InjectDll.h │ ├── InjectDll.rc │ ├── InjectDll.vcproj │ ├── InjectDll.vcproj.FREESKYC-1129E5.Administrator.user │ ├── InjectDll.vcxproj │ ├── InjectDll.vcxproj.filters │ ├── InjectDll.vcxproj.user │ ├── InjectDllDlg.cpp │ ├── InjectDllDlg.h │ ├── res │ ├── InjectDll.ico │ └── InjectDll.rc2 │ ├── resource.h │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h ├── ReadMe.md ├── pic ├── 20180203135449.jpg ├── 20180203210201.jpg ├── 20180204143325.jpg ├── 20180204161712.jpg ├── 20180204175332.jpg ├── 20180207203719.jpg ├── F7DEE10C-83FE-406E-8954-58A366E8FF49-520-00000046E47E4ADE_tmp.jpg ├── IMG_0300.JPG └── IMG_0318.jpg └── 演示视频.mp4 /DNFHelper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2026 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DNFHelper", "DNFHelper\DNFHelper.vcxproj", "{B556267F-8B25-42C9-9130-D63A09A195C6}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelperStart", "HelperStart\HelperStart\HelperStart.vcxproj", "{8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}" 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InjectDll", "InjectDll\InjectDll\InjectDll.vcxproj", "{08DBA0F3-A99B-4110-8C2B-D0B64316B843}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Win32 = Debug|Win32 15 | Debug|x64 = Debug|x64 16 | Debug|x86 = Debug|x86 17 | Release|Win32 = Release|Win32 18 | Release|x64 = Release|x64 19 | Release|x86 = Release|x86 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Debug|Win32.ActiveCfg = Debug|Win32 23 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Debug|Win32.Build.0 = Debug|Win32 24 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Debug|x64.ActiveCfg = Debug|x64 25 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Debug|x64.Build.0 = Debug|x64 26 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Debug|x86.ActiveCfg = Debug|Win32 27 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Debug|x86.Build.0 = Debug|Win32 28 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Release|Win32.ActiveCfg = Release|Win32 29 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Release|Win32.Build.0 = Release|Win32 30 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Release|x64.ActiveCfg = Release|x64 31 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Release|x64.Build.0 = Release|x64 32 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Release|x86.ActiveCfg = Release|Win32 33 | {B556267F-8B25-42C9-9130-D63A09A195C6}.Release|x86.Build.0 = Release|Win32 34 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|Win32.ActiveCfg = Debug|Win32 35 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|Win32.Build.0 = Debug|Win32 36 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|x64.ActiveCfg = Debug|x64 37 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|x64.Build.0 = Debug|x64 38 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|x86.ActiveCfg = Debug|Win32 39 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|x86.Build.0 = Debug|Win32 40 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|Win32.ActiveCfg = Release|Win32 41 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|Win32.Build.0 = Release|Win32 42 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|x64.ActiveCfg = Release|x64 43 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|x64.Build.0 = Release|x64 44 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|x86.ActiveCfg = Release|Win32 45 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|x86.Build.0 = Release|Win32 46 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Debug|Win32.ActiveCfg = Debug|Win32 47 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Debug|Win32.Build.0 = Debug|Win32 48 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Debug|x64.ActiveCfg = Debug|Win32 49 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Debug|x86.ActiveCfg = Debug|Win32 50 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Debug|x86.Build.0 = Debug|Win32 51 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Release|Win32.ActiveCfg = Release|Win32 52 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Release|Win32.Build.0 = Release|Win32 53 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Release|x64.ActiveCfg = Release|Win32 54 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Release|x86.ActiveCfg = Release|Win32 55 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Release|x86.Build.0 = Release|Win32 56 | EndGlobalSection 57 | GlobalSection(SolutionProperties) = preSolution 58 | HideSolutionNode = FALSE 59 | EndGlobalSection 60 | GlobalSection(ExtensibilityGlobals) = postSolution 61 | SolutionGuid = {FF5FBA17-5B0D-4FEF-A302-2DFE411FB60E} 62 | EndGlobalSection 63 | EndGlobal 64 | -------------------------------------------------------------------------------- /DNFHelper/2017.1.25基址.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/2017.1.25基址.h -------------------------------------------------------------------------------- /DNFHelper/CALL.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/CALL.cpp -------------------------------------------------------------------------------- /DNFHelper/CALL.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/CALL.h -------------------------------------------------------------------------------- /DNFHelper/DNFHelper.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {B556267F-8B25-42C9-9130-D63A09A195C6} 24 | Win32Proj 25 | EDNFHelper 26 | 10.0.16299.0 27 | DNFHelper 28 | 29 | 30 | 31 | DynamicLibrary 32 | true 33 | v141 34 | Unicode 35 | 36 | 37 | DynamicLibrary 38 | false 39 | v141 40 | true 41 | Unicode 42 | 43 | 44 | DynamicLibrary 45 | true 46 | v141 47 | Unicode 48 | 49 | 50 | DynamicLibrary 51 | false 52 | v141 53 | true 54 | Unicode 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | true 76 | cscapi 77 | 78 | 79 | true 80 | 81 | 82 | false 83 | avrt 84 | 85 | 86 | false 87 | 88 | 89 | 90 | Create 91 | Level3 92 | Disabled 93 | true 94 | WIN32;_DEBUG;EDNFHELPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 95 | true 96 | Async 97 | MultiThreadedDebugDLL 98 | 99 | 100 | Windows 101 | true 102 | C:\Users\Administrator\Desktop\$(TargetName)$(TargetExt) 103 | 2097152 104 | 105 | 106 | 107 | 108 | Use 109 | Level3 110 | Disabled 111 | true 112 | _DEBUG;EDNFHELPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 113 | true 114 | 115 | 116 | Windows 117 | true 118 | 119 | 120 | 121 | 122 | NotUsing 123 | Level3 124 | MaxSpeed 125 | true 126 | true 127 | true 128 | WIN32;NDEBUG;EDNFHELPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 129 | true 130 | Async 131 | 132 | 133 | Windows 134 | true 135 | true 136 | false 137 | C:\Users\Administrator\Desktop\$(TargetName)$(TargetExt) 138 | Default 139 | 140 | 141 | 142 | 143 | Use 144 | Level3 145 | MaxSpeed 146 | true 147 | true 148 | true 149 | NDEBUG;EDNFHELPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 150 | true 151 | 152 | 153 | Windows 154 | true 155 | true 156 | true 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | Create 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | -------------------------------------------------------------------------------- /DNFHelper/DNFHelper.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {a7f0650d-c848-415b-942f-de2ce4d2e179} 18 | 19 | 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 头文件 29 | 30 | 31 | 头文件 32 | 33 | 34 | 头文件 35 | 36 | 37 | 头文件 38 | 39 | 40 | 头文件 41 | 42 | 43 | 头文件 44 | 45 | 46 | 头文件 47 | 48 | 49 | 头文件 50 | 51 | 52 | 头文件 53 | 54 | 55 | 头文件 56 | 57 | 58 | 头文件 59 | 60 | 61 | 头文件\旧版本基址备份 62 | 63 | 64 | 头文件 65 | 66 | 67 | 头文件 68 | 69 | 70 | 头文件 71 | 72 | 73 | 头文件 74 | 75 | 76 | 头文件 77 | 78 | 79 | 头文件 80 | 81 | 82 | 头文件 83 | 84 | 85 | 头文件 86 | 87 | 88 | 头文件 89 | 90 | 91 | 92 | 93 | 源文件 94 | 95 | 96 | 源文件 97 | 98 | 99 | 源文件 100 | 101 | 102 | 源文件 103 | 104 | 105 | 源文件 106 | 107 | 108 | 源文件 109 | 110 | 111 | 源文件 112 | 113 | 114 | 源文件 115 | 116 | 117 | 源文件 118 | 119 | 120 | 源文件 121 | 122 | 123 | 源文件 124 | 125 | 126 | 源文件 127 | 128 | 129 | 源文件 130 | 131 | 132 | 源文件 133 | 134 | 135 | 源文件 136 | 137 | 138 | 源文件 139 | 140 | 141 | 源文件 142 | 143 | 144 | 源文件 145 | 146 | 147 | 源文件 148 | 149 | 150 | 源文件 151 | 152 | 153 | -------------------------------------------------------------------------------- /DNFHelper/DNFHelper.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /DNFHelper/LDR断链 清除PE.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/LDR断链 清除PE.cpp -------------------------------------------------------------------------------- /DNFHelper/LDR断链 清除PE.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/LDR断链 清除PE.h -------------------------------------------------------------------------------- /DNFHelper/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/dllmain.cpp -------------------------------------------------------------------------------- /DNFHelper/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/stdafx.cpp -------------------------------------------------------------------------------- /DNFHelper/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/stdafx.h -------------------------------------------------------------------------------- /DNFHelper/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/targetver.h -------------------------------------------------------------------------------- /DNFHelper/全屏.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/全屏.cpp -------------------------------------------------------------------------------- /DNFHelper/全屏.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/全屏.h -------------------------------------------------------------------------------- /DNFHelper/公告.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/公告.cpp -------------------------------------------------------------------------------- /DNFHelper/公告.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/公告.h -------------------------------------------------------------------------------- /DNFHelper/内存读写.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/内存读写.cpp -------------------------------------------------------------------------------- /DNFHelper/内存读写.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/内存读写.h -------------------------------------------------------------------------------- /DNFHelper/判断.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/判断.cpp -------------------------------------------------------------------------------- /DNFHelper/判断.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/判断.h -------------------------------------------------------------------------------- /DNFHelper/剧情.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" -------------------------------------------------------------------------------- /DNFHelper/剧情.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | -------------------------------------------------------------------------------- /DNFHelper/加密解密.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/加密解密.cpp -------------------------------------------------------------------------------- /DNFHelper/加密解密.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/加密解密.h -------------------------------------------------------------------------------- /DNFHelper/劫持.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/劫持.h -------------------------------------------------------------------------------- /DNFHelper/召唤人偶怪物.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/召唤人偶怪物.cpp -------------------------------------------------------------------------------- /DNFHelper/召唤人偶怪物.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/召唤人偶怪物.h -------------------------------------------------------------------------------- /DNFHelper/基址.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/基址.h -------------------------------------------------------------------------------- /DNFHelper/常用函数.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/常用函数.cpp -------------------------------------------------------------------------------- /DNFHelper/常用函数.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/常用函数.h -------------------------------------------------------------------------------- /DNFHelper/常用功能.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/常用功能.cpp -------------------------------------------------------------------------------- /DNFHelper/常用功能.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/常用功能.h -------------------------------------------------------------------------------- /DNFHelper/微调buff.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/微调buff.cpp -------------------------------------------------------------------------------- /DNFHelper/微调buff.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/微调buff.h -------------------------------------------------------------------------------- /DNFHelper/检测.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/检测.cpp -------------------------------------------------------------------------------- /DNFHelper/检测.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/检测.h -------------------------------------------------------------------------------- /DNFHelper/测试.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/测试.h -------------------------------------------------------------------------------- /DNFHelper/激活.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/激活.cpp -------------------------------------------------------------------------------- /DNFHelper/激活.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/激活.h -------------------------------------------------------------------------------- /DNFHelper/符咒.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/符咒.cpp -------------------------------------------------------------------------------- /DNFHelper/符咒.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/符咒.h -------------------------------------------------------------------------------- /DNFHelper/组包.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/组包.cpp -------------------------------------------------------------------------------- /DNFHelper/组包.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/组包.h -------------------------------------------------------------------------------- /DNFHelper/自动.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/自动.cpp -------------------------------------------------------------------------------- /DNFHelper/自动.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/自动.h -------------------------------------------------------------------------------- /DNFHelper/超级技能.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/超级技能.cpp -------------------------------------------------------------------------------- /DNFHelper/超级技能.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/DNFHelper/超级技能.h -------------------------------------------------------------------------------- /HelperStart/HelperStart.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2026 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelperStart", "HelperStart\HelperStart.vcxproj", "{8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|x64.ActiveCfg = Debug|x64 17 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|x64.Build.0 = Debug|x64 18 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|x86.ActiveCfg = Debug|Win32 19 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Debug|x86.Build.0 = Debug|Win32 20 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|x64.ActiveCfg = Release|x64 21 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|x64.Build.0 = Release|x64 22 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|x86.ActiveCfg = Release|Win32 23 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {AD1731EB-9E6F-4FDA-920C-4B35F1BA3D3E} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /HelperStart/HelperStart/HelperStart.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/HelperStart/HelperStart/HelperStart.cpp -------------------------------------------------------------------------------- /HelperStart/HelperStart/HelperStart.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {8D3C64D4-1E67-46D3-8617-2DA1310A9BAF} 24 | Win32Proj 25 | HelperStart 26 | 10.0.16299.0 27 | 28 | 29 | 30 | Application 31 | true 32 | v141 33 | Unicode 34 | 35 | 36 | Application 37 | false 38 | v141 39 | true 40 | Unicode 41 | 42 | 43 | Application 44 | true 45 | v141 46 | Unicode 47 | 48 | 49 | Application 50 | false 51 | v141 52 | true 53 | Unicode 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | true 75 | 76 | 77 | true 78 | 79 | 80 | false 81 | 82 | 83 | false 84 | 85 | 86 | 87 | Use 88 | Level3 89 | Disabled 90 | true 91 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) 92 | true 93 | 94 | 95 | Console 96 | true 97 | 98 | 99 | 100 | 101 | Use 102 | Level3 103 | Disabled 104 | true 105 | _DEBUG;_CONSOLE;%(PreprocessorDefinitions) 106 | true 107 | 108 | 109 | Console 110 | true 111 | 112 | 113 | 114 | 115 | Use 116 | Level3 117 | MaxSpeed 118 | true 119 | true 120 | true 121 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 122 | true 123 | 124 | 125 | Console 126 | true 127 | true 128 | true 129 | 130 | 131 | 132 | 133 | Use 134 | Level3 135 | MaxSpeed 136 | true 137 | true 138 | true 139 | NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 140 | true 141 | 142 | 143 | Console 144 | true 145 | true 146 | true 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | Create 159 | Create 160 | Create 161 | Create 162 | 163 | 164 | 165 | 166 | 167 | -------------------------------------------------------------------------------- /HelperStart/HelperStart/HelperStart.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | 源文件 37 | 38 | 39 | -------------------------------------------------------------------------------- /HelperStart/HelperStart/HelperStart.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /HelperStart/HelperStart/inject.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/HelperStart/HelperStart/inject.cpp -------------------------------------------------------------------------------- /HelperStart/HelperStart/inject.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/HelperStart/HelperStart/inject.h -------------------------------------------------------------------------------- /HelperStart/HelperStart/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/HelperStart/HelperStart/stdafx.cpp -------------------------------------------------------------------------------- /HelperStart/HelperStart/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/HelperStart/HelperStart/stdafx.h -------------------------------------------------------------------------------- /HelperStart/HelperStart/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/HelperStart/HelperStart/targetver.h -------------------------------------------------------------------------------- /InjectDll/InjectDll.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2026 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InjectDll2", "InjectDll\InjectDll.vcxproj", "{08DBA0F3-A99B-4110-8C2B-D0B64316B843}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Debug|Win32.Build.0 = Debug|Win32 16 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Release|Win32.ActiveCfg = Release|Win32 17 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {FF5FBA17-5B0D-4FEF-A302-2DFE411FB60E} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectClass.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/InjectClass.cpp -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectClass.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/InjectClass.h -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDll.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/InjectDll.cpp -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDll.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/InjectDll.h -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDll.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/InjectDll.rc -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDll.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/InjectDll.vcproj -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDll.vcproj.FREESKYC-1129E5.Administrator.user: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 35 | 36 | 39 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDll.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | InjectDll 15 | {08DBA0F3-A99B-4110-8C2B-D0B64316B843} 16 | InjectDll 17 | MFCProj 18 | 10.0.14393.0 19 | 20 | 21 | 22 | Application 23 | v141 24 | Static 25 | Unicode 26 | true 27 | 28 | 29 | Application 30 | v141 31 | Static 32 | Unicode 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | <_ProjectFileVersion>15.0.27924.0 46 | 47 | 48 | $(SolutionDir)$(Configuration)\ 49 | $(Configuration)\ 50 | true 51 | 52 | 53 | $(SolutionDir)$(Configuration)\ 54 | $(Configuration)\ 55 | false 56 | 57 | 58 | 59 | _DEBUG;%(PreprocessorDefinitions) 60 | false 61 | true 62 | 63 | 64 | Disabled 65 | WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) 66 | true 67 | EnableFastChecks 68 | MultiThreadedDebug 69 | Use 70 | Level3 71 | EditAndContinue 72 | 73 | 74 | _DEBUG;%(PreprocessorDefinitions) 75 | 0x0804 76 | $(IntDir);%(AdditionalIncludeDirectories) 77 | 78 | 79 | true 80 | Windows 81 | MachineX86 82 | 83 | 84 | 85 | 86 | NDEBUG;%(PreprocessorDefinitions) 87 | false 88 | true 89 | 90 | 91 | MaxSpeed 92 | true 93 | WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) 94 | false 95 | MultiThreaded 96 | true 97 | Use 98 | Level3 99 | ProgramDatabase 100 | 101 | 102 | NDEBUG;%(PreprocessorDefinitions) 103 | 0x0804 104 | $(IntDir);%(AdditionalIncludeDirectories) 105 | 106 | 107 | true 108 | Windows 109 | true 110 | true 111 | MachineX86 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | Create 120 | Create 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDll.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 源文件 29 | 30 | 31 | 32 | 33 | 头文件 34 | 35 | 36 | 头文件 37 | 38 | 39 | 头文件 40 | 41 | 42 | 头文件 43 | 44 | 45 | 头文件 46 | 47 | 48 | 头文件 49 | 50 | 51 | 52 | 53 | 资源文件 54 | 55 | 56 | 57 | 58 | 资源文件 59 | 60 | 61 | 62 | 63 | 资源文件 64 | 65 | 66 | -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDll.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | InjectDll2.rc 5 | 6 | -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDllDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/InjectDllDlg.cpp -------------------------------------------------------------------------------- /InjectDll/InjectDll/InjectDllDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/InjectDllDlg.h -------------------------------------------------------------------------------- /InjectDll/InjectDll/res/InjectDll.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/res/InjectDll.ico -------------------------------------------------------------------------------- /InjectDll/InjectDll/res/InjectDll.rc2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/res/InjectDll.rc2 -------------------------------------------------------------------------------- /InjectDll/InjectDll/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/resource.h -------------------------------------------------------------------------------- /InjectDll/InjectDll/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/stdafx.cpp -------------------------------------------------------------------------------- /InjectDll/InjectDll/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/stdafx.h -------------------------------------------------------------------------------- /InjectDll/InjectDll/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/InjectDll/InjectDll/targetver.h -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | ### 介绍 2 | 3 | 这是在2018年2-3月份学习windows核心编程等相关技术编写的游戏辅助。本仓库旨在介绍游戏辅助与计算机专业课程的种种联系,了解游戏辅助的工作流程以及开发方法。我当时在某个寒假的时候花了一个月学习这方面的技术,感觉很大程度的提升了我的windows编程,以及操作系统,计算机网络,汇编语言等多方面的水平(对后面的专业课打了不错的基础),所以打算将这个东西分享出来,只是作为学习(没有作为商业用途),里面的代码有很多中文函数和变量(业界流行用中文),方便阅读,现在也没有做这方面的研究了。 4 | 5 | 这方面涉及到的技术: 6 | 7 | - windows API Hook :主要是应用层API Hook,如hook send发包函数;如果是做游戏保护方面,需要懂驱动层Hook,例如SSDT,Shadow SSDT,IDT Hook等等。 这方面很重要,很多windows应用程序就是靠API Hook工作的,例如杀毒软件,病毒,以及游戏保护系统 8 | - windows 模块注入 :将你编译的dll模块注入到游戏应用程序中,这方面的技术很多,有修改PE文件的方法,远程线程注入(一般游戏在Hook CreateRemoteThread函数,所以注入失败),劫持注入,输入法注入等。比较容易使用的是劫持注入和输入法注入。 9 | - 软件逆向 : 使用olldgb等调试器调试游戏会得到汇编代码,一般需要动态调试游戏,在某些关键的语句中下断点,理清游戏的逻辑,这方面比较的困难(不过一般的计算机专业学生都有一定的汇编能力),可以说所以的功能都从这里来的。 10 | - 熟悉 windows 编程中常用的api,以及懂得如何编译dll(对编译重定位链接这些流程要熟悉)。这方面可以看《windows核心编程》这本书,一开始感觉有点难以编写,后面就慢慢习惯了。。 11 | 12 | 游戏辅助的3种方法: 13 | - 指定地址内存值修改(例如 `*(int*)(0x1234567) = 12345` ) 14 | - 指定地址函数call调用(汇编实现) 15 | - 发包收包(Hook send) 16 | 17 | 仓库的代码结构 18 | - DNFHelper :编译出dll的源码,是功能实现的核心 19 | - InjectDll :将dll注入到exe进程的实现(使用输入法注入),是一个简单的MFC桌面应用 20 | - HelperStart :在无图形界面下将dll注入到exe进程里,并做一些简单的处理。 21 | 22 | ### 功能概况 23 | 24 | 当时实现了很多功能,留了几张截图 25 | 26 | - 召唤人偶 27 | 28 | 用人偶来帮你打伤害 29 | 30 | ![20180203210201](./pic/20180203210201.jpg) 31 | 32 | 33 | 34 | - 面板(攻击力)提升 35 | 36 | 例如修改自身的力量,把自身物攻提到21w,开启这个功能很容易造成游戏数据异常。。 37 | ![](./pic/20180207203719.jpg) 38 | 39 | 40 | - 召唤高达 41 | 42 | 这个有点像是个人偶,不过人物可以坐在里面操控,攻击力很高 43 | ![](./pic/20180203135449.jpg) 44 | 45 | 46 | 47 | - 自动攻击 48 | 这个是最常用的,让怪物附近自动生成技能然后攻击怪物,攻击的血量是可以指定的,如果血量足够高就是全屏秒杀了。 49 | 50 | ![F7DEE10C-83FE-406E-8954-58A366E8FF49-520-00000046E47E4ADE_tmp](./pic/F7DEE10C-83FE-406E-8954-58A366E8FF49-520-00000046E47E4ADE_tmp.jpg) 51 | 52 | 53 | 54 | - 人物透明,3S评分 55 | 56 | ![IMG_0300](./pic/IMG_0300.JPG) 57 | 58 | 59 | 60 | - 加buff 61 | 可以给自己加大量的buff让自己变得更强 62 | 63 | ![IMG_0318](./pic/IMG_0318.jpg) 64 | 65 | 66 | 67 | - 自动过图,自动做任务,自动捡物,聚怪,符咒等等 68 | 69 | 可以做成一整套全自动的系统,自动升级,自动搬砖,没疲劳了自动换号等。这里录了一个1分钟的视频放在了根目录下(由于用手机录的视频有点大,压缩成一个mp4格式的,不到3MB) 70 | 71 | 72 | 73 | ### 相关知识解答 74 | 75 | 由于现在windows下的游戏绝大多数都是x86的,所以下面只讨论32位方面的问题,在64位下会不太一样。 76 | 77 | #### 1. 什么是基址? 78 | 79 | 这个概念是最常被提起的,也是最重要的。所谓基址,就是程序中某些变量的地址,这些地址是恒定不变的(在游戏被更新之前)。为什么是基址不会改变呢?可以运行下面这个简单的实例, 80 | 81 | ```cpp 82 | #include 83 | 84 | int a = 123; 85 | 86 | int main() { 87 | printf("%X", &a); 88 | } 89 | ``` 90 | 91 | 多次运行之后你会发现,输出的值都是不变的,因为a的地址是不变的(即使将 `int a = 123` 写到函数体内,输出的值也是恒定的)。 92 | 93 | - `int a = 123` 写在main外部:a是存储在静态存储区的(.data段),在程序编译阶段已经就确定了存储的位置(即段内偏移量是不会变的,除非程序改动后重新编译) 94 | - `int a = 123` 写在main里面,a的地址不变的原因:a存储在栈区,栈指针esp在编译阶段已经可以确定是如何移动的(esp初始位置也是确定的),因此a的地址不变(这里只考虑单线程程序,多线程由于有独立栈空间,输出的结果会有变化) 95 | 96 | 游戏里面的基址通常是一个指针,通过基址+偏移量的方法,定位出关键数据的位置,举个例子 97 | 98 | ```cpp 99 | #include 100 | 101 | struct people { 102 | char* name; 103 | int age; 104 | int power; //攻击力 105 | // ... 106 | }; 107 | 108 | people *instance; // 人物指针 109 | 110 | int main() { 111 | instance = (people*)malloc(sizeof(people)); 112 | // ... 后面对任务进行初始化等 113 | } 114 | ``` 115 | 116 | 由于基址是不变的,所以instance这个变量的地址其实在编译阶段就已经确定了,假设我们通过某种方法获取到instance的地址0x12345678。我们可以通过 `*(int*)(0x12345678)` 获取到people实际的存储地址,如果我们想要修改人物的攻击力,可以通过`*(int*)(*(int*)(0x12345678) + 8) = 12345678` 这里8为人物攻击力的偏移量,得到该地址后取指针就可以得到人物攻击力的真实存储地址了。 117 | 118 | 游戏中的结构体一般都比较复杂,有多级偏移,一般就是 `[[[[基址]+偏移1]+偏移2]+偏移3] ... ` 这种模式([]为去变量的地址) 119 | 120 | **如果想了解更多,可以去看虚拟地址,操作系统的分段和分页机制,加深对C语言的指针的理解** 121 | 122 | 123 | 124 | #### 2. 什么是模块注入? 125 | 126 | 简单理解:就是在正常运行的程序中注入你编写的模块(dll后缀名),然后让正常运行的程序执行你模块中的代码。通常模块注入后会在模块入口中创建一个后台的工作线程,线程可以共享进程内的全局变量,而且分配和读写内存也不会受到种种限制。 127 | 128 | 模块注入成功是一切的基础。模块注入的方法很多,大家在网上可以寻找相关的资料学习。我在仓库中提供了我比较常用的输入法注入的源码,稳定性还可以。 129 | 130 | 远程线程注入:进程A对进程B创建一个线程(进程A拥有权限的情况下),然后在线程调用了LoadLibrary函数,使得模块被加载(这里分享一段远程线程注入的代码,核心函数RemoteInject) 131 | 132 | ```cpp 133 | #include 134 | #include 135 | #include 136 | #include 137 | #include 138 | #include 139 | #include 140 | #pragma comment(lib, "ws2_32.lib") 141 | 142 | //将单字节char*转化为宽字节wchar_t* 143 | wchar_t* AnsiToUnicode(const char* szStr) 144 | { 145 | int nLen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0); 146 | if (nLen == 0) 147 | { 148 | return NULL; 149 | } 150 | wchar_t* pResult = new wchar_t[nLen]; 151 | MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen); 152 | return pResult; 153 | } 154 | 155 | //将宽字节wchar_t*转化为单字节char* 156 | inline char* UnicodeToAnsi(const wchar_t* szStr) 157 | { 158 | int nLen = WideCharToMultiByte(CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL); 159 | if (nLen == 0) 160 | { 161 | return NULL; 162 | } 163 | char* pResult = new char[nLen]; 164 | WideCharToMultiByte(CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL); 165 | return pResult; 166 | } 167 | 168 | 169 | BOOL Is64BitOS() 170 | { 171 | typedef VOID(WINAPI *LPFN_GetNativeSystemInfo)(__out LPSYSTEM_INFO lpSystemInfo); 172 | LPFN_GetNativeSystemInfo fnGetNativeSystemInfo = (LPFN_GetNativeSystemInfo)GetProcAddress(GetModuleHandleW(L"kernel32"), "GetNativeSystemInfo"); 173 | if (fnGetNativeSystemInfo) 174 | { 175 | SYSTEM_INFO stInfo = { 0 }; 176 | fnGetNativeSystemInfo(&stInfo); 177 | if (stInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 178 | || stInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) 179 | { 180 | return TRUE; 181 | } 182 | } 183 | return FALSE; 184 | } 185 | 186 | BOOL Is64BitPorcess(HANDLE hProcess) 187 | { 188 | if (!Is64BitOS()) 189 | return FALSE; 190 | else 191 | { 192 | if (hProcess) 193 | { 194 | typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); 195 | LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandleW(L"kernel32"), "IsWow64Process"); 196 | if (NULL != fnIsWow64Process) 197 | { 198 | BOOL bIsWow64 = FALSE; 199 | fnIsWow64Process(hProcess, &bIsWow64); 200 | if (bIsWow64) 201 | return FALSE; 202 | else 203 | return TRUE; 204 | } 205 | } 206 | } 207 | return FALSE; 208 | } 209 | 210 | void EnableDebugPriv() 211 | { 212 | HANDLE hToken; 213 | LUID luid; 214 | TOKEN_PRIVILEGES tkp; 215 | 216 | OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); 217 | 218 | LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid); 219 | 220 | tkp.PrivilegeCount = 1; 221 | tkp.Privileges[0].Luid = luid; 222 | tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 223 | 224 | AdjustTokenPrivileges(hToken, false, &tkp, sizeof(tkp), NULL, NULL); 225 | 226 | CloseHandle(hToken); 227 | } 228 | 229 | VOID EnumProcess() 230 | { 231 | EnableDebugPriv(); 232 | DWORD pid = 0; 233 | HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 234 | PROCESSENTRY32 process; 235 | ZeroMemory(&process, sizeof(process)); 236 | process.dwSize = sizeof(process); 237 | printf(" 进程名称 进程ID 父进程ID 32/64位\n"); 238 | if (Process32First(snapshot, &process)) 239 | { 240 | do 241 | { 242 | printf("%20.20ls %5d %5d ", process.szExeFile, process.th32ProcessID, process.th32ParentProcessID); 243 | HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, process.th32ProcessID); 244 | if (Is64BitPorcess(hProcess)) 245 | printf(" 64位\n"); 246 | else 247 | printf(" 32位\n"); 248 | CloseHandle(hProcess); 249 | } while (Process32Next(snapshot, &process)); 250 | } 251 | CloseHandle(snapshot); 252 | } 253 | 254 | HANDLE GetProcessByName(LPCSTR name) 255 | { 256 | EnableDebugPriv(); 257 | DWORD pid = 0; 258 | HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 259 | PROCESSENTRY32 process; 260 | ZeroMemory(&process, sizeof(process)); 261 | process.dwSize = sizeof(process); 262 | if (Process32First(snapshot, &process)) 263 | { 264 | do 265 | { 266 | if (stricmp(UnicodeToAnsi(process.szExeFile), name) == 0) 267 | { 268 | pid = process.th32ProcessID; 269 | break; 270 | } 271 | } while (Process32Next(snapshot, &process)); 272 | } 273 | CloseHandle(snapshot); 274 | 275 | if (pid != 0) 276 | { 277 | HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); 278 | return hProcess; 279 | } 280 | return NULL; 281 | 282 | } 283 | 284 | HANDLE GetProcessByWindowName(LPWSTR WindowsName) 285 | { 286 | HANDLE hProcess = NULL; 287 | DWORD pid, ERRO; 288 | HWND dnf = ::FindWindow(NULL, WindowsName); 289 | GetWindowThreadProcessId(dnf, &pid); 290 | EnableDebugPriv(); 291 | hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); 292 | if (hProcess == NULL) 293 | { 294 | printf("找不到进程!\n"); 295 | return 0; 296 | } 297 | return hProcess; 298 | } 299 | 300 | BOOL RemoteInject(HANDLE hProcess, LPCSTR szLibPath) 301 | { 302 | HANDLE hThread; 303 | HMODULE modHandle = GetModuleHandle(_T("Kernel32")); 304 | DWORD dwsize = (strlen(szLibPath) + 1)*sizeof(CHAR); 305 | LPVOID pLibRemote = VirtualAllocEx(hProcess, NULL, dwsize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); 306 | WriteProcessMemory(hProcess, pLibRemote, (LPVOID)szLibPath, dwsize, NULL); 307 | if (GetLastError()) return FALSE; 308 | LPTHREAD_START_ROUTINE func = (LPTHREAD_START_ROUTINE)GetProcAddress(modHandle, "LoadLibraryA"); 309 | DWORD tid; 310 | hThread = CreateRemoteThread(hProcess, NULL, 0, 311 | func, 312 | pLibRemote, 313 | 0, 314 | &tid); 315 | if (GetLastError()) return FALSE; 316 | WaitForSingleObject(hThread, INFINITE); 317 | CloseHandle(hThread); 318 | VirtualFreeEx(hProcess, pLibRemote, dwsize, MEM_DECOMMIT); 319 | return TRUE; 320 | } 321 | 322 | void usage() 323 | { 324 | printf("功能1:枚举系统中的进程\n"); 325 | printf("inject -e\n\n"); 326 | printf("功能2:向指定进程注入代码\n"); 327 | printf("inject {exe} {dll}\n"); 328 | printf("inject -pid {pid} {dll}\n"); 329 | printf("例如: inject.exe chrome.exe mydll.dll\n"); 330 | printf("注意exe版本和dll版本以及注入的程序的版本要一致\n"); 331 | exit(0); 332 | } 333 | 334 | int main(int argc, char* argv[]) 335 | { 336 | CHAR szLibPath[MAX_PATH] = { 0 }; 337 | GetCurrentDirectoryA(MAX_PATH, szLibPath); 338 | CHAR szDllName[MAX_PATH] = { 0 }; 339 | HANDLE hProcess = NULL; 340 | if (argc == 2) 341 | { 342 | if (strcmp(argv[1], "-e")) 343 | usage; 344 | EnumProcess(); 345 | return 0; 346 | } 347 | if (argc == 4) 348 | { 349 | if (strcmp(argv[1], "-pid")) 350 | usage(); 351 | else 352 | { 353 | DWORD pid = atoi(argv[2]); 354 | hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); 355 | } 356 | strcpy(szDllName, argv[3]); 357 | } 358 | if (argc == 3) 359 | { 360 | strcpy(szDllName, argv[2]); 361 | hProcess = GetProcessByName(argv[1]); 362 | } 363 | if (argc != 2 && argc != 4 && argc != 3) 364 | usage(); 365 | if (hProcess == NULL) 366 | { 367 | printf("找不到进程!\n"); 368 | return 0; 369 | } 370 | BOOL Is64_1 = Is64BitPorcess(hProcess); 371 | BOOL Is64_2 = Is64BitPorcess(GetCurrentProcess()); 372 | if (Is64_1 != Is64_2) 373 | { 374 | if (Is64_1) 375 | printf("请运行64位版本\n"); 376 | else 377 | printf("请运行32位版本\n"); 378 | return 0; 379 | } 380 | strcpy(szLibPath + strlen(szLibPath), "\\"); 381 | strcpy(szLibPath + strlen(szLibPath), szDllName); 382 | if (_access(szLibPath, 0)) 383 | { 384 | printf("%s : dll不存在\n", szLibPath); 385 | return 0; 386 | } 387 | if (!RemoteInject(hProcess, szLibPath)) 388 | printf("注入失败\n"); 389 | else 390 | printf("注入成功\n"); 391 | return 0; 392 | } 393 | 394 | ``` 395 | 396 | 397 | 398 | #### 3. 什么是API Hook? 399 | 400 | 简单理解:假设我现在Hook了A函数,当其他线程调用了A函数,但实际上确是执行了B函数,而调用者却完全不知情。 401 | 402 | 例如 403 | 404 | ```cpp 405 | int A() { 406 | // 这一个是正常的函数,一般是游戏开发者编写的 407 | return 1; 408 | } 409 | 410 | int B() { 411 | // 这个是恶意的函数(一般是你模块注入成功后你编写的函数) 412 | // 通常是先保存A的地址,然后 413 | return 0; 414 | } 415 | 416 | int main() { 417 | // Hook(A, B); // 在其他线程中,A函数被Hook为B函数 418 | int res = A(); // 这里调用者不知情,实际上调用的是B函数 419 | } 420 | ``` 421 | 422 | 分享Hook MessageBox弹窗的例子。 423 | 424 | ```cpp 425 | #include 426 | 427 | //定义函数原型: MessageBoxA 428 | typedef int WINAPI OLD_MessageBoxA( __in_opt HWND hWnd, __in_opt LPCSTR lpText, __in_opt LPCSTR lpCaption, __in UINT uType); 429 | 430 | DWORD addr1; // 保存源码MeesageBoxA的地址 431 | 432 | __declspec(naked) int __stdcall My_MessageBoxA( __in_opt HWND hWnd, __in_opt LPCSTR lpText, __in_opt LPCSTR lpCaption, __in UINT uType) 433 | { 434 | __asm 435 | { 436 | mov edi, edi 437 | push ebp 438 | mov ebp ,esp 439 | } 440 | 441 | lpText="已被HOOK"; // 修改数据 442 | __asm 443 | { 444 | mov eax,addr1 445 | add eax,5 // 前5字节是我们的长jump指令 446 | jmp eax // 跳到MessageBox真正的代码区域 447 | } 448 | } 449 | 450 | int _tmain(int argc, _TCHAR* argv[]) 451 | { 452 | DWORD jump_code=0; 453 | byte mye9 = 0xe9; 454 | HMODULE DLLHANDLE= LoadLibraryA("USER32.DLL"); 455 | addr1= (DWORD)(GetProcAddress(DLLHANDLE,"MessageBoxA")); 456 | 457 | //改变内存读写属性 458 | VirtualProtect((LPVOID)addr1,10,PAGE_EXECUTE_READWRITE,NULL); 459 | 460 | //修改第一字节 461 | if (WriteProcessMemory(GetCurrentProcess(),(LPVOID)addr1,&mye9,1,NULL)==0) 462 | { 463 | printf("写入HOOK数据失败"); 464 | } 465 | 466 | //修改后4字节 :跳转码 JMP 1234 467 | //跳转码=将要跳到的函数-原来的函数地址-5 468 | //我们的跳转码=My_MessageBoxA-addr1-5 469 | jump_code=(DWORD)&My_MessageBoxA-addr1-5; 470 | if (WriteProcessMemory(GetCurrentProcess(),(DWORD*)(addr1+1),&jump_code,4,NULL)==0) 471 | { 472 | printf("写入HOOK数据失败"); 473 | } 474 | 475 | ::MessageBoxA(0,"HOOK1","提示",0); 476 | ::MessageBoxA(0,"HOOK2","提示",0); 477 | ::MessageBoxA(0,"HOOK3","提示",0); 478 | 479 | return 0; 480 | } 481 | ``` 482 | 483 | 运行之后调用MessageBoxA,窗口中的内容都是"已被Hook"。 484 | 485 | 这种Hook方法称为Inline Hook,因为在windows api中,如果函数被声明为__stdcall的话,汇编后的前5个字节是这样的 486 | 487 | ```asm 488 | mov edi, edi // 2字节 489 | push ebp // 1字节 490 | mov ebp, esp // 2字节 491 | ``` 492 | 493 | 这5个字节刚好可以组成一条长jump指令,只要修改函数代码段即可。 494 | 495 | 496 | 497 | #### 4. 参数入栈方式 498 | 499 | 在windows下参数一般都是从右往左入栈的,下面一个简单的程序 500 | 501 | ```cpp 502 | int fun(int a, float b, int c) { 503 | return 1; 504 | } 505 | 506 | int main() { 507 | ... 508 | func(1, 2, 3); 509 | } 510 | ``` 511 | 512 | 汇编之后,fun函数通常是这样的。 513 | 514 | ```cpp 515 | push ebp 516 | mov ebp,esp // 保存esp寄存器到ebp中 517 | 518 | sub esp,0C0h // 开辟栈空间 519 | 520 | push ebx 521 | push esi 522 | push edi // 保存寄存器 523 | 524 | lea edi,[ebp-0C0h] 525 | mov ecx,30h 526 | mov eax,0CCCCCCCCh 527 | rep stos dword ptr es:[edi] // 将栈空间初始化 528 | 529 | mov eax,1 // 将返回值设置1,eax为返回值寄存器 530 | 531 | pop edi 532 | pop esi 533 | pop ebx 534 | mov esp,ebp // 复原esp寄存器 535 | pop ebp // 复原ebp寄存器 536 | ret // 回到调用者的位置,相当于 add esp, 4; jmp [esp-4]; 537 | ``` 538 | 539 | 调用者方汇编代码通常是这样的 540 | 541 | ```cpp 542 | push 3 543 | push 2 544 | push 1 545 | call func // 相当于 push pc; jmp esp 546 | add esp, 0xCh // 因为push了3次,esp降低了12字节,所以需要add回来 547 | ``` 548 | 549 | **想了解更多,可以搜索程序运行时的栈空间布局,例如func函数的第一个变量地址是ebp-8,第二个变量是ebp-12,返回值存储在eax寄存器中** 550 | 551 | 552 | 553 | #### 5. 如何实现花里胡哨的特效(例如怪物自动扣血)? 554 | 555 | 几乎所有的辅助功能,都是调用游戏开发者写的某个函数的,比如怪物受到技能攻击,我们首先需要通过汇编找到攻击的call地址,然后在我们的dll模块中调用这个call从而实现效果,一般使用汇编来实现。 556 | 557 | (这里源码中基本都是中文,vs支持中文) 558 | 559 | 基本流程:通过遍历取得所有怪物的坐标地址和指针,然后用技能call对怪物进行攻击,使得怪物掉血。 560 | 561 | ```cpp 562 | void 释放call(int 对象基址, int 代码, int 伤害, int X, int Y, int Z) 563 | { 564 | _asm 565 | { 566 | push Z 567 | push Y 568 | push X 569 | push 伤害 570 | push 代码 571 | push 对象基址 572 | mov eax, 释放Call 573 | call eax 574 | add esp, 0x18 575 | } 576 | } 577 | 578 | void 全屏遍历() 579 | { 580 | int 一级偏移 = read(人物基址); 581 | int 二级偏移 = read(一级偏移 + 地图偏移); 582 | if (二级偏移 == 0) 583 | return; 584 | int 首地址_ = read(二级偏移 + 首地址); 585 | int 尾地址_ = read(二级偏移 + 尾地址); 586 | int 怪物数量 = (尾地址_ - 首地址_) / 4; 587 | int 技能数量_ = 0; 588 | int x, y, z; 589 | if (技能伤害 == 0) 590 | { 591 | int sum = 0, cnt = 0; 592 | for (int i = 1; i <= 怪物数量; i++) 593 | { 594 | int 地址 = read(首地址_ + 4 * i); 595 | if (地址 <= 0) 596 | continue; 597 | int 类型 = read(地址 + 类型偏移); 598 | int 阵营 = read(地址 + 阵营偏移); 599 | int 血量 = read(地址 + 怪物血量偏移); 600 | if ((类型 == 529 || 类型 == 545 || 类型 == 273) && 阵营 > 0 && 血量 > 0) 601 | { 602 | cnt++; 603 | sum += 血量; 604 | } 605 | } 606 | if (cnt == 0) return; 607 | for (int i = 0; i < 技能代码个数; i++) 608 | { 609 | 超级加密(Atk[i] + 32, sum / cnt ); 610 | } 611 | } 612 | for (int i = 0; i <= 怪物数量; i++) 613 | { 614 | int 地址 = read(首地址_ + 4 * i); 615 | if (地址 <= 0) 616 | continue; 617 | int 类型 = read(地址 + 类型偏移); 618 | int 阵营 = read(地址 + 阵营偏移); 619 | int 血量 = read(地址 + 怪物血量偏移); 620 | int 代码 = read(地址 + 对象代码); 621 | x = (int)read(地址 + X坐标); 622 | y = (int)read(地址 + Y坐标); 623 | z = (int)read(地址 + Z坐标); 624 | if ((类型 == 529 || 类型 == 545 || 类型 == 273) && 阵营 > 0 && 血量 > 0 && 地址 != 一级偏移) 625 | { 626 | 技能代码 = 技能代码集合[index % 技能代码个数]; 627 | 释放call(一级偏移, 技能代码, 0, x, y, z); 628 | 技能数量_ += 1; 629 | index++; 630 | if (技能数量_ == 技能个数) 631 | break; 632 | } 633 | 634 | } 635 | if (index > 100) 636 | index = 0; 637 | } 638 | ``` 639 | 640 | 641 | 642 | #### 6. 发包相关 643 | 644 | 一般都是下send断点,然后通过调用堆栈定位关键函数,这方面需要对网络编程和调试水平非常的熟悉,发包可以实现很多功能,甚至是脱机刷图。。。 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | -------------------------------------------------------------------------------- /pic/20180203135449.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/20180203135449.jpg -------------------------------------------------------------------------------- /pic/20180203210201.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/20180203210201.jpg -------------------------------------------------------------------------------- /pic/20180204143325.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/20180204143325.jpg -------------------------------------------------------------------------------- /pic/20180204161712.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/20180204161712.jpg -------------------------------------------------------------------------------- /pic/20180204175332.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/20180204175332.jpg -------------------------------------------------------------------------------- /pic/20180207203719.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/20180207203719.jpg -------------------------------------------------------------------------------- /pic/F7DEE10C-83FE-406E-8954-58A366E8FF49-520-00000046E47E4ADE_tmp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/F7DEE10C-83FE-406E-8954-58A366E8FF49-520-00000046E47E4ADE_tmp.jpg -------------------------------------------------------------------------------- /pic/IMG_0300.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/IMG_0300.JPG -------------------------------------------------------------------------------- /pic/IMG_0318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/pic/IMG_0318.jpg -------------------------------------------------------------------------------- /演示视频.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsay/game-helper/26fd77266778f949464a9fae8f2fb0a75ba32030/演示视频.mp4 --------------------------------------------------------------------------------