Trainer (games)

Game trainers are programs made to modify memory of a computer game thereby modifying its behavior using addresses and values, in order to allow cheating. It can "freeze" a memory address disallowing the game from lowering or changing the information stored at that memory address (e.g. health meter, ammo counter, etc.) or manipulate the data at the memory addresses specified to suit the needs of the person cheating at the game.

History

In the 1980s and 1990s, trainers were generally integrated straight into the actual game by cracking groups. When the game was first started, the trainer loaded first, asking the player if they wished to cheat and which cheats would like to be enabled. Then the code would proceed to the actual game. These embedded trainers came with intros about the groups releasing the game and the trainer often used to showcase the skills of the cracking group demo coding skills.[1] Some of these groups focus entirely on their Demoscene today.[2] In the cracker group release lists and intros, trained games were marked with one or more plus signs after them, one for each option or cheat in the trainer, for example: "the Mega Krew presents: Ms. Astro Chicken++". Modern trainers append their titles with a single + or writing "plus" and a number, as many have several functions. The number used represents the number of modifications the trainer has available, e.g. 'infinite health' or 'one hit kills'. Another difference is the inclusion of game version or digital download source of game. For example: "Hitman: Absolution Steam +11 Trainer",[3] "F.E.A.R 3 v 1.3 PLUS 9 Trainer" etc.[4][5]

Modern trainers also come as separately downloaded programs. Instead of modifying the game's programming directly, they modify values stored in memory. In fact, this has become so common that trainers today, by definition, only modify memory; modification to the game's executable is frowned upon and such programs are not considered true trainers but patches instead.

With object-oriented programming the memory objects are often stored dynamically on the heap but modern operating systems use address space layout randomization (ASLR). Therefore, the only way to modify such memory in a reproducible manner is to get information from inside the game process. This requires reverse engineering methods like API hooking of malloc() and free(), code injection or searching for static access pointers. The trainer gets active when the object has been allocated and deactivates itself again when the object is freed.

Modern operating systems also come with position-independent executables (PIE) for security. Together with ASLR, the binaries are loaded to a different virtual memory address each code execution. This makes the reliable modification of static memory values more complex. The load address has to be determined and subtracted from a found memory address to obtain a static memory offset. This offset is often exactly the address of the static variable within the PIE binary. E.g. the Linux tool scanmem supports PIE this way.[6] For the configured memory offset the game trainer determines the load address as well and adds it back during run-time. The same method can be used for dynamic libraries as well.

Static access pointers vs. API hooking

Searching and following access pointers reverse to pointers on static memory can be cumbersome. It doesn't provide the size of the object and if there are multiple objects of the same class, these often can't be handled correctly as there can be e.g. vectors or lists in between on the heap. But the advantage is that this method can be used to attach to an already running process if it works. The DMA (Dynamic Memory Allocation) support in Cheat Engine is an example for that.

API hooking works completely differently: A preloader loads a library into the game process while starting it. The library spies on dynamic memory allocations and discovery starts with recording them all. With static memory search in parallel it is possible to match the found value address to a unique memory allocation. The idea is to close the game process directly after the value is found and the object still exists. Then, the last matching memory allocation is the correct one. So matching it reverse is the method of choice. The object size as well as the value offset inside it are discovered and the jump-back code address in the game binary can be determined by backtracing. Often a constructor is found and with that it is possible keep track of all memory objects it allocates. The library in the game process and the game trainer need to communicate with each other through inter-process communication (IPC). The disadvantage is: This can be detected as malware. But it is possible to find more values within objects by dumping and comparing them. Also adaptation to other game and compiler versions becomes simple as all it takes is to look for a library function call with known parameter (the object size) in the disassembly. E.g. the free and open-source (FOSS) universal game trainer "ugtrain" shows this method completely legal with FOSS games as examples.[7]

Automated tools used in trainer making

In the past, trainers were often coded in assembly language or any of the high level language available at the time. Today, trainers can also be made with automated trainer making tools that just require basic information about cheats such as address and injection code, the program then compiles the trainer using pre-defined values and settings requiring no programming skill from the end-user. The most popular trainer making tool used today is Cheat Engine which supports wide variety of injection types and pointers, other tools that were used in past but are no longer as applicable are Trainer Maker Kit, Game Trainer Studio and Trainer Creation Kit etc.[8] Some of the advanced techniques that Cheat Engine trainers supports include code injection, code shifting and the flexibility and versatility provided by its Lua scripting[9][10] which has phased out other trainer making tools which lacked the support for some of these features. [11]

References

  1. ^ "Defacto2 Group Information Page for Fairlight". Contains information about their old demos and releases and stats. Archived from the original on 6 October 2011. Retrieved 14 February 2014.
  2. ^ "Razor1911 group demos". Razor1911 demoscene division which coded impressive demos back in the early days of embedded trainers. Retrieved 14 February 2014.
  3. ^ "Hitman Trainer". Naming of Trainers by Modern trainer groups. 21 November 2012. Retrieved 14 February 2014.
  4. ^ "GCW list of trainers". Retrieved 14 February 2014.
  5. ^ "Listing by the famous scene trainer making group DVT". Retrieved 5 June 2015.
  6. ^ "Scanmem: introduce region type and load address support". GitHub. Retrieved 5 June 2015.
  7. ^ "universal game trainer "ugtrain"". GitHub. Retrieved 25 December 2015.
  8. ^ "Trainer Making Tools". Retrieved 14 February 2014.
  9. ^ "FearlessRevolution". Community dedicated to cheat engine trainers and tables. 2020-03-25. Retrieved 2020-03-25.
  10. ^ "Lua". Cheat Engine Lua Wiki explaining some of the scripting functions available in CE. 2013-06-11. Retrieved 2014-02-14.
  11. ^ "OPTrainers". Retrieved 2021-06-23.

Read other articles:

Pour les articles homonymes, voir Rouille. Écidies (I) d'Uromyces dactylidis sur la ficaire. Urédies (II) de Gymnosporangium juniperi-virginianae sur un genévrier. Urédie (II) de Phragmidium mucronatum sur un églantier. Écidies (I) de Chrysomyxa abietis sur l'épicéa (Épinette). Les rouilles sont un ensemble de maladies cryptogamiques des plantes vasculaires dont les agents pathogènes responsables sont des champignons basidiomycètes (Fungi) de l'ordre des Pucciniales (anciennem...

 

Undang-Undang Tarif 1930Judul lengkapSuatu UU Untuk memberikan pendapatan, untuk mengatur perdagangan dengan negara-negara asing, untuk mendorong industri Amerika Serikat, untuk melindungi tenaga kerja Amerika, dan untuk tujuan lainnya.JulukanTarif Smoot-Hawley, Tarif Hawley-SmootDisahkan olehKongres Amerika Serikat ke-71Berlaku13 Maret 1930KutipanPublic lawPub.L. 71-361Statutes at Largech. 497, 46 Stat. 590Riwayat legislatifDiajukan di Dewan Perwakilan dengan nama H.R. 2667 ol...

 

Pour les articles homonymes, voir al-Muqtadir. Al-MuqtadirFonctionCalife abbasside13 août 908 - 28 février 929Al-MuktafiAl-QahirBiographieNaissance 13 novembre 895BagdadDécès 31 octobre 932 (à 36 ans)BagdadNom dans la langue maternelle المقتدرActivités Homme politique, califeFamille AbbassidesPère Al-MutadidMère Shaghab (en)Fratrie Al-MuktafiAl-QahirEnfants Al-MuttaqiAr-RadiAl-MutiIshaq ibn al-Muqtadir (en)Parentèle Al-Qadir (petit-fils)modifier - modifier le code -...

Daerah VI (Sumatera Timur II)HKI Ressort Khusus MandalaGerejaGereja Huria Kristen IndonesiaKantorKota MedanWilayah pelayananKota Medan Kabupaten Deli Serdang Kabupaten Langkat Kota Binjai Kota Tebing Tinggi Kabupaten Serdang Bedagai Kabupaten Batu BaraRessort16[1]Resort khusus9[1]Gereja92[1]Jumlah anggota jemaat25.728 jiwa[1] Rumah tangga5.658 KK HKI Wilayah VI (Sumatera Timur II) adalah salah satu administratif kewilayahan gerejawi HKI yang berpusat di Medan d...

 

Le Juge Fayard dit « le Shériff » Logo de l'affiche de 1977 Données clés Réalisation Yves Boisset Scénario Yves BoissetClaude Veillot Musique Philippe Sarde Acteurs principaux Patrick DewaereAurore ClémentPhilippe LéotardMichel Auclair Sociétés de production Production CompaniesAction FilmsFilmédisSociété Française de Production Pays de production France Genre Drame, policier Durée 112 minutes Sortie 1977 Pour plus de détails, voir Fiche technique et Distribution. ...

 

International competition sport This article's factual accuracy may be compromised due to out-of-date information. Please help update this article to reflect recent events or newly available information. (February 2018) Snowboarding at the Winter OlympicsIOC Discipline CodeSBDGoverning bodyFISEvents10 (men: 5; women: 5)Games 1924 1928 1932 1936 1948 1952 1956 1960 1964 1968 1972 1976 1980 1984 1988 1992 1994 1998 2002 2006 2010 2014 2018 2022 Medalists Snowboarding is a sport at the Winter Ol...

River in New York, United StatesOtsquago CreekRapids on the creek by VanhornesvilleLocation of the mouth of Otsquago CreekShow map of New York Adirondack ParkOtsquago Creek (the United States)Show map of the United StatesLocationCountryUnited StatesStateNew YorkRegionCentral New York RegionCountiesHerkimer, MontgomeryTownsStark, MindenPhysical characteristicsSourceUn-named Marshy Field • locationVan Hornesville, New York • coordinates42°54′27″N 74°50...

 

此條目可参照英語維基百科相應條目来扩充。 (2017年8月)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。 密西西比州 美國联邦州State of Mississippi 州旗州徽綽號:木蘭之州地图中高亮部分为密西西比州坐标:30°13'N�...

 

Rhode Island gubernatorial election 1860 Rhode Island gubernatorial election ← 1859 April 4, 1860 1861 →   Nominee William Sprague IV Seth Padelford Party Democratic Republican Alliance Conservative Popular vote 12,278 10,740 Percentage 53.02% 46.38% Governor before election Thomas G. Turner Republican Elected Governor William Sprague IV Democratic Elections in Rhode Island Federal government Presidential elections 1792 1796 1800 1804 1808 1812 1816 1820 1824 1...

Constituency of the National Assembly of Pakistan NA-215 Tharparkar-IIConstituencyfor the National Assembly of PakistanRegionKaloi, Diplo, Mithi and Islamkot Tehsils and Chachro Tehsil (partly) of Tharparkar DistrictElectorate415,109 [1]Current constituencyMember(s)VacantCreated fromNA-229 Tharparkar-I NA-215 Tharparkar-II (این اے-215، تھرپارکر-2) is a constituency for the National Assembly of Pakistan.[2] Members of Parliament 2018-2022: NA-222 Tharparkar-II Ele...

 

For other people with similar names, see Samuel Storey. Samuel StoryBorn(1752-10-02)2 October 1752Maasbommel, Guelders, Dutch RepublicDied8 January 1811(1811-01-08) (aged 58)Cleves, First French EmpireAllegiance Batavian RepublicBranchBatavian NavyAdmiralty of the MazeService years1770–1804RankVice AdmiralConflictsFrench Revolutionary WarsVlieter incident Samuel Story (2 October 1752 – 8 January 1811) was a vice admiral of the Batavian Republic Navy. He commanded the squadr...

 

هريك   الإحداثيات 39°13′09″N 88°59′03″W / 39.2192°N 88.9842°W / 39.2192; -88.9842   [1] تقسيم إداري  البلد الولايات المتحدة[2]  التقسيم الأعلى مقاطعة شيلبي  خصائص جغرافية  المساحة 0.37 ميل مربع0.947945 كيلومتر مربع (1 أبريل 2010)  ارتفاع 182 متر  عدد السكان  عدد ال�...

حكومة الوحدة الوطنيةمعلومات عامةالبلد ليبيا الاختصاص ليبيا رئيس المجلس الرئاسي محمد المنفيرئيس الوزراء عبد الحميد الدبيبةالانتخابات 5 فبراير 2021الهيئة التشريعية مجلس النواب الليبيالتكوين 15 مارس 2021المدة 3 سنواتٍ وشهران و3 أيامٍموقع الويب gnu.gov.ly (العربية) التركيبة الأساسي�...

 

American politician Jim CourterChairman of the Defense Base Closure and Realignment CommissionIn office1991–1994PresidentGeorge H. W. BushBill ClintonSecretaryDick CheneyLes AspinWilliam PerryPreceded byposition establishedSucceeded byAlan J. DixonMember of theU.S. House of Representativesfrom New JerseyIn officeJanuary 3, 1979 – January 3, 1991Preceded byHelen Stevenson MeynerSucceeded byDick ZimmerConstituency13th district (1979–1983)12th district (1983–1991) Personal detai...

 

Indian Bengali language film industry based in West Bengal Not to be confused with Telugu cinema, also called Tollywood. This article is about Cinema in West Bengal, India. For Bengali cinema in Bangladesh, see Cinema of Bangladesh. TollywoodNo. of screens352 screens in West Bengal (2022)[1]Main distributorsSVFEskay MoviesSurinder FilmsGrassroot EntertainmentDev Entertainment VenturesWindows ProductionBengal TalkiesFriends CommunicationCamellia ProductionsRoadshow FilmsProduced featur...

Railway company in Switzerland This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (April 2021) (Learn how and when to remove this message) Montreux Oberland Bernois RailwayMOB train at Les Avants on 11 July 1985.OverviewNative nameChemin de fer Montreux Oberland BernoisStatusoperating hourly servicesLocaleVaud, Bernese HighlandsTerminiMontreuxLenk i.S.Stations36W...

 

Cet article est une ébauche concernant un film soviétique et le communisme. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les conventions filmographiques. La Chute de Berlin Données clés Titre original Падение БерлинаPadenie Berlina Réalisation Mikhaïl Tchiaoureli Scénario Mikhaïl TchiaoureliPiotr Pavlenko Acteurs principaux Mikheil GelovaniBoris AndreïevVladimir Saveliev Sociétés de production Mosfilm Pays de production Union sovi�...

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (يناير 2019) 1909 في البرازيلمعلومات عامةالسنة 1909 البلد البرازيل 1908 في البرازيل 1910 في البرازيل تعديل - تعديل مصدري - تعدي�...

Apple > iPad > iPad (第1世代) iPad 製造元 Apple種別 タブレット型メディアプレーヤー/コンピュータ発売日 Wi-Fi モデル: 2010年4月3日 (2010-04-03)3G モデル: 2010年4月30日 (2010-04-30)[1] 2010年5月28日 (2010-05-28)[2]OS iPhone OS 3.2(初期搭載版)iOS 5.1.1(最終版)CPU 1 GHz Apple A4 system-on-a-chip[3][4](1GHz、ARMアーキテクチャのCPU、PowerVR系のGPUを内蔵)メ...

 

جغرافيا بوتسوانامعلومات عامةالبلد بوتسوانا القارة إفريقيا الحدود ناميبياجنوب إفريقيازامبيازيمبابوي الأرض والتضاريسالمساحة 581٬737 كم² نسبة المياه 2٫5 أعلى نقطة Otse Hill (en) أدنى نقطة نهر ليمبوبو تعديل - تعديل مصدري - تعديل ويكي بيانات 22°00′S 24°00′E / 22.000°S 24.000°E / -22.000;...