Cheat Engine
Reading time: 12 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Cheat Engine एक उपयोगी प्रोग्राम है जो यह पता लगाने में मदद करता है कि महत्वपूर्ण मान कहाँ संग्रहीत हैं एक चल रहे खेल की मेमोरी में और उन्हें बदलता है।
जब आप इसे डाउनलोड और चलाते हैं, तो आपको इस उपकरण का उपयोग कैसे करें, इसका ट्यूटोरियल प्रस्तुत किया जाता है। यदि आप इस उपकरण का उपयोग करना सीखना चाहते हैं, तो इसे पूरा करना अत्यधिक अनुशंसित है।
आप क्या खोज रहे हैं?
यह उपकरण यह पता लगाने के लिए बहुत उपयोगी है कि कुछ मान (आमतौर पर एक संख्या) किसी प्रोग्राम की मेमोरी में कहाँ संग्रहीत है।
आमतौर पर संख्याएँ 4bytes रूप में संग्रहीत होती हैं, लेकिन आप उन्हें डबल या फ्लोट प्रारूपों में भी पा सकते हैं, या आप कुछ संख्याओं से अलग देखने की कोशिश कर सकते हैं। इस कारण से, आपको यह सुनिश्चित करने की आवश्यकता है कि आप चुनें कि आप क्या खोज रहे हैं:
आप विभिन्न प्रकार की खोजों को भी इंगित कर सकते हैं:
आप मेमोरी स्कैन करते समय खेल को रोकने के लिए बॉक्स को भी चेक कर सकते हैं:
हॉटकीज़
Edit --> Settings --> Hotkeys में आप विभिन्न उद्देश्यों के लिए विभिन्न हॉटकीज़ सेट कर सकते हैं जैसे खेल को रोकना (जो कि मेमोरी स्कैन करते समय बहुत उपयोगी है)। अन्य विकल्प उपलब्ध हैं:
मान को संशोधित करना
एक बार जब आप पाते हैं कि मान आप खोज रहे हैं (इस बारे में अधिक जानकारी अगले चरणों में) आप इसे संशोधित कर सकते हैं, इसे डबल क्लिक करके, फिर इसके मान पर डबल क्लिक करके:
और अंततः मेमोरी में संशोधन करने के लिए चेक को मार्क करके:
मेमोरी में परिवर्तन तुरंत लागू होगा (ध्यान दें कि जब तक खेल इस मान का फिर से उपयोग नहीं करता, तब तक मान खेल में अपडेट नहीं होगा).
मान की खोज
तो, हम यह मानते हैं कि एक महत्वपूर्ण मान (जैसे आपके उपयोगकर्ता का जीवन) है जिसे आप सुधारना चाहते हैं, और आप इस मान को मेमोरी में खोज रहे हैं)
ज्ञात परिवर्तन के माध्यम से
मान लेते हैं कि आप मान 100 की खोज कर रहे हैं, आप उस मान की खोज करते हैं और आपको कई संयोग मिलते हैं:
फिर, आप कुछ ऐसा करते हैं जिससे मान बदलता है, और आप खेल को रोकते हैं और अगली स्कैन करते हैं:
Cheat Engine उन मानों की खोज करेगा जो 100 से नए मान में बदल गए। बधाई हो, आपने उस पते को पाया जिसे आप खोज रहे थे, आप अब इसे संशोधित कर सकते हैं।
यदि आपके पास अभी भी कई मान हैं, तो उस मान को फिर से संशोधित करने के लिए कुछ करें, और पते को फ़िल्टर करने के लिए एक और "अगली स्कैन" करें।
अज्ञात मान, ज्ञात परिवर्तन
इस परिदृश्य में, यदि आप मान नहीं जानते लेकिन आप जानते हैं कि इसे कैसे बदलना है (और यहां तक कि परिवर्तन का मान) तो आप अपने नंबर की खोज कर सकते हैं।
तो, "अज्ञात प्रारंभिक मान" प्रकार की स्कैन करने से शुरू करें:
फिर, मान को बदलें, कैसे मान बदला है (मेरे मामले में यह 1 से घटा) और अगली स्कैन करें:
आपको सभी मान प्रस्तुत किए जाएंगे जो चयनित तरीके से संशोधित किए गए थे:
एक बार जब आप अपना मान पा लेते हैं, तो आप इसे संशोधित कर सकते हैं।
ध्यान दें कि कई संभव परिवर्तनों की संभावना है और आप परिणामों को फ़िल्टर करने के लिए इन चरणों को जितना चाहें कर सकते हैं:
यादृच्छिक मेमोरी पता - कोड खोजना
अब तक हमने एक मान संग्रहीत करने वाले पते को खोजने का तरीका सीखा है, लेकिन यह बहुत संभावना है कि खेल के विभिन्न निष्पादन में वह पता मेमोरी के विभिन्न स्थानों में हो। तो चलिए पता लगाते हैं कि हमेशा उस पते को कैसे खोजें।
कुछ उल्लेखित तरकीबों का उपयोग करते हुए, उस पते को खोजें जहाँ आपका वर्तमान खेल महत्वपूर्ण मान को संग्रहीत कर रहा है। फिर (यदि आप चाहें तो खेल को रोकते हुए) उस पते पर दाएँ क्लिक करें और "इस पते को एक्सेस करने वाले को खोजें" या "इस पते पर लिखने वाले को खोजें" का चयन करें:
पहला विकल्प यह जानने के लिए उपयोगी है कि कोड के कौन से भाग इस पते का उपयोग कर रहे हैं (जो कि खेल के कोड को संशोधित करने के लिए उपयोगी है)।
दूसरा विकल्प अधिक विशिष्ट है, और इस मामले में अधिक सहायक होगा क्योंकि हम यह जानने में रुचि रखते हैं कि यह मान कहाँ से लिखा जा रहा है।
एक बार जब आप इनमें से एक विकल्प का चयन कर लेते हैं, तो डीबगर प्रोग्राम से जुड़ जाएगा और एक नई खाली विंडो दिखाई देगी। अब, खेलें और उस मान को संशोधित करें (खेल को फिर से शुरू किए बिना)। विंडो में उन पते से भरा जाना चाहिए जो मान को संशोधित कर रहे हैं:
अब जब आपने उस पते को खोज लिया है जो मान को संशोधित कर रहा है, तो आप कोड को अपनी इच्छानुसार संशोधित कर सकते हैं (Cheat Engine आपको इसे NOPs के लिए जल्दी संशोधित करने की अनुमति देता है):
तो, आप अब इसे इस तरह संशोधित कर सकते हैं कि कोड आपके नंबर को प्रभावित न करे, या हमेशा सकारात्मक तरीके से प्रभावित करे।
यादृच्छिक मेमोरी पता - प्वाइंटर खोजना
पिछले चरणों का पालन करते हुए, उस स्थान को खोजें जहाँ आप रुचि रखते हैं। फिर, "इस पते पर लिखने वाले को खोजें" का उपयोग करके यह पता लगाएं कि कौन सा पता इस मान को लिखता है और उस पर डबल क्लिक करें ताकि डिस्सेम्बली दृश्य प्राप्त हो सके:
फिर, "[]" के बीच हेक्स मान की खोज करते हुए एक नई स्कैन करें (इस मामले में $edx का मान):
(यदि कई दिखाई देते हैं, तो आपको आमतौर पर सबसे छोटे पते की आवश्यकता होती है)
अब, हमने प्वाइंटर पाया है जो उस मान को संशोधित करेगा जिसमें हमें रुचि है।
"पता मैन्युअल रूप से जोड़ें" पर क्लिक करें:
अब, "प्वाइंटर" चेक बॉक्स पर क्लिक करें और टेक्स्ट बॉक्स में पाया गया पता जोड़ें (इस परिदृश्य में, पिछले चित्र में पाया गया पता "Tutorial-i386.exe"+2426B0 था):
(ध्यान दें कि पहले "पता" को स्वचालित रूप से उस प्वाइंटर पते से भरा गया है जिसे आप प्रस्तुत करते हैं)
OK पर क्लिक करें और एक नया प्वाइंटर बनाया जाएगा:
अब, हर बार जब आप उस मान को संशोधित करते हैं, तो आप महत्वपूर्ण मान को संशोधित कर रहे हैं, भले ही उस मान का पता अलग हो।
कोड इंजेक्शन
कोड इंजेक्शन एक तकनीक है जहाँ आप लक्षित प्रक्रिया में कोड का एक टुकड़ा इंजेक्ट करते हैं, और फिर कोड के निष्पादन को अपने द्वारा लिखित कोड के माध्यम से पुनः मार्गदर्शित करते हैं (जैसे आपको अंक देना बजाय उन्हें घटाने के)।
तो, कल्पना करें कि आपने उस पते को खोज लिया है जो आपके खिलाड़ी के जीवन से 1 घटा रहा है:
डिस्सेम्बल कोड प्राप्त करने के लिए Show disassembler पर क्लिक करें।
फिर, CTRL+a दबाकर ऑटो असेंबल विंडो को खोलें और Template --> Code Injection का चयन करें।
संशोधित करने के लिए आप जिस निर्देश का पता चाहते हैं, उसे भरें (यह आमतौर पर स्वचालित रूप से भरा जाता है):
एक टेम्पलेट उत्पन्न होगा:
तो, अपने नए असेंबली कोड को "newmem" अनुभाग में डालें और यदि आप नहीं चाहते कि इसे निष्पादित किया जाए तो "originalcode" से मूल कोड हटा दें। इस उदाहरण में, इंजेक्ट किया गया कोड 1 घटाने के बजाय 2 अंक जोड़ेगा:
Execute पर क्लिक करें और इसी तरह आपका कोड प्रोग्राम में इंजेक्ट होना चाहिए जिससे कार्यक्षमता का व्यवहार बदल जाए!
Cheat Engine 7.x (2023-2025) में उन्नत सुविधाएँ
Cheat Engine ने संस्करण 7.0 के बाद से विकसित होना जारी रखा है और कई गुणवत्ता-जीवन और आक्रामक-रिवर्सिंग सुविधाएँ जोड़ी गई हैं जो आधुनिक सॉफ़्टवेयर (और केवल खेल नहीं!) का विश्लेषण करते समय अत्यंत उपयोगी हैं। नीचे एक बहुत संक्षिप्त क्षेत्र गाइड है जो उन परिवर्धनों के लिए है जिनका आप संभवतः रेड-टीम/CTF कार्य के दौरान उपयोग करेंगे।
प्वाइंटर स्कैनर 2 में सुधार
Pointers must end with specific offsets
और नया Deviation स्लाइडर (≥7.4) जब आप अपडेट के बाद फिर से स्कैन करते हैं तो झूठे सकारात्मक को काफी कम करता है। इसे मल्टी-मैप तुलना (.PTR
→ Compare results with other saved pointer map) के साथ मिलाकर उपयोग करें ताकि केवल कुछ मिनटों में एक एकल लचीला बेस-प्वाइंटर प्राप्त किया जा सके।- बल्क-फिल्टर शॉर्टकट: पहले स्कैन के बाद
Ctrl+A → Space
दबाकर सब कुछ मार्क करें, फिरCtrl+I
(इनवर्ट) दबाकर उन पते को अस्वीकृत करें जो फिर से स्कैन में विफल रहे।
Ultimap 3 – Intel PT ट्रेसिंग
*7.5 से पुराने Ultimap को Intel Processor-Trace (IPT) के शीर्ष पर फिर से लागू किया गया है। इसका मतलब है कि आप अब लक्षित प्रक्रिया द्वारा लिए गए हर शाखा को बिना सिंगल-स्टेपिंग (यूजर-मोड केवल, यह अधिकांश एंटी-डीबग गैजेट्स को ट्रिप नहीं करेगा) रिकॉर्ड कर सकते हैं।
Memory View → Tools → Ultimap 3 → check «Intel PT»
Select number of buffers → Start
कुछ सेकंड बाद कैप्चर को रोकें और right-click → Save execution list to file करें। उच्च-आवृत्ति गेम-लॉजिक हॉटस्पॉट्स को अत्यंत तेजी से खोजने के लिए शाखा पते को Find out what addresses this instruction accesses
सत्र के साथ मिलाएं।
1-byte jmp
/ ऑटो-पैच टेम्पलेट्स
संस्करण 7.5 ने एक one-byte JMP स्टब (0xEB) पेश किया जो एक SEH हैंडलर स्थापित करता है और मूल स्थान पर एक INT3 रखता है। यह स्वचालित रूप से उत्पन्न होता है जब आप Auto Assembler → Template → Code Injection का उपयोग करते हैं उन निर्देशों पर जिन्हें 5-byte सापेक्ष कूद के साथ पैच नहीं किया जा सकता। यह पैक किए गए या आकार-सीमित रूटीन के भीतर "टाइट" हुक संभव बनाता है।
कर्नेल-स्तरीय स्टेल्थ DBVM (AMD & Intel) के साथ
DBVM CE का अंतर्निहित Type-2 हाइपरवाइज़र है। हाल के निर्माणों ने अंततः AMD-V/SVM समर्थन जोड़ा है ताकि आप Ryzen/EPYC होस्ट पर Driver → Load DBVM
चला सकें। DBVM आपको यह करने की अनुमति देता है:
- Ring-3/एंटी-डिबग जांचों के लिए अदृश्य हार्डवेयर ब्रेकपॉइंट्स बनाना।
- उपयोगकर्ता-मोड ड्राइवर बंद होने पर भी pageable या संरक्षित कर्नेल मेमोरी क्षेत्रों को पढ़ना/लिखना।
- VM-EXIT-रहित टाइमिंग-हमले बायपास करना (जैसे हाइपरवाइज़र से
rdtsc
क्वेरी करना)।
टिप: DBVM Windows 11 पर HVCI/Memory-Integrity सक्षम होने पर लोड करने से इनकार करेगा → इसे बंद करें या एक समर्पित VM-होस्ट पर बूट करें।
रिमोट / क्रॉस-प्लेटफ़ॉर्म डिबगिंग ceserver के साथ
CE अब ceserver का पूरा पुनर्लेखन प्रदान करता है और Linux, Android, macOS & iOS लक्ष्यों पर TCP के माध्यम से संलग्न हो सकता है। एक लोकप्रिय फोर्क Frida को एकीकृत करता है ताकि CE के GUI के साथ गतिशील इंस्ट्रुमेंटेशन को जोड़ा जा सके - जब आपको फोन पर चल रहे Unity या Unreal खेलों को पैच करने की आवश्यकता हो तो यह आदर्श है:
# on the target (arm64)
./ceserver_arm64 &
# on the analyst workstation
adb forward tcp:52736 tcp:52736 # (or ssh tunnel)
Cheat Engine → "Network" icon → Host = localhost → Connect
For the Frida bridge see bb33bb/frida-ceserver
on GitHub.
Other noteworthy goodies
- Patch Scanner (MemView → Tools) – अप्रत्याशित कोड परिवर्तनों का पता लगाता है; मैलवेयर विश्लेषण के लिए उपयोगी।
- Structure Dissector 2 – drag-an-address →
Ctrl+D
, फिर Guess fields C-structures का स्वचालित मूल्यांकन करने के लिए। - .NET & Mono Dissector – यूनिटी गेम समर्थन में सुधार; CE Lua कंसोल से सीधे विधियों को कॉल करें।
- Big-Endian custom types – उल्टे बाइट क्रम स्कैन/संपादित करें (कंसोल एमुलेटर्स और नेटवर्क पैकेट बफर्स के लिए उपयोगी)।
- Autosave & tabs AutoAssembler/Lua विंडोज़ के लिए, साथ ही
reassemble()
मल्टी-लाइन निर्देश पुनःलेखन के लिए।
Installation & OPSEC notes (2024-2025)
- आधिकारिक इंस्टॉलर InnoSetup ad-offers (
RAV
आदि) के साथ लिपटा हुआ है। हमेशा Decline पर क्लिक करें या स्रोत से संकलित करें PUPs से बचने के लिए। AVs अभी भीcheatengine.exe
को HackTool के रूप में चिह्नित करेंगे, जो अपेक्षित है। - आधुनिक एंटी-चीट ड्राइवर (EAC/Battleye, ACE-BASE.sys, mhyprot2.sys) CE की विंडो क्लास का पता लगाते हैं, भले ही इसका नाम बदल दिया गया हो। अपने रिवर्सिंग कॉपी को एक नष्ट करने योग्य VM के अंदर चलाएँ या नेटवर्क खेल को बंद करने के बाद।
- यदि आपको केवल उपयोगकर्ता-मोड एक्सेस की आवश्यकता है तो
Settings → Extra → Kernel mode debug = off
चुनें ताकि CE के अस्वीकृत ड्राइवर को लोड करने से बचा जा सके जो Windows 11 24H2 Secure-Boot पर BSOD कर सकता है।
References
- Cheat Engine 7.5 release notes (GitHub)
- frida-ceserver cross-platform bridge
- Cheat Engine tutorial, complete it to learn how to start with Cheat Engine
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।