Как найти оффсеты варфейс

Приветствую любителей пастинга для варфейса.
В нашем сегодняшнем уроке я научу вас
реверсить варфейс, чтобы получить то, что вам нужно.
В этом уроке научимся искать
STATIC_SSGE, CWeaponSpecific_RequestReload, CWeaponSpecific_RequestShoot, CWeaponSpecific_RequestUnber, GameCvars, IRender, IGame, IPhysicalWorld, IConsole и т.д
Этап 1. Снимаем дамп.
Для того, чтобы начать наше приключение в мира реверсинга нам нужно снять дамп игры. Делается это с помощью Scylla или других удобных для вас дамперов. Скачиваем Scylla, открываем версию в x64 разрядности, запускаем Game.exe из корня Bin64Realease, ждем пока игра полностью загрузиться пока мы не увидим черным экран с логотипом варфейса. После чего в Scylla открываем процесс игры и выбираем File — Dump:

Сохраняем дамп в ту же папку, где находится ваш Game.exe, это важно!
Этап 2. Начинаем работу с IDA.
Скачиваем IDA a.k.a Interactive Disassembler. Открываем наш дамп в IDA. После того, как вы откроете дамп вы увидите это:

Вам нужно подождать пока дамп просканируется полностью, когда он просканируется в нижнем левом углу вы увидите:


Этап 3. Ищем SSGE.
В IDA поиск нужных делается с помощью поиска по строкам. Чтобы найти SSGE вам нужна строка «ai_Compatibilitymode», в IDA нажмите SHIFT+F12 и дождитесь пока IDA просканит весь лист строк, после чего вы увидите окно со строками, нажмите CTRL+F и в пишите в строку ai_Compatibilitymode.

Нажмите на найденную строку два раза, вас перенесет в IDA View, нажмите вот сюда:

Затем нажмите кнопку X, вас перебросит в xref’ы вашей строки, прыгаем по первой строке нажав ОК, мы окажемся в IDA View, нажимаем f5 ничего не делая:

Нас перебросит сюда:

qword_141E62C98 это наш оффсет, уберите из начала qword. Мы получили SSGE, теперь нажав на наш адрес и пометив его желтым цветом нажмите кнопку N, в появившемся поле введите SSGE.
Теперь это выглядит так:


Этап 4. Ищем IGame.
Наша строка для поиска «IsPlayer», именно IsPlayer, а не isPlayer или isplayer.
img]https://i.ibb.co/mFQSW7h/image.png[/img]
Снова прыгаем по второму xref и попадаем в IDA view.
Если сделали все правильно увидите это, нам нужна строка entityId.

Она находится чуть выше нашего IsPlayer.

Жмем F5 и попадаем в псевдокод, здесь нас встретят два саба, нам нужно прыгнуть в первый нажав на него два раза:
Выделено желтым цветом

Мы попадаем сюда и нас встречает такая картина, наш адрес находится здесь:
Выделил желтым

Заходим на сайт
И конвертируем 64 в Hex, получаем 40, адрес нашего IGame = 0x40.
Этап 5. Ищем IRenderer.
Строка для поиска «Draw2DLine». Прыгаем в самый первый xref и сразу жмем f5, попадаем в псевдокод. Прыгаем в самый первый саб, там где v98 =
Выделил желтым:

Скроллим вниз и видим наш адрес, выделил желтым, запомните ваши адреса никогда не должны быть схожи с IGame:

Конвертируем в Hex, получаем адрес IRenderer = 0x48.
Этап 6. Ищем ISystem.
Как обычно ищем строку GetUserName, прыгаем в первый xref, жмем f5, попадаем в псевдокод и тыкаем в самый первый sub.
Видим это, опять выделил желтым, наш адрес 240, конвертируем в hex:

ISystem = 0xF0.
Этап 7. Найдем IPhysicalWorld.
Строка — RayWorldIntersection(Game). Делаем все тоже самое. Xref’оф будет очень много, переходим по самому первому, прыгаем в псевдокод и видим наш адрес, выделил желтым:

Конвертируем в HEX, PhysicalWorld = 0x70.
Этап 8. Найдем IEntitySystem.
Строка: GetEntities.
Делаем все тоже самое и прыгаем в самый первый sub. Летим вниз пропуская SSGE + IGame, ибо это ловушка.
Находим наш ЕнтитиСистем вот тут:

Делаем все по аналогии и получаем EntitySystem = 0xE0.
Этап 9. Найдем IConsole.
Строка: GetCVar. Делаем абсолютно точно также, прыгаем в первый саб.
Наш адрес:

Переводим в HEx и получаем IConsole = 0xC8.
Этап 9. Найдем GameCvars и один из кваров.
Ищем строку isSameTeam. Делаем абсолютно тоже самое, прыгаем в первый саб.

Дальше не ищем никаких SSGE и прочего, прыгаем в следующий sub:

Наш адрес GameCvars:

Найдем i_pelletsDisp. Строка i_pelletsDisp. Делаем тоже самое, в никакие сабы не прыгаем.
Конвертируем в HEX выделенное желтым на скрине и получаем 0x130, это наш адрес i_pelletsDisp.


Этап 10. Найдем CWeaponSpecific_RequestReload, CWeaponSpecific_RequestShoot, CWeaponSpecific_RequestUnber.
Строки для поиска: RequestReload, RequestShoot, RequestReloadUnber.
Аналогичные действия для Unber, Reload и ShootHit:
Прыгаем в этот саб после xref и f5:

Листаем в самый низ, наш адрес:

На этом мой гайд окончен, надеюсь, что помог вам. Очень старался для вас!​

Reversing Warface to find SSystemGlobalEnvironment and other offsets positions

For Developers Only!

Information shared below are for Warface hack developers only.

Noob Friendly Tutorial!

Following tutorial has been written with great care to make all the beginners to understand how to get started with the process for the first time. So some of you may feel like it’s like elementary school homework, but that’s the whole point of this tutorial being noob friendly.

Today in this quick written tutorial of mine, let’s find out how we can find the position of SSystemGlobalEnvironment and how to find other child classes/interfaces positions in it such as IGame, IPhysicalWorld, IEntitySystem etc.

This might also work in other games made using CryENGINE, such as Crysis 3 etc. But approaches may somewhat differ. Haven’t checked those, so no guarantees. This tutorial and this approach is focused on Warface.

Legend

Step 1-10: Getting Started with Reversing Warface.
Step 10-16: Finding SSystemGlobalEnvironment struct address
Step 17-21: Finding IGame offset in SSystemGlobalEnvironment
Step 22-23: Finding IRenderer offset in SSystemGlobalEnvironment
Step 24-25: Finding ISystem offset in SSystemGlobalEnvironment
Step 26-27: Finding IPhysicalWorld offset in SSystemGlobalEnvironment
Step 28-29: Finding IEntitySystem offset in SSystemGlobalEnvironment
Step 30-32: Finding ITimer offset in SSystemGlobalEnvironment
Step 33-34: Finding IConsole offset in SSystemGlobalEnvironment
Step 35-36: Finding RayWorldIntersection function address

Step 1

Please update your game to the latest version using your launcher and make sure game integrity checks verified and passes.

Step 2

Please launch your game using the provided launcher and wait until it loads to the main menu.

Step 3

Press Alt + Tab to minimize the game and switch to desktop. Download a process dumping tool such as PETools and open it.

Step 4

Find the «Game.exe» process in it and right click on the row. Click «Dump Full…» and dump the process into a file and name it something like «Dumped.exe». After that, please switch to the game window and quit the game. Close the launcher as well if you don’t need it.

Step 5

Download IDA Pro and open IDA. Select «New» in the popup as you’re trying to analyze a new file for first time.

Step 6

Browse through your files and open the previously saved Dumped.exe and load it into IDA.

Step 7

In the popup now you get, select the options as following image shows (mostly default options selected resembles this).

Step 8

Click «OK» and it starts to read imports and exports. It might also ask you for several missing assemblies which it can’t find.

Commonly it’ll ask for «ijl15», «CrashRpt1402» and «ocevogyv».

To resolve those, please navigate to the game installed directory and go into «Bin32Release» folder, then select the each of the DLL file with same name it requested. Example: «ijl15.dll» for «ijl15». Repeat the step until it resolves all the missing assemblies it wasn’t able to find.

Then it’ll start analyzing the dumped process. This process might take around 5-15 minutes depending on the performance of your computer.

You can see the process in the Analysis bar, and the current position in footer status bar.

Wait until the analysis process to complete.

Step 9

After the initial analysis completed, your Analysis bar will look similar to this.

And the footer status bar will say «idle».

Now, please save the database by clicking on «Save the Database» icon in your toolbar. It’ll then show a progress with «Packing the database» title. Wait until the save process is completed.

Step 10

Now in your menu bar, go to «View» -> «Open subviews» -> «Strings» and open the Strings window.

This will contain all the strings found in the dumped assembly along with their position.

You need this strings list to find SSystemGlobalEnvironment and almost everything else. Locating a nearby string and digging a little deeper is one of the fastest way to find something. With publicly available CryENGINE SDK, it makes everything so much easier.

Step 11

Finally we are here, where we gonna find first thing, which is the position of SSystemGlobalEnvironment. Let’s find out how we can find it, shall we?

While focused on the recently opened Strings window, press Ctrl + F to open search pane for that particular window. Now search for «ai_CompatibilityMode» (without quotes, you may start typing it and it’ll auto search after each key press).

Step 12

Double click on the only result it found to go to that address.

Now click on top of the «aAi_compatibili» pointer and focus on it.

Step 13

Now press X to open Xrefs (cross references) for that particular address. A window will appear with all the addresses references to this address (in this case, it’s only one).

Step 14

Double click on the only result to go to that address. Now we are here…

Step 15

Since this is a noob friendly tutorial, enter this function’s pseudocode by pressing F5, and now we are here…

Step 16

Right click on the DWORD near the string «ai_CompatibilityMode» (in this case «dword_1A3F2B8») and select «Rename global item».

Name it «SSystemGlobalEnvironment».

Press «OK» to save the changes. Redo Step 9 and save the database to persist the changes to the disk.

In case if you still haven’t noticed, we have found your SSystemGlobalEnvironment. To retrieve it’s address, double click on it (the «SSystemGlobalEnvironment»), and it’ll take you to it’s address.

So, in this instance, SSystemGlobalEnvironment address is: 0x01A3F2B8.

Step 17

Let’s find the IGame offset in SSystemGlobalEnvironment. You ready?

Please repeat Step 11, but this time search for «IsPlayer» in the Strings instead. Bear in mind that the searches should be CASE SENSITIVE!. So it’s not «isPlayer», «Isplayer», it MUST be «IsPlayer», and only pick the whole word results. Please refer to the below image to get the idea, look at the highlighted row.

Step 18

Same like before, double click it and go to it’s position. Focus on the pointer and press X to open Xrefs.

You might receive multiple references here like that. We need to make sure that we navigate to the correct place, so… double click each of them and visit them until you match one with what I say you to look for.

How to visit each of them when we takes to that position and lose the Xrefs window you say? It’s simple. Let’s say we visited the first one like this…

You can re-open the Xrefs window by focusing on the same pointer and pressing X.

Step 19

Find a reference with «entityId» string near top of it, and «GetAmmoClassNameById» string and «RemoveDroppedItems» at the near bottom. Something like this, for your information, this is the correct one as well…

Step 20

Enter pseudocode by pressing F5 like before. You will find CryENGINE ScriptBindings. Each named function string accompanied by it’s own function. For example, let’s continue with IsPlayer function.

1 — ScriptBind function name.
2 — ScriptBind function parameters.
3 — ScriptBind function helper or actual function.

To find what we need (which is IGame offset in SSystemGlobalEnvironment in this case), please enter ScriptBind function of «IsPlayer». In this instance, the 3rd one, «sub_B0C030».

Step 21

Double click it to enter that function’s pseudocode. Now we are here…

You’ll notice we have our new found SSystemGlobalEnvironment which we recently renamed and saved there.

Right click on the SSystemGlobalEnvironment offset value showing besides it. In this case after the «+», it shows «36». Right click on it and select «Hexadecimals».

You’ll end up with it’s value converted to hexadecimals, which is 0x24.

In case if you haven’t noticed yet, that’s the offset of IGame in SSystemGlobalEnvironment. It’s SSystemGlobalEnvironment + 0x24 = IGame.

Step 22

Let’s find the offset of IRenderer, what you say?

Please repeat Step 11, but this time search for «Draw2DLine» in the Strings instead.

Same like before, double click go to that position and press X focusing on the pointer to get Xrefs list.

Go to that position by double clicking the result. Press F5 and enter pseudocode.

Go to the ScriptBind function, in this case «sub_BAF270».

Step 23

Find the SSystemGlobalEnvironment there at top.

Same like before, convert the shown offset into hexadecimals.

In case if you haven’t noticed yet, in this case 0x2C the IRenderer offset in SSystemGlobalEnvironment. So, it’s SSystemGlobalEnvironment + 0x2C = IRenderer.

Step 24

OK, now it’s time to find ISystem offset in SSystemGlobalEnvironment. Let’s get into it…

Please repeat Step 11, but this time search for «GetUserName» in the Strings instead.

Same like before, pick the correct whole word result and go to it’s position. Focus on pointer and open Xrefs by pressing X.

Go to the result and enter pseudocode by pressing F5. Enter it’s corresponding ScriptBind function.

In this case it’s «sub_BADAA0». Double click to enter.

Step 25

Find the SSystemGlobalEnvironment there at the top.

Same like before, convert the shown offset into hexadecimals.

In case if you haven’t noticed yet, in this case 0x98 the ISystem offset in SSystemGlobalEnvironment. So, it’s SSystemGlobalEnvironment + 0x98 = ISystem.

Step 26

It’s time to find IPhysicalWorld now, this is one of the easiest offsets to find…

Please repeat Step 11, but this time search for «RayWorldIntersection(Game)» in the Strings instead.

Double click the result to go that that position, open Xrefs same as before by pressing X while focused on pointer. This time you’ll find many references. Pick one, mostly any of them. If the steps following this doesn’t match up with yours, please pick another.

Then go to that address and enter pseudocode.

Step 27

Find the nearest SSystemGlobalEnvironment reference to your string (in this case, nearest one to «RayWorldIntersection(Game)»).

Same like before, convert the shown offset into hexadecimals.

In case if you haven’t noticed yet, in this case 0x5C the IPhysicalWorld offset in SSystemGlobalEnvironment. So, it’s SSystemGlobalEnvironment + 0x5C = IPhysicalWorld.

Step 28

Oh yeah, now a big one. The «IEntitySystem». Who doesn’t like to see all the weapons, ammo drops, explosives in the map with an ESP right? Let’s get on with it then…

Please repeat Step 11, but this time search for «GetEntities» in the Strings instead.

Pick the correct result as a whole word same as before and go to it’s position. Get Xrefs by focusing on pointer pressing X.

Double click and go to reference’s position and enter pseudocode.

Double click and enter it’s ScriptBind function. In this case it’s «sub_BADF20».

Step 29

Find the first occurrence of SSystemGlobalEnvironment.

Same like before, convert the shown offset into hexadecimals.

In case if you haven’t noticed yet, in this case 0x38 the IEntitySystem offset in SSystemGlobalEnvironment. So, it’s SSystemGlobalEnvironment + 0x38 = IEntitySystem.

Step 30

What do we need to create an awesome Smooth Aim? ITimer of course. To provide us with somewhat accurate engine based frame times. Let’s find ITimer offset in SSystemGlobalEnvironment…

Please repeat Step 11, but this time search for «GetFrameTime» in the Strings instead.

Double click and go to the result, open Xrefs by pressing F5 while focusing on the pointer just like before.

Navigate to the only result it found and enter pseudocode.

Double click and enter it’s ScriptBind function, in this case «sub_BAD910».

Step 31

Find the offset it’s showing WITHIN the «else» clause here. See the highlighted offset, that’s the value we looking for here.

Remember the offset you just found.

Step 32

Navigate back in pseudocode by passing Back button in the toolbar.

Now you’re back at the end of Step 30. Scroll to the top of the constructed pseudocode. Find the SSystemGlobalEnvironment offsets at the top there like showing in this image…

Pick the one with the offset you found before. In this case it’s «+ 96» one.

Same like before, convert the shown offset into hexadecimals.

In case if you haven’t noticed yet, in this case 0xA8 the ITimer offset in SSystemGlobalEnvironment. So, it’s SSystemGlobalEnvironment + 0xA8 = ITimer.

Step 33

Let’s find «IConsole» too, because why not?!

Please repeat Step 11, but this time search for «GetCVar» in the Strings instead.

Pick the correct one with whole word and go to it’s position, same as before. Open Xrefs by focusing on pointer and pressing X.

Go to the only result, enter pseudocode again by pressing F5, same as before.

Double click and enter it’s ScriptBind function, in this case the «sub_BAFAB0».

Step 34

Find the SSystemGlobalEnvironment reference there.

Same like before, convert the shown offset into hexadecimals.

In case if you haven’t noticed yet, in this case 0x48 the IConsole offset in SSystemGlobalEnvironment. So, it’s SSystemGlobalEnvironment + 0x48 = IConsole.

Step 35

Let’s also find the RayWorldIntersection functions so we can perform ray tracing to check a particular Actor or an Entity/Object is visible from a particular location. This check is important for an Aimbot or for an ESP.

You can find the same address on Step 27 above. But in case if you want to do it from scratch please continue from below.

Please repeat Step 11, but this time search for «RayTraceCheck» in the Strings instead.

Double click and go the position, same like before focus on pointer and press X to show Xrefs. You’ll see multiple references here too.

This time, pick any of the references and navigate there. It’s okay since all of them contains what we’re looking for. I’ll pick the second one for this tutorial.

Navigate there, enter pseudocode by pressing F5.

Double click and enter it’s ScriptBind function, in this case it’s «sub_BB2A40».

Step 36

In the pseudocode, scroll down and find a function containing a parameter which has a string that starts with «RayWorldIntersection» (it can be «RayWorldIntersection(Game)», «RayWorldIntersection(3dEngine)», «RayWorldIntersection(EntitySys)» or whatever).

Double click on that function name to navigate to that function’s pseudocode.

This is the function we are looking for, the get the address of it by refering to it’s name. In this instance it’s 0x046A1D0 since the function name is «sub_46A1D0». You can additionally right click on it’s name and choose «Rename global item» to name the function as «RayWorldIntersection» as well for further reference.

So, in this case the RayWorldIntersection function is at 0x046A1D0.

Tutorial Writing in Process!

This tutorial is not finished yet and the author is pretty busy at the moment and is still writing it, so the information here are not completed. Please check back again time to time to see more steps to finding the rest of the classes/interfaces.

I hope you learned something from my tutorial. I can’t wait to see what you guys make!
Please be kind enough to share whatever you make here.

If you find it useful, please take 5 seconds to show your appreciation, after all… it costs you nothing…

Thank you all

atizoff

atizoff

приобретаю кашель за деньги


  • #1

Всем q, сегодня будем ревёрсить варфейс и находить SSystemGlobalEnvironment (gEnv, называйте как хотите).
Начнём с того, что нам нужно будет сделать дамп, рекомендую PETools. Сейчас многие запустят игру и попробую сделать дамп, но… Варфейс не тупой, и просто так задампить его вам не даст.
Поехали!



Открываем фолдер с игрой и запускаем Game.exe

upload_2019-6-17_13-48-25.png



У вас напишет что игра не запустится без ИЦ, забиваем болт и не закрывая это окно открываем PETools

upload_2019-6-17_13-49-57.png

Открыв PETools видим такую картину:

upload_2019-6-17_13-50-38.png

Несколько Game.exe, нажимаем на каждый и смотрим, у какой больше всего подгруженных длл. У меня у первого:

upload_2019-6-17_13-51-24.png

Кликаем ПКМ и выбираем DUMP FULL.
Закрываем PETools.



Открываем IDA (не ida64, а IDA!!!)
Жмёте New и выбираете путь до .exe (выбираете наш дамп!!!)
Тут жмём ОК

upload_2019-6-17_13-53-37.png

Дальше ида у нас просит дллки, даёте ему их (они находятся в Bin32Realese).
После этого всего у вас начнётся сканирование дампа, скорость зависит от вашего пэка:

upload_2019-6-17_13-54-56.png

Ждомс…



После окончания сканирования у вас будет такая картина:

upload_2019-6-17_14-16-54.png

Нажимаем view->open subviews->strings (shift + f12)
Далее там нажимаем ctrl + f

upload_2019-6-17_14-21-36.png

Выбираем первое (doubleeeee clickkkk)
Выделяем этот текст и нажимаем X

upload_2019-6-17_14-22-13.png

Откроется окно там жмём ОК
Далее жмём F5 никуда не нажимая

upload_2019-6-17_14-23-8.png

И вас кидает на строчку (больше не могу кидать скриншоты)
У вас выйдет что-то такое:
v8 = (*(int (__stdcall **)(const char *))(**(_DWORD **)(dword_1937640 + 108) + 88))(«ai_CompatibilityMode»);
Итак, нам интересна строчка dword_1937640, dword_числа. числа — это адрес.
Значит, адрес gEnv = 0x1937640. (к адресу добавляем в начале 0x)


На этом туториал подошёл к концу. Адрес gEnv на 17.06.2019 равен 0x1937640.
Показывайте активность и в следующем туториале найдём IRender и Cvars!
Спасибо @AntonNeath
Всем хорошего дня!​

Последнее редактирование: 17 Июн 2019

atizoff

atizoff

приобретаю кашель за деньги


  • #2

вот такая будет строчка:

upload_2019-6-17_14-27-47.png

atizoff

atizoff

приобретаю кашель за деньги


  • #4

а еще лучше спиздить у кого нибудь и сделать такой-же, но с другим дизайном

если ты про тему — то писал её я сам, опираясь на английские темы, ибо все гоняют лысого на этом уроке. есть 1 тема от Крайслера на русском, но скрины уже устарели, решил написать по-своему, может кому полезно будет.
если же ты про читы, то даже пастинг хорошо (звучит странно), но смотря исходники, редактируя их можно научиться хоть чему-то

YoYCiqsqpEo.jpg

если ты открываешь браузер лишь чтобы деградировать и делать регресс в эволюции, то не зачем

ufdhbi


  • #5

если ты про тему — то писал её я сам, опираясь на английские темы, ибо все гоняют лысого на этом уроке. есть 1 тема от Крайслера на русском, но скрины уже устарели, решил написать по-своему, может кому полезно будет.
если же ты про читы, то даже пастинг хорошо (звучит странно), но смотря исходники, редактируя их можно научиться хоть чему-то

в свое время когда были популярны трейнеры на шарпе, была темка как создать трейнер, гайд крч,, все друг у друга декомпилили и пиздили адреса и писали по этому гайду изменяя только интерфейс)), потом пошла эра сигнатур, аля «самообновляющиеся» трейнеры

еще был приватный способ как достать исходник из накрытого темидой трейнера,
не помню как он мне достался, случайно как-то, но сама суть:
— дамп запущенного трейнера через PEtools
— декомпил через net reflector вроде
и деобфускация если был обсусцирован

atizoff

atizoff

приобретаю кашель за деньги


  • #6

в свое время когда были популярны трейнеры на шарпе, была темка как создать трейнер, гайд крч,, все друг у друга декомпилили и пиздили адреса и писали по этому гайду изменяя только интерфейс)), потом пошла эра сигнатур, аля «самообновляющиеся» трейнеры

видел подобную систему в приватных читах на сиэсджоу. чит сам дампит файл, получает оффсеты и юзает их. +100 к уд и лишняя работа не нужна)

жаль что сейчас ничего путного на шарпе и не напишешь. видел автошот на шарпе для варфейса, как бы не пытался обновить, не выходило(

короче, маус эвент если чит экстернал не работает в варфейсе и это очень грустно =(

ufdhbi


  • #7

видел подобную систему в приватных читах на сиэсджоу. чит сам дампит файл, получает оффсеты и юзает их. +100 к уд и лишняя работа не нужна)

жаль что сейчас ничего путного на шарпе и не напишешь. видел автошот на шарпе для варфейса, как бы не пытался обновить, не выходило(

короче, маус эвент если чит экстернал не работает в варфейсе и это очень грустно =(

был знаком с чуваком, у него ник programmer, на zorgee был, он написал автошот в hiasm, чет ваще там заморочился, ну он бог просто был, в ammyAdmins показывал схему этого автошота, пиздец она гигантская

atizoff

atizoff

приобретаю кашель за деньги


  • #8

был знаком с чуваком, у него ник programmer, на zorgee был, он написал автошот в hiasm, чет ваще там заморочился, ну он бог просто был

эх зорге. 2015 год тут?)
сколько же тем я перерыл 2-3 года назад ничего не найдя по поводу варфейса(
это сейчас люди пишут туториалы и т.д., тогда же все скрывали как найти тот или иной адрес/смещение(

ufdhbi


  • #9

эх зорге. 2015 год тут?)
сколько же тем я перерыл 2-3 года назад ничего не найдя по поводу варфейса(
это сейчас люди пишут туториалы и т.д., тогда же все скрывали как найти тот или иной адрес/смещение(

+++

Всем q, сегодня будем ревёрсить варфейс и находить SSystemGlobalEnvironment (gEnv, называйте как хотите).
Начнём с того, что нам нужно будет сделать дамп, рекомендую PETools. Сейчас многие запустят игру и попробую сделать дамп, но… Варфейс не тупой, и просто так задампить его вам не даст.
Поехали!



Открываем фолдер с игрой и запускаем Game.exe
Посмотреть вложение 32150



У вас напишет что игра не запустится без ИЦ, забиваем болт и не закрывая это окно открываем PETools
Посмотреть вложение 32151
Открыв PETools видим такую картину:
Посмотреть вложение 32152
Несколько Game.exe, нажимаем на каждый и смотрим, у какой больше всего подгруженных длл. У меня у первого:
Посмотреть вложение 32153
Кликаем ПКМ и выбираем DUMP FULL.
Закрываем PETools.



Открываем IDA (не ida64, а IDA!!!)
Жмёте New и выбираете путь до .exe (выбираете наш дамп!!!)
Тут жмём ОК
Посмотреть вложение 32154
Дальше ида у нас просит дллки, даёте ему их (они находятся в Bin32Realese).
После этого всего у вас начнётся сканирование дампа, скорость зависит от вашего пэка:
Посмотреть вложение 32155
Ждомс…



После окончания сканирования у вас будет такая картина:
Посмотреть вложение 32158
Нажимаем view->open subviews->strings (shift + f12)
Далее там нажимаем ctrl + f
Посмотреть вложение 32159
Выбираем первое (doubleeeee clickkkk)
Выделяем этот текст и нажимаем X
Посмотреть вложение 32160
Откроется окно там жмём ОК
Далее жмём F5 никуда не нажимая
Посмотреть вложение 32161
И вас кидает на строчку (больше не могу кидать скриншоты)
У вас выйдет что-то такое:
v8 = (*(int (__stdcall **)(const char *))(**(_DWORD **)(dword_1937640 + 108) + 88))(«ai_CompatibilityMode»);
Итак, нам интересна строчка dword_1937640, dword_числа. числа — это адрес.
Значит, адрес gEnv = 0x1937640. (к адресу добавляем в начале 0x)


На этом туториал подошёл к концу. Адрес gEnv на 17.06.2019 равен 0x1937640.
Показывайте активность и в следующем туториале найдём IRender и Cvars!
Спасибо @AntonNeath
Всем хорошего дня!​

жду урок по классам для аима

atizoff

atizoff

приобретаю кашель за деньги


  • #10

жду урок по классам для аима

для них класс не нужен)
тебе нужен лишь вроде setfiringpos и айди костей
в планах есть создать тему чит с 0, где я и тру с++ программисты(я надесюь) будут корректировать/добавлять

  • #11

для них класс не нужен)
тебе нужен лишь вроде setfiringpos и айди костей
в планах есть создать тему чит с 0, где я и тру с++ программисты(я надесюь) будут корректировать/добавлять

Вот это и есть адрес?

36422

atizoff

atizoff

приобретаю кашель за деньги


Добрый день!
Сегодня я расскажу о неотъемлемой части чита -оффсетах и расскажу как их найти.

Для начала скачаем необходимые программы из attachments.

Проверка на вирусы:
VirusTotal

Из данного архива помещаем файл nebrumerloader.exe в папку с игрой

Далее нам потребуется программа OllyDBG

VirusTotal

Папку olly распаковываем на рабочий стол

Запускаем файл nebrumerloader.exe

Далее в окне появляется надпись:

Надписи могут различаться.

Если на этом этапе возникла ошибка mscvr100.dll

Показать скрытое содержание
https://download.microsoft.com/downlo…redist_x86.exe

После этого сверните данное окно.

Открываем папку olly на рабочем столе,запускаем Ollydbg.exe

В открывшимся окне жмём>File>attach

(nebrumerloader должен быть загружен)

В списке выбираем путь к файлу и жмём Attach.

Это жмем ОК.
Появляется окно(С):

В нём на пустой области кликаем правой кнопкой>View>Module»Cshell

Появляется окно(C):

На пустом месте жмем правой кнопкой мыши>Search>All referenced text strings

Ждём.Появляется нужное окно с оффсетами.Разворачиваем его.

На пустом месте жмём правой кнопкой>Search for text

[img]https://s43.radikal.ru/i101/1112/12/e77ae2838eda.jpg[img]

(Ставим галочку)В поиске ищем наш оффсет.Например ReloadAnimRatio(антиперезарядка если память не изменяет).Когда оффсет будет найден жмём правой кнопкой>Follow in Disassembler

2 строчка — то что нам нужно.

(0x2644)
Вот несколько примеров для поиска

Показать скрытое содержание

================================================== ====================
MoveSpeedPenalty = нет веса у оружия
WallShotDamageRatio = стрельба через стены
CrossHairRatioPerRealSize =нет разброса
ShotsPerAmmo нет разброса у дробовика
UnlimitedAmmo нет перезарядки
WeaponMgr
================================================== ====================
———————
NoReload (NoReload) [Нет перезарядки]
MoveSpeedPenalty (NoWeight) [Нет веса у оружий]
Range (Weapon range) [Максимальная дальность полета пуль]
AmmoDamage (Attack damage) [Дамаг]
ChangeWeaponAnimRatio (Fast change of the weapons) [Быстрая смена оружий]
================================================== ====================
GhstMgr
———————
MovementWalkRate (SpeedHack for Shift) [СпидХак на шифт]
C4PlantTime (C4 time plant) [Время минирования C4]
C4DefuseTime (C4 defuse time) [Время разминирования C4]
================================================== ====================
DMG
———————
NoFallDamage (No fall damage) [Нет урона от падений]
================================================== ====================
WallMgr
———————
EdgeShotEnabled (Shoot Through Wall) [Стрельба сквозь стены]
WallShotEnabled (Shoot Through Wall) [Стрельба сквозь стены]
PerfectWallShotEnabled (Shoot Through Wall) [Стрельба сквозь стены]
================================================== ====================

В видео немного другой способ, но он тоже работает.

English (По английски) :
Good day!
Today I will talk about an integral part of the reader-offset and tell you how to find them.

To get started, download the necessary software from attachments.

Scanning for viruses:

VirusTotal

From the archive file nebrumerloader.exe put in the game folder

Next, we need the OllyDBG

Scanning for viruses:
VirusTotal

Olly to unpack the folder on your desktop

Run the file nebrumerloader.exe

Further, the window appears:

Labels may vary.

If at this stage an error mscvr100.dll

[spoiler]https://download.microsoft.com/downlo…redist_x86.exe

Then roll the window.

Open the folder on the desktop, olly, run Ollydbg.exe

In the opened window click> File> attach

(Nebrumerloader must be loaded)

In the list, select the path to the file and click Attach.

This press OK.
A window appears (C):

In it on an empty area, right-click> View> Module «Cshell

A window appears (C):

From scratch right click> Search> All referenced text strings

Zhdem.Poyavlyaetsya right window offsetami.Razvorachivaem it.

From scratch, right-click> Search for text

(Put a checkmark) in search of looking for our offset. For example : ReloadAnimRatio. When the offset is found, right-click> Follow in Disassembler

2 line — what we need.

(0x2644)
Here are some examples to find

[Spoiler]
================================================== ====================
MoveSpeedPenalty = no weight with arms
WallShotDamageRatio = shooting through walls
CrossHairRatioPerRealSize = no scatter
ShotsPerAmmo do not scatter from a shotgun
UnlimitedAmmo no charge
WeaponMgr
================================================== ====================
———————
NoReload (NoReload) [No charge]
MoveSpeedPenalty (NoWeight) [There is no weight in weapons]
Range (Weapon range) [Maximum range of bullets]
AmmoDamage (Attack damage) [Damage]
ChangeWeaponAnimRatio (Fast change of the weapons) [Quick change weapons]
================================================== ====================
GhstMgr
———————
MovementWalkRate (SpeedHack for Shift) [SpidHak to shift]
C4PlantTime (C4 time plant) [Time mining C4]
C4DefuseTime (C4 defuse time) [Time clearance C4]
================================================== ====================
DMG
———————
NoFallDamage (No fall damage) [No damage from falling]
================================================== ====================
WallMgr
———————
EdgeShotEnabled (Shoot Through Wall) [shooting through walls]
WallShotEnabled (Shoot Through Wall) [shooting through walls]
PerfectWallShotEnabled (Shoot Through Wall) [shooting through walls]
================================================== ====================
[/spoiler]

In the video, a slightly different way, but it also works.

[/ VIDEO]

Сегодня в этой Краткое руководство Автор мой, давайте выясним, как можно найти положение SSystemGlobalEnvironment и как найти другие дочерние классы/интерфейсы позиции в нем, например, флэшка, IPhysicalWorld, IEntitySystem и т. д.

Это может также работать в другие игры, сделанные с помощью игр, таких как Crysis 3 и т. д. Но подходы могут несколько отличаться. Не проверял, так что никаких гарантий. Этот учебник и этот подход ориентирован на Warface.

Легенда

Шаг 1-10: приступая к работе с реверсом в Warface.
Шаг 10-16: поиск SSystemGlobalEnvironment структура адреса
Шаг 17-21: поиск флэшка смещение в SSystemGlobalEnvironment
Шаг 22-23: поиск IRenderer смещение в SSystemGlobalEnvironment
Шаг 24-25: поиск ISystem смещение в SSystemGlobalEnvironment
Шаг 26-27: поиск IPhysicalWorld смещение в SSystemGlobalEnvironment
Шаг 28-29: поиск IEntitySystem смещение в SSystemGlobalEnvironment
Шаг 30-32: поиск ITimer смещение в SSystemGlobalEnvironment
Шаг 33-34: поиск IConsole смещение в SSystemGlobalEnvironment
Шаг 35-36: поиск адреса функции RayWorldIntersection

Шаг 1

Пожалуйста, обновите вашу игру до последней версии через Launcher и убедитесь в целостности игры проверки и передает.

Шаг 2

Пожалуйста, запустите игру используя предоставленные лаунчер и подождите, пока он загружает в Главное меню.

Шаг 3

Вкладки нажмите сочетание клавиш Alt +, чтобы минимизировать игру и переключиться на рабочий стол. Скачать процесс сброса инструмент, такой как

Скрытое содержимое доступно для зарегистрированных пользователей!

и открыть его.

Шаг 4

Найти «процесс game.exe» в нем и щелкните правой кнопкой мыши на строке. Нажмите кнопку «дамп полный…» и дамп процесса в файл и назовите его что-то вроде «Dumped.exe». После этого, пожалуйста, переключитесь на окно игры и выйти из игры. Закройте лаунчер, а если она вам не нужна.

Шаг 5

Скачать

Скрытое содержимое доступно для зарегистрированных пользователей!

и открыть Ида. Выберите «Новый» в выпадающем окне как вы пытаетесь анализировать новый файл в первый раз.
https://i.chitachok.xyz/uvNUohA.png
Шаг 6

Просмотрите ваши файлы и откройте ранее сохраненный Dumped.exe и загрузить его в Ида.
https://i.chitachok.xyz/0tP02Ez.png
Шаг 7

Во всплывающем теперь вы выберите параметры, как следующее изображение показывает (в основном по умолчанию параметры выбранного напоминает это).
https://i.chitachok.xyz/ZidRLwC.png
Шаг 8

Нажмите кнопку «ОК» и он начинает читать импорта и экспорта. Он может также попросить вас на несколько недостающих узлов, которые он не может найти.

Обычно это попросит «ijl15», «CrashRpt1402» и «ocevogyv».

Для решения этих, пожалуйста, перейдите к игре установленных каталогов и зайти в папку «Bin32Release», затем выберите каждого dll файла с таким же именем он просил. Пример: «ijl15.dll» за «ijl15». Повторите этот шаг, пока не устраняет все недостающие агрегаты, так и не смог найти.
https://i.chitachok.xyz/c3XfwXN.png
Тогда она начала анализа демпингового процесс. Этот процесс может занять около 5-15 минут в зависимости от производительности вашего компьютера.
https://i.chitachok.xyz/4GSvnI7.png
Вы можете увидеть процесс в бар Анализ, и текущая позиция в строке состояния нижнего колонтитула.
https://i.chitachok.xyz/Tw4wD6N.png
Подождите, пока процесс анализа завершен.

Шаг 9

После первоначального завершения анализа, панель анализа будет выглядеть примерно так.
https://i.chitachok.xyz/UnfvBSs.png
И статус-баре подвал будет сказать «простоя».
https://i.chitachok.xyz/32eNO5f.png
Теперь, пожалуйста, сохраните базу данных, нажав на «сохранить значок базы данных» на панели инструментов. Его потом показывают прогресс с «упаковки БД» титул. Подождите, пока процесс сохранения завершен.
https://i.chitachok.xyz/SBg7zc9.png
Шаг 10

Теперь в строке меню, перейдите в «View» -> «OpenSubviews» -> «Strings», откройте окно строки.
https://i.chitachok.xyz/roc7JIB.png
Это будет содержать все строки, найденные в бросил сборки вместе с их позиции.
https://i.chitachok.xyz/kD8BkN9.png
Вам нужен этот список строк, чтобы найти SSystemGlobalEnvironment и почти все остальное. Поиск ближайших строку и копать немного глубже-это один из самый быстрый способ найти что-то. С публично доступной SDK и cryengine, это делает все намного проще.

Шаг 11

Наконец-то мы здесь, где мы найдем первое, что позиция SSystemGlobalEnvironment. Давайте выясним, как мы можем найти его, мы должны?

В то время как внимание на недавно открывшемся окне строки, нажмите сочетание клавиш Ctrl + F, чтобы открыть панель поиска для этого конкретного окна. Теперь искать «ai_CompatibilityMode» (без кавычек, можно начать вводить и это будет автоматический поиск после каждого нажатия клавиши).
https://i.chitachok.xyz/YaFvYGW.png
Шаг 12

Дважды щелкните на единственный результат его нашли, чтобы перейти по этому адресу.
https://i.chitachok.xyz/GCqqC3u.png
Tеперь нажмите на верхнюю часть «aAi_compatibili» указатель и сосредоточиться на нем.
https://i.chitachok.xyz/vyBBcHj.png
Шаг 13

Теперь нажмите x, чтобы открыть внешние ссылки (перекрестные ссылки) для этого конкретного адреса. Появится окно со всеми адресами ссылок на этот адрес (в этом случае он только один).
https://i.chitachok.xyz/Z1neb3G.png
Шаг 14

Дважды щелкните на только результат, чтобы перейти по этому адресу. Теперь мы здесь…
https://i.chitachok.xyz/UNrOnNI.png
Шаг 15

Поскольку это нуб-фрэндли учебник, введите эту функцию в псевдокоде, нажав клавишу F5, и теперь мы здесь…
https://i.chitachok.xyz/r19WIEq.png
Шаг 16

Щелкните правой кнопкой мыши на параметр DWORD возле строки «ai_CompatibilityMode» (в данном случае «dword_1A3F2B8») и выберите «переименовать глобальной номенклатуры».
https://i.chitachok.xyz/2sSF25W.png
Назовите его «SSystemGlobalEnvironment».

https://i.chitachok.xyz/m1p43l4.png
Нажмите «OK» для сохранения изменений. Повторить шаг 9 и сохранить базу данных, чтобы сохранить изменения на диск.
https://i.chitachok.xyz/Edzy1Pn.png
В случае если вы еще не заметили, мы нашли свой SSystemGlobalEnvironment. Чтобы получить его адрес, дважды щелкните на нем («SSystemGlobalEnvironment»), и оно возьмет вас в его адрес.
https://i.chitachok.xyz/DW2getA.png
Так, в данном случае, адрес SSystemGlobalEnvironment является: 0x01A3F2B8.

Шаг 17

Давайте найдем IGame смещение в SSystemGlobalEnvironment. Вы готовы?

Пожалуйста, повторите шаг 11, но на этот раз искать «IsPlayer» в строки вместо. Имейте в виду, что поиски должны быть ЧУВСТВИТЕЛЬНhttps://i.chitachok.xyz/FWdjGPQ.png Ы К РЕГИСТРУ!. Так что это не «isPlayer», «Isplayer», он должен быть «IsPlayer», и только слово целиком результаты. Пожалуйста, обратитесь к ниже изображения, чтобы получить представление, посмотрите на выделенную строку.
Шаг 18

Же, как и раньше, дважды щелкните по нему и перейдите к его позиции. Ориентироваться на указатель и нажмите x, чтобы открыть внешние ссылки.
https://i.chitachok.xyz/K0MpESl.png
Вы можете получить несколько ссылок сюда. Мы должны убедиться, что мы перемещаемся в нужное место, так что… дважды щелкните каждый из них и посетить их, пока вы не совпадать с того, что я говорю, чтобы вы искали.

Как побывать в каждом из них, когда мы принимаем эту позицию и окно потеряет внешних ссылках вы говорите? Это просто. Скажем, мы посетили первый такой…https://i.chitachok.xyz/k8yrvLd.png
Вы можете повторно открыть окно внешних ссылок, сосредоточив внимание на один и тот же указатель и нажав X.
https://i.chitachok.xyz/qyv3071.png
Шаг 19

Найти ссылку с «значением entityid» строку возле него, и «GetAmmoClassNameById» строку и «RemoveDroppedItems» в ближний Нижний. Что-то подобное, к твоему сведению, это является правильным, а также…
https://i.chitachok.xyz/vk2Fk0z.png
Шаг 20

Введите псевдокод, нажав клавишу F5, как и раньше. Вы найдете ScriptBindings и cryengine. Каждый именованный строковые функции в сопровождении собственных функция. Например, давайте продолжим с функцией IsPlayer.
https://i.chitachok.xyz/W0CX7YS.png
1 — ScriptBind имя функции.
2 — ScriptBind параметров функции.
3 — ScriptBind вспомогательная функция или функция.

Чтобы найти то, что нам нужно, (который является компания igame смещение в SSystemGlobalEnvironment в данном случае), пожалуйста, введите функцию ScriptBind из «IsPlayer». В данном случае, 3-я, «sub_B0C030».
https://i.chitachok.xyz/C1gZnUJ.png
Шаг 21

Дважды щелкните его, чтобы войти в эту функцию в псевдокоде. Теперь мы здесь…
https://i.chitachok.xyz/d3v4Ae1.png
Вы заметите, мы наш, мы новый нашли SSystemGlobalEnvironment, который мы недавно переименованы и сохранены там.
https://i.chitachok.xyz/GIbreRZ.png
Щелкните правой кнопкой мыши на SSystemGlobalEnvironment смещения величина, показывающая, кроме того. В этом случае после «+», он показывает «36». Щелкните правой кнопкой мыши на нем и выберите «шестнадцатиричной форме».
https://i.chitachok.xyz/ikVUtcA.png
Вы будете в конечном итоге с это значение преобразуется в шестнадцатиричной форме, которая 0x24.
https://i.chitachok.xyz/nCeDN1m.png
В случае если вы еще не заметили, это смещение от igame в SSystemGlobalEnvironment. Это SSystemGlobalEnvironment + 0x24 = флэшка.

Шаг 22

Давайте найдем смещение IRenderer, что вы говорите?

Пожалуйста, повторите шаг 11, но на этот раз искать «Draw2DLine» в строки вместо.
https://i.chitachok.xyz/osoaGVv.png
Же, как и раньше, двойным кликом зайти в эту позицию и нажмите x, ориентируясь на указатель, чтобы получить список ссылок.https://i.chitachok.xyz/ipGu1ZE.png
Идти на эту должность, дважды щелкнув результат. Нажмите F5 и введите псевдокод.
https://i.chitachok.xyz/WbPG1Ec.png

Перейти к функции ScriptBind, в этом случае «sub_BAF270».

Шаг 23

Найти там SSystemGlobalEnvironment на вершине.https://i.chitachok.xyz/9KI3Yyq.png
Же, как и раньше, преобразования показано смещение в шестнадцатиричной форме.https://i.chitachok.xyz/YEJloGY.png
В случае если вы еще не заметили, в этом случае 0x2C в IRenderer смещение в SSystemGlobalEnvironment. Итак, это SSystemGlobalEnvironment + 0x2C = IRenderer.

Шаг 24

ОК, теперь пришло время, чтобы найти ISystem смещение в SSystemGlobalEnvironment. Давайте в это…

Пожалуйста, повторите шаг 11, но на этот раз искать «GetUserName» в строки вместо.
https://i.chitachok.xyz/E8pJYxU.png
Же, как и раньше, выбрать правильный весь результат слово и перейти к позиции. Ориентироваться на указатель и открытые внешние ссылки с помощью клавиши X.
https://i.chitachok.xyz/EyQtCH7.png
Перейти на результате и введите псевдокод, нажав клавишу F5. Введите его в соответствующую функцию ScriptBind.
https://i.chitachok.xyz/0a80eWG.png
В данном случае это «sub_BADAA0». Дважды кликните для входа.

Шаг 25

Найти там SSystemGlobalEnvironment вверху.
https://i.chitachok.xyz/ND7E2Zz.png
Же, как и раньше, преобразования показано смещение в шестнадцатиричной форме.https://i.chitachok.xyz/9V2iZhA.png
В случае если вы еще не заметили, в этом случае 0x98 в ISystem смещение в SSystemGlobalEnvironment. Итак, это SSystemGlobalEnvironment + 0x98 = ISystem.

Шаг 26

Пришло время, чтобы найти IPhysicalWorld сейчас, это один из самых легких зачетов, чтобы найти…

Пожалуйста, повторите шаг 11, но на этот раз искать «RayWorldIntersection(Game)» в вместо струн.
https://i.chitachok.xyz/ed0xCHZ.png
Дважды щелкните результат, чтобы перейти, что позиции, открытые внешние ссылки же, как и раньше, нажав кнопку x на указатель. На этот раз вы найдете много ссылок. Выберите один, в основном любой из них. Если следующие шаги не совпадают с твоими, Пожалуйста, выберите другой.

Затем перейти на этот адрес и введите псевдокод.

Шаг 27

Найти ближайший опорный SSystemGlobalEnvironment в строку (в этом случае, ближайший к «RayWorldIntersection(Game)»).
https://i.chitachok.xyz/Ho0OB1n.png
Же, как и раньше, преобразования показано смещение в шестнадцатиричной форме.
https://i.chitachok.xyz/w9t4EOI.png
В случае если вы еще не заметили, в этом случае 0x5C в IPhysicalWorld смещение в SSystemGlobalEnvironment. Итак, это SSystemGlobalEnvironment + 0x5C = IPhysicalWorld.

Шаг 28

Ах да, теперь большой. В «IEntitySystem». Кто не любит видеть все оружие, боеприпасы, взрывчатые вещества, в сопоставлении с правого ЭСП? Давайте сделаем это потом…

Пожалуйста, повторите шаг 11, но на этот раз искать «GetEntities» в строки вместо.
https://i.chitachok.xyz/27Vyx3Z.png
Выбери правильный результат в целом слово так же, как раньше, и идти на позиции. Получить внешние ссылки, сосредоточив внимание на указатель, нажав X.
https://i.chitachok.xyz/BuBn7Rm.png
Двойной клик и перейти в позицию ссылки и введите псевдокод.
https://i.chitachok.xyz/E90XYew.png

Дважды щелкните и введите его функции ScriptBind. В данном случае это «sub_BADF20».

Шаг 29

Найти первое вхождение SSystemGlobalEnvironment.
https://i.chitachok.xyz/daYiq3B.png
Же, как и раньше, преобразования показано смещение в шестнадцатиричной форме.
https://i.chitachok.xyz/8XZVzY9.png
В случае если вы еще не заметили, в этом случае 0x38 ошибкой в IEntitySystem смещение в SSystemGlobalEnvironment. Так, это SSystemGlobalEnvironment + 0x38 ошибкой = IEntitySystem.

Шаг 30

Что нужно, чтобы создать удивительный гладкая целью? ITimer конечно. Предоставить нам несколько точный механизм времени рамки. Давайте найдем ITimer смещение в SSystemGlobalEnvironment…

Пожалуйста, повторите шаг 11, но на этот раз искать «GetFrameTime» в строки вместо.
https://i.chitachok.xyz/44ykQl9.png
Двойной клик и перейти в результате открытых внешних ссылок, нажав клавишу F5, сосредотачиваясь на указателе, как и прежде.
https://i.chitachok.xyz/Kh0SaCI.png
Перейдите к единственным результатом его нашли и введите псевдокод.
https://i.chitachok.xyz/evPvFNl.png
Дважды щелкните и введите его функции ScriptBind, в данном случае «sub_BAD910».

Шаг 31

Найти смещение он показывает в «другое» положение здесь. Смотри выделенное смещением, это ценность, которую мы ищем.

https://i.chitachok.xyz/7UCiGNf.png
Помните, смещение, вы только что нашли.

Шаг 32

Вернитесь в псевдокоде на кнопку передачи на панели инструментов.https://i.chitachok.xyz/sETk2MI.png
Теперь вы вернулись в конце шага 30. Перейдите к верхней части построены псевдокод. Найти SSystemGlobalEnvironment смещения на верхнем торце, как показаны на этом изображении…
https://i.chitachok.xyz/wafsj0X.png
Выберите один со смещением, которые вы нашли раньше. В данном случае это «+ 96» один.
https://i.chitachok.xyz/GXGMOIV.png
Же, как и раньше, преобразования показано смещение в шестнадцатиричной форме.
https://i.chitachok.xyz/O1vKFVd.png ‘
В случае если вы еще не заметили, в этом случае 0xA8 в ITimer смещение в SSystemGlobalEnvironment. Итак, это SSystemGlobalEnvironment + 0xA8 = ITimer.

Шаг 33

Давайте найдем «IConsole» тоже, потому что почему бы и нет?!

Пожалуйста, повторите шаг 11, но на этот раз искать «GetCVar» в строки вместо.
https://i.chitachok.xyz/4HJz6wH.png
Выбрать правильный весь слово и перейти к его позиции, так же как и раньше. Открытых внешних ссылок, ориентируясь на указатель и нажав X.
https://i.chitachok.xyz/HAjcvR1.png
Перейти на только результата, опять введите псевдокод, нажав клавишу F5, так же как и раньше.
https://i.chitachok.xyz/TLySm75.png
Дважды щелкните и введите его функции ScriptBind, в данном случае «sub_BAFAB0».

Шаг 34

Найти ссылку SSystemGlobalEnvironment там.

https://i.chitachok.xyz/r4IRIpa.png
Же, как и раньше, преобразования показано смещение в шестнадцатиричной форме.
https://i.chitachok.xyz/niNPQiM.png
В случае если вы еще не заметили, в этом случае 0x48 с IConsole смещение в SSystemGlobalEnvironment. Итак, это SSystemGlobalEnvironment + 0x48 = IConsole.

Шаг 35

Давайте также найти функции RayWorldIntersection, чтобы мы могли проанализировать трассировки лучей, чтобы проверить тот или иной актер или субъект/объект виден из определенного места. Эта проверка имеет важное значение для aimbot и для ЭСО.

Вы можете найти один и тот же адрес на шаге 27 выше. Но в случае если вы хотите сделать его с нуля, пожалуйста, продолжайте снизу.

Пожалуйста, повторите шаг 11, но на этот раз искать «RayTraceCheck» в строки вместо.

https://i.chitachok.xyz/9h16FT3.png
Двойной клик и перейти в позицию, так же как и раньше ориентируемся на указатель и нажмите x, чтобы показать внешние ссылки. Вы увидите несколько ссылок здесь.
https://i.chitachok.xyz/Jol2FX9.png
Это время выбрать любой из ссылок и выберите там. Это нормально, так как все из них содержится то, что мы ищем. Я заберу второй за этот учебник.

Перейдите по ссылке, введите псевдокод, нажав клавишу F5.
https://i.chitachok.xyz/74Hz2tD.png

Дважды щелкните и введите его функции ScriptBind, в данном случае это «sub_BB2A40».

Шаг 36

В псевдокоде, прокрутите вниз и найти функции, содержащей параметр, который имеет строку, которая начинается с «RayWorldIntersection» (это может быть «RayWorldIntersection(игра)», «RayWorldIntersection(3dEngine)», «RayWorldIntersection(EntitySys)» или любой другой).
https://i.chitachok.xyz/ADpv3vM.png
Дважды щелкните на имени функции, чтобы перейти к этой функции в псевдокоде.
https://i.chitachok.xyz/iAYZtSY.png
Это функция, которую мы ищем, получить адрес его, ссылаясь на его имя. В данном случае это 0x046A1D0 с именем функция «sub_46A1D0». Кроме того, вы можете правой кнопкой мыши на название и выбираем «переименовать глобальный пункт» имя функции «RayWorldIntersection», а также для дальнейшего использования.

Так, в этом случае функция RayWorldIntersection в 0x046A1D0.

Я надеюсь, вы узнали что-то из моего учебника. Я не могу ждать, чтобы увидеть, что вы делаете!
Будте любезны, поделитесь, что вы делаете здесь.

Понравилась статья? Поделить с друзьями:
  • Как найти карту банка дома
  • Как найти друзья друзей в телеграмме
  • Как найти количество теплоты электрический ток
  • Как правильно составить xml файл
  • Как найти предмет по видео