├── 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 | 
31 |
32 |
33 |
34 | - 面板(攻击力)提升
35 |
36 | 例如修改自身的力量,把自身物攻提到21w,开启这个功能很容易造成游戏数据异常。。
37 | 
38 |
39 |
40 | - 召唤高达
41 |
42 | 这个有点像是个人偶,不过人物可以坐在里面操控,攻击力很高
43 | 
44 |
45 |
46 |
47 | - 自动攻击
48 | 这个是最常用的,让怪物附近自动生成技能然后攻击怪物,攻击的血量是可以指定的,如果血量足够高就是全屏秒杀了。
49 |
50 | 
51 |
52 |
53 |
54 | - 人物透明,3S评分
55 |
56 | 
57 |
58 |
59 |
60 | - 加buff
61 | 可以给自己加大量的buff让自己变得更强
62 |
63 | 
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
--------------------------------------------------------------------------------