0 functions applied in IDA from .sig file
See original GitHub issuePretty sure it’s not me doing something wrong(and creating all those issues I mean). Works on a simple VC++ Hello World project as expected and explained in the articles(One, Two):
On the other hand, in a big UE4 project 0 functions get applied in IDA from .sig file after generating the .sig file with sigmake from idb2pat:
I generate the .sig file using command sigmake -lrsub_ "S05_TestingGrounds-Win64-Shipping - No Xdigit errors(deleted lines with errors).pat" "S05_TestingGrounds-Win64-Shipping - No Xdigit errors(deleted lines with errors).sig"
. -lrsub_
parameter is to exclude functions that have sub_
in them.
After generating the .sig file and then trying to apply the .sig file, that’s what I get: 0 functions applied.
Here’s the link with the project, pat and sig file, so you can try to generate and apply this sig file onto executable yourself: https://www.dropbox.com/h?preview=TestingGrounds_DebugSymbols.zip
This is a Unreal Engine 4.26 C++ project created from FPS template which I packaged in UE4 with debug symbols.
The executable, pat and .sig files are in \WindowsNoEditor\S05_TestingGrounds\Binaries\Win64\
folder. The original pat file with xdigit problem is called S05_TestingGrounds-Win64-Shipping - Original.pat
. The pat file with problematic lines deleted which cause xdigit problem is called S05_TestingGrounds-Win64-Shipping - No Xdigit errors(deleted lines with errors).pat
.
Problem for 0 functions applied is somewhere between lines 30000 and 35000 in the .pat file because if I delete all lines after line 30000, it generates valid .sig file and then applies this sig file appropriately on the executable:
After I delete lines 30000 - 35000 in the pat file and then delete all the lines after 50000, it generates valid .sig files and applies the sig file appropriately on the executable:
As you can see on the screenshots, no meaningful logs is generated after applying new FLIRT signature in IDA, just Plan FLIRT signature: Unnamed sample library
in the case of success and failure to apply any function signatures.
Issue Analytics
- State:
- Created 2 years ago
- Reactions:1
- Comments:10 (5 by maintainers)
Top GitHub Comments
i bet there’s a hardcoded limitation in sigmake of the symbol being 0x200 (1024) characters long, or less.
i ran into a similar issue that sigmake would not process more than 0x2000 leaves, but this could be bypassed by patching sigmake 😉
in this case, i think we should restrict the length of symbols generated by idb2pat.
A way to find such lines is using the regex of
it checks for sequences like
FF E650 1A798