IDA Bruteforce Guide (written by someone who is totally clueless and just wanted to get stuff working)
- Get IDA Pro from somewhere, in this "guide" I use IDA Pro 7.5
- Install Python 3.5 or newer, in this "guide" I use Python 3.8.5
- Download pySigMaker.py or SigMaker, in this "guide" I use pySigMaker.
- Clone or download latest FFXIVClientStructs
- Copy pySigMaker.py in
IDA Install Directory\Plugins
You will need to disassemble FFXIV every time patch if ffxiv_dx11.exe
is updated.
- Open
IDA Install Directory\ida64.exe
- Click New
- Choose the file
FFXIV Install Directory\game\ffxiv_dx11.exe
- Choose the default options and hit OK
- When it asks for the input file with debug information hit yes in the hopes SE published their pdb by accident (thanks KazWolfe).
- Wait for IDA to be done disassembling, check the bottom left of IDA to see if it's still busy.
- Meanwhile, run
python -m pip install pyyaml
in any command prompt that has access to the installed Python
- When you see AU: idle in the bottom left corner of IDA you'll know when IDA is done disassembling.
- Hit File -> Script File -> Open
FFXIVClientStructs\ida\ffxiv_idarename.py
- Let the script run, IDA might be unresponsive while it's doing this, you might get some errors which is totally fine.
- Now IDA should be set up to do some basic stuff.
- Find the function you want to make a signature for, either through browsing through some of the renamed functions or through an offset somebody has given you and open it.
- In this "guide" I'll make a signature for
Client__UI__Agent__AgentHUD_OpenContextMenuFromTarget
- Go to Edit -> Plugins -> pySigMaker (or hit CTRL-ALT-S).
- Click "Sig for current function", this will copy the signature for use into your clipboard.
- In this example the signature we got is:
48 85 D2 74 7F 48 89 5C 24
, if your signature has question marks in them like00 ? 34 FC ?
add extra question marks like:00 ?? 34 FC ??
.
- We still need to figure out the arguments we want need to use, either read the assembly if you can understand it or hit tab (or hit Jump -> Jump to Pseudocode).
- In this example we see the call needs 2 arguments which are both IntPtr. Knowing what arguments to use will need some experience/help.
For now this concludes this shitty bruteforce guide. Any changes and recommendations to this file are welcome.
Zeffuro