Step 1: Find the current address for whatever you want to get the pointer & offset of.
In this tutorial, I’ll be using max HP as an example. I first found my max HP by searching my current max HP, adding/removing equipment with + Max HP on it, and filtering the results.
Add that address to your address list (the bottom section in Cheat Engine).
Step 2: Find out what accesses that address
Now right click on the newly added address, and select «Find what accesses this address.» You will be prompted if you want to attach the debugger; select yes.
You may need to go back into the game and wait a few seconds before anything is added to the opcode box. After a few results turn up, cycle through them look for an entry that is labled as «Copy memory» on the right side below the buttons.
Step 3: Get the offset, and probable address to search for
Double click on this entry, and you will receive another window with detailed information in it. This window contains two very important pieces of information: the offset, and address to search for. The red text shows us the offset in hex. It will look something like this: >>004971b0 — mov ecx, [esi+0000012c]
From this, we can tell that 12C is our offset. Write this down.
The second important line contains the address we need to search for. It will say «The value of the pointer needed to find this address is pobably <address>». Write down the address, and you can now close this window.
Step 4: Searching the address
Now go back to the Cheat Engine main window, and begin a new scan. You will have the «Hex» checkbox checked, have the value set to the probable address to search for, scan type as Exact Value, and value type as 4 bytes. Click First Scan.
Now we should have a few results. You hopefully won’t have more than a few. Most likely, the address you want to use will appear green in the found list. The green text means that it is a static pointer (it will not change when you restart the game).
Now that you’ve found the pointer, you can put it to use. To add it into Cheat Engine, click the «Add address manually» button. Check Pointer, and copy the address from the green result in the address list (make sure it’s the address, and NOT the value!), and type in the offset you wrote down earlier from step 3. You’ve now got your full pointer and offset.
If the green results do not appear to work, or you do not see any green results, it is possible that the game uses a double pointer to access this specific variable, and you will need to run another pointer-offset lookup on the already found pointer and offset. A quick explanation of what this is all about can be found here.
|
Authenticator Code |
Thread Tools |
Finding Offsets Using Cheat Engine |
|
#1 |
computation 1337 H4x0!2 Join Date: Jan 2016
Reputation: 2724 |
Finding Offsets Using Cheat Engine Hello everyone. Many people have trouble finding offsets in games and understanding what an offset is (talking to beginners here not you leet haxors). So I want to make an over kill tutorial to clear any confusions on offsets and a simple way to find them. This tutorial is aimed at the very beginner who is just looking to get into hacking but doesn’t know the basics of offsets and is having trouble starting off. This tutorial is not designed to target internal or external game hacking specifically but general(and simple) memory concepts. You should have an understanding of programming (I will be using C++ in the short code examples) or else this will be useless. What Is An Offset? Code: struct player { int health; int ammo; float x; float y; float z; }; So here we have a struct. Now when we create a variable of a struct in memory a very awesome and simple thing happens. Every member in the struct gets created in memory back to back to back. Meaning our z coordinate is always the same distance to the beginning of the struct. The struct might start at a different memory address every time you run an application BUT the members in the struct are always the same distance away relative to each other. ammo will always come after health and nothing is declared in between them and so on and so forth. So what is an offset. An offset is just how far away something is (in bytes) relative to something else. In game hacking when we say offset we are often referring about offset from the start of our player (if we are talking about our player of course). Lets look at the struct but lets comment in the offsets that each member is. Code: struct player { int health; //0x0 int ammo; //0x4 float x; //0x8 float y; //0xC float z; //0x10 }; how do we know what the offsets are though? Well think about this for a second. If all of these members are in a struct, they will be allocated in memory right next to each other. If you know how many bytes each data type is we can do some simple addition. The first member in the struct is where the struct starts. So health is offset 0 bytes from the start of the struct because it is the start. And the next member is 4 bytes away from that (since health takes 4 bytes because its an int) so it is said to be offset 4 bytes. As long as you know the data type you can simply add how many bytes it is away from your reverence point (which is the start of the struct for us also called the start of local player). So an offset is just the number of bytes away from a reference point and in this case that’s the start of player. This is extremely simple but many «programmers» who make hacks use offsets but don’t understand what it actually is. Pointer To Local Player And Local Player Finding Offsets The Bigger Picture
|
computation is offline |
|
#2 |
|||||||||||
WasserEsser Site Administrator Join Date: Jun 2013
Reputation: 122812 Recognitions (43) (4)
(1) Points: 236,129, Level: 59 Level up: 20%, 257,871 Points needed Activity: 42.9% Last Achievements Award-Showcase |
@computation Use the direct links to the images. (Rightclick on the image and copy the direct link) __________________
|
|||||||||||
WasserEsser is online now |
|
#3 |
computation 1337 H4x0!2
Join Date: Jan 2016
Reputation: 2724 |
Quote:
Originally Posted by WasserEsser @computation Use the direct links to the images. (Rightclick on the image and copy the direct link) Sorry about that. Thanks for the fix! |
computation is offline |
|
#4 |
|||||||||||
Slayer Master Contributor Join Date: Jan 2016 Location: USA
Reputation: 17363 Recognitions
(2) Points: 37,008, Level: 29 Level up: 29%, 1,792 Points needed Activity: 2.1% Last Achievements |
Looks neat, but definitely add or update this and touch on finding pointers. Very important skills. Otherwise, this was simple and neat, great explanation! Kudos, ~Slayer1250~ __________________ Quote:
Originally Posted by Synraw Don’t blame me, blame the japanese. Nuke them once and they fight back with a weapon far more dangerous Quote:
Originally Posted by gorkx Bluntly: WHAT FUCK IS YOU PEOPLES GOD DAMN PROPBLEM? you are the most disterbingly egotistical little-endian bags ever! This isn’t…don farmer going ooff to risk jail time to further chaos,and market theory. this is a gots damn video game motherfuckers. jesus fucking christ. |
|||||||||||
Slayer is offline |
|
#5 |
|||||||||||
vergil250493 n00bie Join Date: Aug 2014
Reputation: -37 Points: 6,013, Level: 8 Level up: 56%, 487 Points needed Activity: 2.3% Last Achievements |
Thanks for the tutorial to beginners ! you could also add on how to find pointers |
|||||||||||
vergil250493 is offline |
|
#6 |
computation 1337 H4x0!2
Join Date: Jan 2016
Reputation: 2724 |
Quote:
Originally Posted by vergil250493 Thanks for the tutorial to beginners ! you could also add on how to find pointers thanks. there is so much on finding pointers that I feel it is not worth the time to say what can easily be found with a quick search. |
computation is offline |
|
#7 |
ccurtis20 h4x0!2 Join Date: Jan 2013
Reputation: 955 |
Thanks for the tutorial/info. +Rep |
ccurtis20 is offline |
|
#8 |
|||||||||||
wtffwtf Junior Member Join Date: Jun 2017
Reputation: 162 Points: 4,738, Level: 7 Level up: 27%, 662 Points needed Activity: 8.6% Last Achievements |
How do you find the address of sth that is not changeable (not like the ammo or health) easily? I want to find the address of unlocking all guns for example, how is this possible? |
|||||||||||
wtffwtf is offline |
|
#9 |
|||||||||||
Lawlessvictory n00bie Join Date: Dec 2017
Reputation: 23 Points: 1,061, Level: 2 Level up: 33%, 339 Points needed Activity: 1.3% Last Achievements |
Thanks for taking the time to write this, things like this help a lot. |
|||||||||||
Lawlessvictory is offline |
|
#10 |
chubbyH n00bie Join Date: Jan 2018
Reputation: 10 |
Thinks for sharing |
chubbyH is offline |
|
#11 |
|||||||||||
hieu832 n00bie Join Date: Jan 2018 Location: HA NOI
Reputation: 10 Points: 2,131, Level: 4 Level up: 5%, 669 Points needed Activity: 1.8% Last Achievements |
you can tutorial video plz. |
|||||||||||
hieu832 is offline |
|
#12 |
|||||||||||
jahaha A God Join Date: Jul 2007
Reputation: 858 Points: 15,227, Level: 16 Level up: 17%, 1,173 Points needed Activity: 4.8% Last Achievements |
Quote:
Originally Posted by hieu832 you can tutorial video plz. There’s many videos on this already, just open up youtube and search. Good guide btw. +rep |
|||||||||||
jahaha is offline |
|
#13 |
tsunaweak n00bie Join Date: Feb 2018
Reputation: 10 |
very helpful thank you so much ^_^ |
tsunaweak is offline |
|
#14 |
|||||||||||
Phnmz Senior Member Join Date: Feb 2015
Reputation: 132 Rep Power: 202 Points: 5,101, Level: 7 Level up: 67%, 299 Points needed Activity: 2.3% Last Achievements |
Good explanation, still need to know how to find pointers, and it would be about time someone explain how to do this on a game that has a simple anti-cheat at least, cause once you learn that from Assault Cube and try another game, you’re pretty much fucked as a beginner. (including myself) |
|||||||||||
Phnmz is offline |
Similar Threads |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
[Tutorial] Cheat Engine — Finding Base Address w/ Pointer Scan | xenocidewiki | Programming for Beginners | 16 | 26th June 2019 05:06 AM |
[Question] Finding offsets using IDA. | Articxslack | DayZ SA | 7 | 22nd July 2016 09:51 AM |
[Help] Cheat Engine not finding Rsc | nrodway11 | ARMA 3 | 3 | 27th March 2015 04:12 AM |
[Discuss] Is Finding Transformation Pointer Possible With Cheat Engine? | Falchon | DayZ SA | 1 | 22nd May 2014 08:52 AM |
Help with using OllyDBG finding adresses and offsets | traplol2 | ARMA 2 | 9 | 11th August 2012 10:13 AM |
Tags |
address, struct, player, offset, memory, ammo, bytes, local, offsets, start |
«
Previous Thread
|
Next Thread
»
Forum Jump |
All times are GMT. The time now is 12:33 PM.
Contact Us —
Toggle Dark Theme
Terms of Use Information Privacy Policy Information
Copyright ©2000-2023, Unknowncheats� UKCS #312436
no new posts
Всем привет. Я пишу ботов для MMORPG Guild Wars. Занимаюсь этим год — полтора. Все это не слишком сложно, потому что существует такой скрипт как GWA2.au3, данный скрипт был написан не мной, он находится в публичном доступе, каждый может его скачать и заниматься бытописанием для Guild Wars. В данном скрипте прописаны многие пути расположения тех или иных значений, такие как количество здоровья, координаты персонажа, место нахождение и тд, все это можно определить используя ту или иную функцию. Но увы всех функций не достаточно что бы писать новых ботов. Ниже приведу пример, нескольких функций.
; Пример первой функции
Func GetPartySize()
Local $lOffset[5] = [0, 0x18, 0x4C, 0x64, 0x24]
Local $lPartyPtr = MemoryReadPtr($mBasePointer, $lOffset)
Local $lReturn = MemoryRead($lPartyPtr[0], 'long') ; henchmen
Return $lReturn
EndFunc ;==>GetPartySize
; Пример первой 2 функции
Func GetMissionStartDelay()
Local $lOffset = [0, 0x18, 0x44, 0x9C, 0]
Return MemoryReadPtr($mBasePointer, $lOffset)[1]
EndFunc
Первая функция определяет количество персонажей в команде. Второй определяет статус команды (лидер команды, начата ли миссия и тд.)
Ниже MemoryReadPtr и MemoryRead.
;~ Description: Internal use only.
Func MemoryReadPtr($aAddress, $aOffset, $aType = 'dword')
Local $lPointerCount = UBound($aOffset) - 2
Local $lBuffer = DllStructCreate('dword')
For $i = 0 To $lPointerCount
$aAddress += $aOffset[$i]
DllCall($mKernelHandle, 'int', 'ReadProcessMemory', 'int', $mGWProcHandle, 'int', $aAddress, 'ptr', DllStructGetPtr($lBuffer), 'int', DllStructGetSize($lBuffer), 'int', '')
$aAddress = DllStructGetData($lBuffer, 1)
If $aAddress == 0 Then
Local $lData[2] = [0, 0]
Return $lData
EndIf
Next
$aAddress += $aOffset[$lPointerCount + 1]
$lBuffer = DllStructCreate($aType)
DllCall($mKernelHandle, 'int', 'ReadProcessMemory', 'int', $mGWProcHandle, 'int', $aAddress, 'ptr', DllStructGetPtr($lBuffer), 'int', DllStructGetSize($lBuffer), 'int', '')
Local $lData[2] = [$aAddress, DllStructGetData($lBuffer, 1)]
Return $lData
EndFunc ;==>MemoryReadPtr
;~ Description: Internal use only.
Func MemoryRead($aAddress, $aType = 'dword')
Local $lBuffer = DllStructCreate($aType)
DllCall($mKernelHandle, 'int', 'ReadProcessMemory', 'int', $mGWProcHandle, 'int', $aAddress, 'ptr', DllStructGetPtr($lBuffer), 'int', DllStructGetSize($lBuffer), 'int', '')
Return DllStructGetData($lBuffer, 1)
EndFunc ;==>MemoryRead
Соответственно вопрос таков. Как я могу найти такие значения как $lOffset[5] = [0, 0x18, 0x4C, 0x64, 0x24] (первый пример) и $lOffset = [0, 0x18, 0x44, 0x9C, 0] (второе значение)???
Эти значения уже найдены, но я хочу их найти самостоятельно, что бы потом я так же смог найти другие, которые отсутствуют в скрипте. Я понимаю что для это мне нужно использовать OllyDbg или Cheat Engine. Так же у меня есть инструмент для получения отправленных и полученных пакетов из сервера до шифрования. Фото ниже.
То есть это ряд мне выдает программа, которая получила пакет от сервера. Вторая функция GetMissionStartDelay() возвращает тоже значение. 0x100 Integer => …..
Я попытался сравнить $lOffset и hex ряд на фото, к сожаления сходств я не нашел. Пытался найти этот hex ряд с помощью OllyDgb и тоже без результатной. Буду рад получить любые советы для решения данного вопроса.
И да, сам GWA2.au3 выложу ниже.
-
#1
Автор темы
Всем привет, ребята. Дело вообщем такое… Не могу найти оффсет здоровья в Dota 2, искал с помощью Cheat Engine, пробовал всеми способами float,double,integer, Все значения. Так же пробовал значение увеличилось/изменилось и так далее… Но ничего не помогает(через ману тоже пробовал), как-будто там стоит защита… Всего всех адресов находится 6кк, чего собственно мало, в чём дело — не знаю, кто может помочь — буду благодарен.
-
#2
Если не можешь даже этого найти то вряд-ли сможешь что-то похожее на чит для доты написать…
Вот текущие оффсеты здоровья (C_BaseEntity->m_iHealth):
x64 — 0x1AC
x32 — 0x118
-
#3
Автор темы
Ой блиин… дело было в том, что я искал в CE 6.3, и я действительно не знаю каким чудом там их не находило… В любом случае спасибо!
Пользователь
-
#4
Если не можешь даже этого найти то вряд-ли сможешь что-то похожее на чит для доты написать…
Вот текущие оффсеты здоровья (C_BaseEntity->m_iHealth):
x64 — 0x1AC
x32 — 0x118
плюсую, да и кому нужны оффесты гуглите Source2Gen (но он сейчас не работает ибо надо фиксить )
-
#5
плюсую, да и кому нужны оффесты гуглите Source2Gen (но он сейчас не работает ибо надо фиксить )
Ну его сначала обновить нужно, а новичку это будет сделать очень сложно, изменений во время чистки движка там было не мало.
-
#6
Для доты есть хорошая опенсорсная база/чит, но под линукс. Портануть ее под винду довольно просто(я портировал похожую базу под винду с линукса, но для другой игры). https://github.com/LWSS/McDota по совместительству, это единственное адекватное сдк для сурс2
-
#7
А вообще реально хакнуть что то в Доте?
Пользователь
-
#8
А вообще реально хакнуть что то в Доте?
Нет конечно в разделе доты одни идиоты ))
-
#9
Всем привет, ребята. Дело вообщем такое… Не могу найти оффсет здоровья в Dota 2, искал с помощью Cheat Engine, пробовал всеми способами float,double,integer, Все значения. Так же пробовал значение увеличилось/изменилось и так далее… Но ничего не помогает(через ману тоже пробовал), как-будто там стоит защита… Всего всех адресов находится 6кк, чего собственно мало, в чём дело — не знаю, кто может помочь — буду благодарен.
Тоже
Cheat Engine – программа для гейм-хакеров, предназначается для читерства в компьютерных играх. Принцип работы заключается в том, что показатели игры – достижения, жизни, патроны, ресурсы – хранятся в виде цифр по определенным адресам оперативной памяти компьютера. Указатели — память, которая содержит не значение параметра, а адрес нахождения параметра. Сканирование памяти игры в Cheat Engine делает доступным эти адреса найти и изменить цифры на те, которые нужны.
Для чего нужен поиск указателей
Переменные объекта в игре создаются динамически, чтобы не нагружать оперативную память игры и процесса – с текущими параметрами игр оперативной памяти не хватит. Соответственно, ведется учет, где в памяти размещается тот или иной параметр. Базовый элемент — указатель, а внутри – параметры здоровья, ресурсов, опыта, патронов, денег. При каждом новом запуске игры или нового уровня, адреса динамических игровых параметров переезжают в другую область памяти. Для изменения приходится снова и снова находить. Для того, что бы этого не делать применяется поиск указателей.
Найти одноуровневый указатель
Запускаем Cheat Engine. Находим и копируем в нижнее окно адрес переменной, которая отвечает за нужный параметр. Правым кликом по адресной строке вызываем меню, находим строку «Find out what writes to this address». Ставим break на запись и разрешаем запуск отладчика. Идем в игру и тратим часть золота или теряем одну жизнь — чтобы изменить показатель. Возвращаемся к Cheat Engine и видим в окне отладчика новые строки. Выбираем одну типа mov и переходим во вкладку «More information». Правым кликом открываем меню и выбираем «Copy info to clipboard» — скопированное переносим в блокнот, закрываем отладчик.
Далее переходим в главное окно программы и в поисковой строке вводим адрес из указанной области 07AF.., отмечаем галочкой НЕХ и тип значения 4Б, — запускаем поиск. В результатах поиска ищем постоянный адрес – выделяется зеленым. Копируем в нижнее окно и кликаем дважды по строке «Adress».
Копируем адрес сверху, отмечаем галочкой «Pointer» и вставляем в нижнее выпавшее поле. Тип определяем исходный. Далее при помощи вендового калькулятора рассчитываем смещение между первоначальным адресом, копированным в блокнот и найденным зеленым. Результат вставляем во второе поле снизу и жмем «Ок». После этого правым кликом по значению – «Value» выбираем в меню «Show as decimal» — отражать показатели в десятичном формате. Итог сохраняем в типе файла *.СТ. При загрузке этого файла в Cheat Engine с запуском уровня не надо будет снова искать переменные.
Найти многоуровневый указатель
Многоуровневый – это такой, который ссылается не на искомую информацию, а на другой указатель. Таких уровней может найтись сколько угодно. Многоуровневая адресация усложняет процесс поиска цепочки указателей. Обработка занимает время. Сканирование памяти проводится 8-12 раз с перезапуском игры до тех пор, пока не выявится постоянный результат и один показатель не отразит хоть раз одинаковый результат с игровым параметром при перезагрузке.
Cheat Engine (помогите разобраться!)
неизвестное значение ищи, побегай, потом перед вторым сканом выбери Значение изменилось или Значение уменьшилось, если, например, после бега выносливость стала меньше той, которая была при первом скане, потом подожди немного, допустим выносливость восстановилась, перед третьем сканом выбираешь Значение изменилось или Значение увеличилось, то есть значение стало больше, после второго скана, ну вот так и отсеевай.
(лучше отсеевать по увеличению и уменьшению, так как отсев просто по измененному значению будет очень долгим)
пример:
1. в инглише. вместо Exact value ставишь Unknown initial value (4 байта, скорей всего)
2. скан
3. побегал, например выносливость уменьшилась, ставишь паузу, так как значение не должно равняться или быть больше того, которое искали в первый раз, тут думаю понятно почему, выставляешь Decreased value (уменшилось)
4. скан
5. отдохнул, выносливость увеличилась, ставишь Increaced value (увеличилось)
6. скан
7. повторить процедуру с пункта 3 до нахождения нужного значения
таким образом можно найти практически любые значения не отображаемые в числовом виде
трейнер скачай, проще будет. или таблицу для Cheat Engine поищи, может есть. по мне так табличка самое оно
[СТАТЬЯ] Находим указатели в играх
Я пишу эту статью исключительно для новичков, но она может быть полезна и бывалому читеру.Здесь, в отличии от других гайдов, я буду объяснять почти каждое действие и вдаваться в подробности.
Как вы уже заметили, находя значение жизней и тому подобных, при перезапуске игры их значение заменяется на . Это означает что у вашего значения поменялся адресс.У этого значения есть указатель, который неизменен.Их может быть и больше.В этой статье я научу вас их находить.Приступим.
Я возьму для примера tutorial cheat engine step 8.Везде принцип один и тот же, то-есть таким же образом вы сможете найти указатели во многих играх, в том числе и в Perfect world, Jade Dinasty.
Во первых если у вас нету программы которая работает с памятью, нужно скачать программу Cheat engine.Ее можно скачать с офицального сайта — http://www.cheatengine.org/
Переходим по ссылке, нажимаем download cheat engine, качаем, устанавливаем.
Открываем Tutorial-i386.exe в папке с программой.
Мы видим такое окно:
В поле password вводим пароль 8 ступени — 525927 и жмем ок.
Открываем Cheat Engine нажимаем на светящийся монитор и выбираем процесс Tutorial-i386.exe
Теперь настройка закончена.Перейдем к взлому.
Смотрим на окошко туториала —
Там есть две кнопки — change value и change pointer.Из этого уже известно что там будет хотя бы один указатель.И есть значение, в данном случае оно у меня 1621.
Переходим в окно Cheat Engine и в строку value вводим 1621.Ничего не меняем.Жмем first scan.Если оно одно — хорошо.Если несколько, жмем change value в строку вводим следующее значение и жмем next scan.
Жмем на значение два раза и оно появляется внизу.Перейдем к находке указателей.
Жмем внизу по значение правой клавишей мыши и жмем find out what writes to this adress.
Появится новое окно.Оно спросит разрешение, нажмите yes.
Перейдите в туториал и нажмите change value.В том окне появится функция.Жмем по ней и more info.Зеленым выделено смещение.Его нужно запомнить, оно понадобится нам позже.Желтым указан указатель в hex’e.Это первый указатель, а их здесь 4.
Переходим в окно Cheat Engine и жмем new scan.Ставим галку напротив hex и вводим адресс.
Внизу жамкаем по нему find out what acces to this adress.
Находим так указатели пока не дойдем до зеленого указателя, он статический, последний указатель.
Теперь закрываем лишние вкладки cheat engine переходим в главное окно и жмакаем add adress manually.Жмем галку напротив pointer и 3 раза add pointer.Зеленый указатель вставляем в самую нижнюю строчку.
Помните я говорил вам запомнить смещение?Теперь оно нам нужно.Ставим его в поля оффсет в порядке 18 0 14 c и сверху должен быть адресс самого первого значения.Внимание на рисунок.
Жмем ОК и у нас внизу появилось еще одно значение.Замораживаем его — ставим крестик в окошке и изменяем значение на 5000.Переходим в окно туториала жмем change pointer — и вуаля!Туториал пройден.