├── img ├── plugin.png └── plugin2.png ├── main.cpp ├── README.md ├── plugin.pro ├── util.h ├── dialog.h ├── dialog.cpp ├── dialog.ui ├── util.cpp └── plugin.pro.user /img/plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Neilai/CS-plugin/HEAD/img/plugin.png -------------------------------------------------------------------------------- /img/plugin2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Neilai/CS-plugin/HEAD/img/plugin2.png -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include "dialog.h" 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication a(argc, argv); 7 | Dialog w; 8 | w.show(); 9 | 10 | return a.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CS-plugin 2 | CS 1.6中文版游戏外挂,gui使用qt,供逆向初学者参考学习 3 | 4 | ## 功能 5 | 6 | - [x] 锁血 7 | - [x] 无后座力 8 | - [x] 无限子弹 9 | - [x] 飞天 10 | - [x] 遁地 11 | - [x] 穿墙 12 | - [ ] 透视 13 | - [ ] 自瞄 14 | ## 效果图 15 | ![](https://raw.githubusercontent.com/Neilai/CS-plugin/master/img/plugin2.png) 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /plugin.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2019-02-22T20:53:14 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core gui 8 | 9 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 10 | 11 | TARGET = untitled5 12 | TEMPLATE = app 13 | 14 | 15 | SOURCES += main.cpp\ 16 | dialog.cpp \ 17 | util.cpp 18 | 19 | HEADERS += dialog.h \ 20 | util.h 21 | 22 | FORMS += dialog.ui 23 | -------------------------------------------------------------------------------- /util.h: -------------------------------------------------------------------------------- 1 | #ifndef UTIL 2 | #define UTIL 3 | 4 | #include 5 | typedef struct __THREAD_DATA 6 | { 7 | HANDLE GameHandle ; 8 | }THREAD_DATA; 9 | DWORD GetProcessID(wchar_t *FileName); 10 | void goLand(THREAD_DATA* pThreadData); 11 | DWORD WINAPI fly(LPVOID lpParameter); 12 | DWORD WINAPI down(LPVOID lpParameter); 13 | DWORD WINAPI bullet(LPVOID lpParameter); 14 | DWORD WINAPI blood(LPVOID lpParameter); 15 | DWORD WINAPI recoil(LPVOID lpParameter); 16 | void wall(THREAD_DATA* pThreadData); 17 | void goback(THREAD_DATA* pThreadData); 18 | 19 | #endif // UTIL 20 | 21 | 22 | -------------------------------------------------------------------------------- /dialog.h: -------------------------------------------------------------------------------- 1 | #ifndef DIALOG_H 2 | #define DIALOG_H 3 | #include"util.h" 4 | #include 5 | 6 | namespace Ui { 7 | class Dialog; 8 | } 9 | 10 | class Dialog : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit Dialog(QWidget *parent = 0); 16 | THREAD_DATA threadData; 17 | HANDLE Thread_fly; 18 | HANDLE Thread_down; 19 | HANDLE Thread_recoil; 20 | HANDLE Thread_blood; 21 | HANDLE Thread_bullet; 22 | ~Dialog(); 23 | private slots: 24 | void on_checkBox_clicked(bool checked); 25 | 26 | void on_checkBox_2_clicked(bool checked); 27 | 28 | void on_checkBox_3_clicked(bool checked); 29 | 30 | void on_checkBox_4_clicked(bool checked); 31 | 32 | void on_checkBox_5_clicked(bool checked); 33 | 34 | void on_checkBox_6_clicked(bool checked); 35 | 36 | private: 37 | Ui::Dialog *ui; 38 | }; 39 | 40 | #endif // DIALOG_H 41 | -------------------------------------------------------------------------------- /dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "dialog.h" 2 | #include "ui_dialog.h" 3 | #include 4 | 5 | Dialog::Dialog(QWidget *parent) : 6 | QDialog(parent), 7 | ui(new Ui::Dialog) 8 | { 9 | ui->setupUi(this); 10 | this->threadData.GameHandle = OpenProcess(PROCESS_ALL_ACCESS, 1, GetProcessID(L"cstrike.exe")); 11 | } 12 | 13 | Dialog::~Dialog() 14 | { 15 | delete ui; 16 | } 17 | 18 | void Dialog::on_checkBox_clicked(bool checked) 19 | { 20 | 21 | if(checked){ 22 | wall(&this->threadData); 23 | } 24 | else{ 25 | goback(&this->threadData); 26 | } 27 | } 28 | 29 | void Dialog::on_checkBox_2_clicked(bool checked) 30 | { 31 | if(checked){ 32 | this->Thread_bullet = CreateThread(NULL, 0, bullet, &this->threadData, 0, NULL); 33 | } 34 | else{ 35 | TerminateThread(this->Thread_bullet,0); 36 | } 37 | 38 | } 39 | 40 | void Dialog::on_checkBox_3_clicked(bool checked) 41 | { 42 | if(checked){ 43 | this->Thread_blood = CreateThread(NULL, 0, blood, &this->threadData, 0, NULL); 44 | } 45 | else{ 46 | TerminateThread(this->Thread_blood,0); 47 | } 48 | } 49 | 50 | void Dialog::on_checkBox_4_clicked(bool checked) 51 | { 52 | if(checked){ 53 | this->Thread_fly = CreateThread(NULL, 0, fly, &this->threadData, 0, NULL); 54 | } 55 | else{ 56 | TerminateThread(this->Thread_fly,0); 57 | goLand(&this->threadData); 58 | } 59 | } 60 | 61 | void Dialog::on_checkBox_5_clicked(bool checked) 62 | { 63 | if(checked){ 64 | this->Thread_down = CreateThread(NULL, 0, down, &this->threadData, 0, NULL); 65 | } 66 | else{ 67 | TerminateThread(this->Thread_down,0); 68 | goLand(&this->threadData); 69 | } 70 | } 71 | 72 | void Dialog::on_checkBox_6_clicked(bool checked) 73 | { 74 | if(checked){ 75 | this->Thread_recoil = CreateThread(NULL, 0, recoil, &this->threadData, 0, NULL); 76 | } 77 | else{ 78 | TerminateThread(this->Thread_recoil,0); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 371 10 | 229 11 | 12 | 13 | 14 | CS1.6游戏外挂 15 | 16 | 17 | 18 | 19 | 40 20 | 50 21 | 107 22 | 141 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 | 210 53 | 50 54 | 107 55 | 141 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 | -------------------------------------------------------------------------------- /util.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include"util.h" 5 | using namespace std; 6 | //取进程ID 7 | DWORD GetProcessID(wchar_t *FileName) 8 | { 9 | HANDLE hProcess; 10 | PROCESSENTRY32 pe; 11 | BOOL bRet; 12 | //进行进程快照 13 | hProcess = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 14 | pe.dwSize = sizeof(PROCESSENTRY32W); 15 | //开始进程查找 16 | bRet = ::Process32First(hProcess, &pe); 17 | //循环比较,得出ProcessID 18 | while (bRet) 19 | { 20 | if (wcscmp(FileName, pe.szExeFile) == 0) 21 | return pe.th32ProcessID; 22 | else 23 | bRet = ::Process32Next(hProcess, &pe); 24 | } 25 | return 0; 26 | } 27 | //正常 28 | void goLand(THREAD_DATA* pThreadData){ 29 | DWORD Buffer = 0; 30 | DWORD My_New = 1099431936; 31 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 32 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer + (0X1FC)), &My_New, sizeof(DWORD), NULL); 33 | } 34 | 35 | //飞天 36 | DWORD WINAPI fly(LPVOID lpParameter) 37 | { 38 | DWORD Buffer = 0; 39 | DWORD My_New = 1132068864; 40 | THREAD_DATA* pThreadData = (THREAD_DATA*)lpParameter; 41 | while(1){ 42 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 43 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer + (0X1FC)), &My_New, sizeof(DWORD), NULL); 44 | } 45 | return 0L; 46 | } 47 | 48 | //遁地 49 | DWORD WINAPI down(LPVOID lpParameter) 50 | { 51 | DWORD Buffer = 0; 52 | DWORD My_New = 3279552512; 53 | THREAD_DATA* pThreadData = (THREAD_DATA*)lpParameter; 54 | while(1){ 55 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 56 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer + (0X1FC)), &My_New, sizeof(DWORD), NULL); 57 | } 58 | return 0L; 59 | } 60 | 61 | //无限子弹 62 | DWORD WINAPI bullet(LPVOID lpParameter) 63 | { 64 | DWORD Buffer = 0; 65 | DWORD My_New = 30; 66 | THREAD_DATA* pThreadData = (THREAD_DATA*)lpParameter; 67 | while(1){ 68 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 69 | DWORD Base=Buffer+(0x7C); 70 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(Base), &Buffer, sizeof(DWORD), NULL); 71 | Base=Buffer+(0x5EC); 72 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(Base), &Buffer, sizeof(DWORD), NULL); 73 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer +(0xCC)), &My_New, sizeof(DWORD), NULL); 74 | } 75 | return 0L; 76 | } 77 | 78 | 79 | //锁血 80 | DWORD WINAPI blood(LPVOID lpParameter) 81 | { 82 | DWORD Buffer = 0; 83 | DWORD My_New = 1120403456; 84 | THREAD_DATA* pThreadData = (THREAD_DATA*)lpParameter; 85 | while(1){ 86 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 87 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer + (0x1E0)), &My_New, sizeof(DWORD), NULL); 88 | } 89 | return 0L; 90 | } 91 | 92 | //无后座力 93 | DWORD WINAPI recoil(LPVOID lpParameter) 94 | { 95 | DWORD Buffer = 0; 96 | DWORD My_New1 = 0; 97 | DWORD My_New2 = 30; 98 | THREAD_DATA* pThreadData = (THREAD_DATA*)lpParameter; 99 | while(1){ 100 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 101 | DWORD Base=Buffer+(0x7C); 102 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(Base), &Buffer, sizeof(DWORD), NULL); 103 | Base=Buffer+(0x5EC); 104 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(Base), &Buffer, sizeof(DWORD), NULL); 105 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer +(0x100)), &My_New1, sizeof(DWORD), NULL); 106 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 107 | Base=Buffer+(0x7C); 108 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(Base), &Buffer, sizeof(DWORD), NULL); 109 | Base=Buffer+(0x5EC); 110 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(Base), &Buffer, sizeof(DWORD), NULL); 111 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer +(0xEC)), &My_New2, sizeof(DWORD), NULL); 112 | } 113 | return 0L; 114 | } 115 | 116 | 117 | //穿墙 118 | void wall(THREAD_DATA* pThreadData){ 119 | std::cout<<"wall"<GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 124 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer + (0X2C4)), &My_New, sizeof(DWORD), NULL); 125 | } 126 | 127 | void goback(THREAD_DATA* pThreadData){ 128 | DWORD Buffer = 0; 129 | DWORD My_New = 0; 130 | 131 | ReadProcessMemory(pThreadData->GameHandle, LPVOID(0x2081928), &Buffer, sizeof(DWORD), NULL); 132 | WriteProcessMemory(pThreadData->GameHandle, LPVOID(Buffer + (0X2C4)), &My_New, sizeof(DWORD), NULL); 133 | } 134 | 135 | //int main() 136 | //{ 137 | // THREAD_DATA threadData; 138 | 139 | // threadData.GameHandle = OpenProcess(PROCESS_ALL_ACCESS, 1, GetProcessID(L"cstrike.exe")); 140 | // HANDLE Thread_fly = CreateThread(NULL, 0, fly, &threadData, 0, NULL); 141 | // HANDLE Thread_down = CreateThread(NULL, 0, down, &threadData, 0, NULL); 142 | //HANDLE Thread_bullet = CreateThread(NULL, 0, bullet, &threadData, 0, NULL); 143 | // goLand(&threadData); 144 | // HANDLE Thread_blood = CreateThread(NULL, 0, blood, &threadData, 0, NULL); 145 | // HANDLE Thread_recoil = CreateThread(NULL, 0, recoil, &threadData, 0, NULL); 146 | // goback(&threadData); 147 | // while(1){}; 148 | // return 0; 149 | //} 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /plugin.pro.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EnvironmentId 7 | {11f0ed94-ab77-4df4-b177-cadbbfe01b40} 8 | 9 | 10 | ProjectExplorer.Project.ActiveTarget 11 | 0 12 | 13 | 14 | ProjectExplorer.Project.EditorSettings 15 | 16 | true 17 | false 18 | true 19 | 20 | Cpp 21 | 22 | CppGlobal 23 | 24 | 25 | 26 | QmlJS 27 | 28 | QmlJSGlobal 29 | 30 | 31 | 2 32 | UTF-8 33 | false 34 | 4 35 | false 36 | 80 37 | true 38 | true 39 | 1 40 | true 41 | false 42 | 0 43 | true 44 | 0 45 | 8 46 | true 47 | 1 48 | true 49 | true 50 | true 51 | false 52 | 53 | 54 | 55 | ProjectExplorer.Project.PluginSettings 56 | 57 | 58 | 59 | ProjectExplorer.Project.Target.0 60 | 61 | Desktop Qt 5.4.2 MinGW 32bit 62 | Desktop Qt 5.4.2 MinGW 32bit 63 | qt.54.win32_mingw491_kit 64 | 0 65 | 0 66 | 0 67 | 68 | D:/QTtest/build-untitled5-Desktop_Qt_5_4_2_MinGW_32bit-Debug 69 | 70 | 71 | true 72 | qmake 73 | 74 | QtProjectManager.QMakeBuildStep 75 | false 76 | true 77 | 78 | false 79 | false 80 | false 81 | 82 | 83 | true 84 | Make 85 | 86 | Qt4ProjectManager.MakeStep 87 | 88 | false 89 | 90 | 91 | 92 | 2 93 | 构建 94 | 95 | ProjectExplorer.BuildSteps.Build 96 | 97 | 98 | 99 | true 100 | Make 101 | 102 | Qt4ProjectManager.MakeStep 103 | 104 | true 105 | clean 106 | 107 | 108 | 1 109 | 清理 110 | 111 | ProjectExplorer.BuildSteps.Clean 112 | 113 | 2 114 | false 115 | 116 | Debug 117 | 118 | Qt4ProjectManager.Qt4BuildConfiguration 119 | 2 120 | true 121 | 122 | 123 | D:/QTtest/build-untitled5-Desktop_Qt_5_4_2_MinGW_32bit-Release 124 | 125 | 126 | true 127 | qmake 128 | 129 | QtProjectManager.QMakeBuildStep 130 | false 131 | true 132 | 133 | false 134 | false 135 | false 136 | 137 | 138 | true 139 | Make 140 | 141 | Qt4ProjectManager.MakeStep 142 | 143 | false 144 | 145 | 146 | 147 | 2 148 | 构建 149 | 150 | ProjectExplorer.BuildSteps.Build 151 | 152 | 153 | 154 | true 155 | Make 156 | 157 | Qt4ProjectManager.MakeStep 158 | 159 | true 160 | clean 161 | 162 | 163 | 1 164 | 清理 165 | 166 | ProjectExplorer.BuildSteps.Clean 167 | 168 | 2 169 | false 170 | 171 | Release 172 | 173 | Qt4ProjectManager.Qt4BuildConfiguration 174 | 0 175 | true 176 | 177 | 2 178 | 179 | 180 | 0 181 | 部署 182 | 183 | ProjectExplorer.BuildSteps.Deploy 184 | 185 | 1 186 | 在本地部署 187 | 188 | ProjectExplorer.DefaultDeployConfiguration 189 | 190 | 1 191 | 192 | 193 | 194 | false 195 | false 196 | false 197 | false 198 | true 199 | 0.01 200 | 10 201 | true 202 | 1 203 | 25 204 | 205 | 1 206 | true 207 | false 208 | true 209 | valgrind 210 | 211 | 0 212 | 1 213 | 2 214 | 3 215 | 4 216 | 5 217 | 6 218 | 7 219 | 8 220 | 9 221 | 10 222 | 11 223 | 12 224 | 13 225 | 14 226 | 227 | 2 228 | 229 | untitled5 230 | 231 | Qt4ProjectManager.Qt4RunConfiguration:D:/QTtest/untitled5/untitled5.pro 232 | 233 | untitled5.pro 234 | false 235 | false 236 | 237 | 3768 238 | false 239 | true 240 | false 241 | false 242 | true 243 | 244 | 1 245 | 246 | 247 | 248 | ProjectExplorer.Project.TargetCount 249 | 1 250 | 251 | 252 | ProjectExplorer.Project.Updater.FileVersion 253 | 18 254 | 255 | 256 | Version 257 | 18 258 | 259 | 260 | --------------------------------------------------------------------------------