Current time: 24.11.2024, 14:53 Hello There, Guest! (LoginRegister)
Language: english | russian  

Poll: Интересно ли вам научиться самим находить необходимые данные в exe игры без посторонней помощи?
This poll is closed.
Да! 57.14% 8 57.14%
Конечно же ДА!!! 42.86% 6 42.86%
[...] 0% 0 0%
Total 14 votes 100%
* You voted for this item. [Show Results]

Post Reply 
Threaded Mode | Linear Mode
Реверс игры для новичков
» Небольшой туториал по нахождению данных для UN:C
Author Message
RoseKavalier Offline

Posts: 118
Post: #25

My database is the same as everyone else's but modified to use H3API terminology. Here are a few screens to show the process of adding enumerations (same way for structures) - you can copy them from H3API, ERM, or wherever you please.

Cleaning up IDA code
Hope igrik doesn't mind))

We start with igrik's database. I found the function using the FUNCTIONS WINDOW and Ctrl+F using the term 'shoot'. I've numbered some things that can be modified to enhance comprehension of the current section.

Adding an enumeration/structure to IDA. The easiest is SHIFT+F1 but it may take some time to get used to hotkeys.

Now Insert a new local type or use right-click menu.

You get a window like this where you can either create or just copy-paste.

When you are done, the enum/struct exists in local types and is not available globally, so:
* scroll to the bottom
* select your new type
* press enter (or double-click it)

This makes it accessible globally and you will see it in the ENUMS tab.

Go back to PSEUDOCODE section, and set the enuM.

Now you'll get text instead of `15`, while not perfect it shows what the code actually intends to do.

Now let's copy some more enums and repeat the process.

Don't forget to add the type globally!

After you add some more enums, you may get more than one option when choosing what to assign, just pick the one that makes sense.

Now all enums are set for this portion of code, things are looking better; however due to how nwc wrote the BattleMgr original class, there is still some incomprehensible junk next to HeroA... it takes some time to recognize such patterns but this is because the original is an array of 2 _Hero_* instead of being split into attacking and defending hero.

Double-click the HeroA term to be taken to it in the STRUCTURES tab.

We edit this term's tYpe or with right-click...

Finally 'HeroA' no longer makes sense, reName it to 'Heroes'.

Go back to PSEUDOCODE and refresh the decompilation (F5). Now +221 is transformed to secondary skills offset which is again easier to understand.

One last step, add the secondary skills enum, and assign it to the value within.

End result... there is still some work to rename v.. terms but usually this is only necessary when you face complicated pieces of code or are working on disassembling something new.

Actual time was about 3 minutes because I had to look up the enumerations. Now that they exist in this database, I can go elsewhere and do this process in 15 seconds and have code that is readable without relying on outside sources.

I don't ERM (and don't plan to) so I can never even fill half of igrik's shoes, but I hope this is useful. As with everything else, you get better by practice: the more you do the better you'll get at recognizing patterns and assigning the correct values/structures.
23.07.2020 18:47
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
Реверс игры для новичков - igrik - 22.07.2020, 12:55
RE: Как найти нужные адреса и данные для UN:C - wessonsm - 22.07.2020, 21:40
RE: Как найти нужные адреса и данные для UN:C - daemon_n - 22.07.2020, 21:55
RE: Как найти нужные адреса и данные для UN:C - Raistlin - 23.07.2020, 00:37
RE: Как найти нужные адреса и данные для UN:C - igrik - 23.07.2020, 01:59
RE: Как найти нужные адреса и данные для UN:C - XEPOMAHT - 23.07.2020, 02:54
RE: Как найти нужные адреса и данные для UN:C - RoseKavalier - 23.07.2020, 04:26
RE: Как найти нужные адреса и данные для UN:C - V_Maiko - 23.07.2020, 07:04
RE: Как найти нужные адреса и данные для UN:C - PerryR - 23.07.2020, 09:51
RE: Как найти нужные адреса и данные для UN:C - daemon_n - 23.07.2020, 10:55
RE: Как найти нужные адреса и данные для UN:C - wessonsm - 23.07.2020, 11:54
RE: Как найти нужные адреса и данные для UN:C - XEPOMAHT - 23.07.2020, 12:18
RE: Как найти нужные адреса и данные для UN:C - daemon_n - 23.07.2020, 12:55
RE: Как найти нужные адреса и данные для UN:C - XEPOMAHT - 23.07.2020, 13:29
RE: Как найти нужные адреса и данные для UN:C - Berserker - 23.07.2020, 15:52
RE: Как найти нужные адреса и данные для UN:C - XEPOMAHT - 23.07.2020, 16:04
RE: Как найти нужные адреса и данные для UN:C - Zur13 - 23.07.2020, 16:32
RE: Как найти нужные адреса и данные для UN:C - RoseKavalier - 23.07.2020 18:47
RE: Как найти нужные адреса и данные для UN:C - Berserker - 23.07.2020, 20:39
RE: Как найти нужные адреса и данные для UN:C - V_Maiko - 24.07.2020, 03:15
RE: Как найти нужные адреса и данные для UN:C - Zur13 - 24.07.2020, 03:26
RE: Как найти нужные адреса и данные для UN:C - igrik - 24.07.2020, 10:19
RE: Как найти нужные адреса и данные для UN:C - Zur13 - 24.07.2020, 11:29
RE: Как найти нужные адреса и данные для UN:C - XEPOMAHT - 24.07.2020, 12:45
RE: Как найти нужные адреса и данные для UN:C - Zur13 - 24.07.2020, 13:32
RE: Как найти нужные адреса и данные для UN:C - XEPOMAHT - 24.07.2020, 15:08
RE: Как найти нужные адреса и данные для UN:C - igrik - 24.07.2020, 15:38
RE: Реверс игры для чайников - igrik - 24.07.2020, 12:08
RE: Реверс игры для новичков - Berserker - 24.07.2020, 17:35
RE: Реверс игры для новичков - igrik - 24.07.2020, 17:50
RE: Реверс игры для новичков - daemon_n - 24.07.2020, 19:39
RE: Реверс игры для новичков - RoseKavalier - 25.07.2020, 04:10
RE: Реверс игры для новичков - daemon_n - 25.07.2020, 11:09
RE: Реверс игры для новичков - RoseKavalier - 25.07.2020, 17:45
RE: Реверс игры для новичков - daemon_n - 25.07.2020, 19:30
RE: Реверс игры для новичков - wessonsm - 26.07.2020, 00:10
RE: Реверс игры для новичков - daemon_n - 26.07.2020, 01:43
RE: Реверс игры для новичков - wessonsm - 11.02.2022, 06:09
RE: Реверс игры для новичков - XEPOMAHT - 11.02.2022, 06:57
RE: Реверс игры для новичков - wessonsm - 11.02.2022, 07:03
RE: Реверс игры для новичков - daemon_n - 01.06.2022, 05:45
RE: Реверс игры для новичков - wessonsm - 03.09.2022, 06:26
RE: Реверс игры для новичков - daemon_n - 03.09.2022, 09:17
RE: Реверс игры для новичков - wessonsm - 03.09.2022, 11:01
RE: Реверс игры для новичков - Berserker - 03.09.2022, 11:35
RE: Реверс игры для новичков - daemon_n - 03.09.2022, 11:45
RE: Реверс игры для новичков - XEPOMAHT - 03.09.2022, 15:04
RE: Реверс игры для новичков - Berserker - 03.09.2022, 12:47
RE: Реверс игры для новичков - Berserker - 03.09.2022, 19:24
RE: Реверс игры для новичков - daemon_n - 03.09.2022, 23:20
RE: Реверс игры для новичков - XEPOMAHT - 04.09.2022, 04:47
RE: Реверс игры для новичков - Berserker - 04.09.2022, 07:10
RE: Реверс игры для новичков - Berserker - 04.09.2022, 08:07
RE: Реверс игры для новичков - wessonsm - 04.09.2022, 08:56
RE: Реверс игры для новичков - Berserker - 04.09.2022, 08:59
RE: Реверс игры для новичков - wessonsm - 04.09.2022, 09:02
RE: Реверс игры для новичков - daemon_n - 04.09.2022, 09:07
RE: Реверс игры для новичков - Berserker - 04.09.2022, 09:10
RE: Реверс игры для новичков - wessonsm - 04.09.2022, 09:15
RE: Исследование героев - Zur13 - 22.07.2020, 13:17
RE: Исследование героев - XEPOMAHT - 22.07.2020, 13:41
RE: Исследование героев - PerryR - 22.07.2020, 13:43
RE: Исследование героев - XEPOMAHT - 22.07.2020, 14:14
RE: Исследование героев - Berserker - 22.07.2020, 16:41
RE: Исследование героев - daemon_n - 22.07.2020, 18:30
RE: Исследование героев - RoseKavalier - 22.07.2020, 18:36
RE: ERA III - daemon_n - 18.05.2022, 20:25
RE: ERA III - wessonsm - 18.05.2022, 21:17
RE: ERA III - daemon_n - 18.05.2022, 21:19
RE: ERA III - wessonsm - 18.05.2022, 22:02
RE: ERA III - Berserker - 18.05.2022, 22:29
RE: ERA III - igrik - 19.05.2022, 19:29

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group