Releases: K4ryuu/IDA-Source2Forge
Releases · K4ryuu/IDA-Source2Forge
Release list
Release v1.0.1 - 2026.08.04
[1.0.1] - 2026-08-04
Fixed
- The rename offer came back on every load even with nothing left to name. A handler shared by two commands can only carry one name, so whichever command lost saw a
cmd_name that was not its own and reported itself pending forever.ent_fireandent_fire_outputshare a dispatcher on cs2libserver.so, which is exactly that case. One claimant owns the name now, picked by name rather than by scan order so a game update cannot flip it, and the others stop asking. - The handler count in the log was wrong: every handler that already carried the right name was renamed to that same name again and counted as work, so a run that changed nothing reported 354 renames. It now leaves an already correct name alone, the way the pending count always did.
nullsub_was not recognised as an IDA generated name, so command handlers that are empty stubs were mistaken for names an analyst had set and never got theircmd_name. Two of them on cs2libserver.so.
Changed
- The rename dialog only lists what it will actually name. Rows sitting at zero are left out, and the sentence about the registration constructors moved below the list. At the list indent it read like a fourth item that had lost its count.
Release v1.0.0 - 2026.08.03
[1.0.0] - 2026-08-03
First release.
Added
- Registration constructor discovery: name strings are followed to the call that consumes them, and the function collecting the most of those calls is treated as a candidate. No addresses, signatures or game builds are hardcoded.
- Argument profiling: every call site of a candidate is read back to learn which slot carries the object, the name, the flags, the description and the callback. SysV and MS x64 are both handled, including the fifth argument MS x64 spills to
[rsp+20h]. - ConVar and ConCommand separation: decided per constructor from whether its objects are ever used after registration, not from a name pattern.
- Automatic renaming: every registered global gets named after the variable it holds (
cvar_sv_cheats,ccmd_bot_add), with the description written back as a repeatable comment. Names an analyst set by hand are left alone. - Rename offer on load: fires once autoanalysis is finished, and works on a reopened database where the analysis event never runs again.
- FCVAR flag decoding: bit-to-name pairs are read out of the binary itself, merged with an hl2sdk cs2 reference table. Names found in the binary win.
- Use site browser: every reference to a variable's object outside its registration, with the containing function and the accessor it feeds.
- Prefix learning: the seed prefix list only has to find one constructor, whose call sites then supply the prefixes this binary really uses.
- Engine gate: nothing is scanned unless the binary carries Source 2 markers.
- Command handler recovery: SysV passes the callback in a register, MS x64 buries it in a stack delegate and only passes a pointer, so that one is read back from the
leathat loads it. Ambiguous sites are skipped rather than guessed. Handlers are namedcmd_<command>, 339 of 356 on a cs2server.dlland 353 of 355 onlibserver.so. - Engine function naming: the ConVar registration core is found through the call graph rather than the argument shape and becomes
ConVarRefAbstract::Register, the command constructor becomesConCommand::ConCommand, the accessor most variables are read through becomesConVarData::Value, and the shared typed getters on top of it becomeConVarRefAbstract::GetFloat,GetBool,GetIntandGetString. Per type wrappers and anything else keep their address name. - JSON and CSV export for both views.
- Duplicate detection: the compiler emits these small engine functions once per translation unit, so copies are matched by opcode sequence and given the same name.
- IDC functions (
Source2Forge_Scan,Source2Forge_Uses,Source2Forge_Rename,Source2Forge_Rescan) for scripted access from IDAPython.
Files
| File | Description |
|---|---|
src/main.cpp |
Plugin entry, actions, menu and the load-time rename offer |
src/convar_detect.h |
Constructor discovery, argument profiling, validation, extraction |
src/convar_uses.h |
Use site collection and the variable/command vote |
src/convar_flags.h |
FCVAR bit names, read from the binary with a reference fallback |
src/convar_naming.h |
Object naming and description comments |
src/convar_chooser.h |
Both list views and the use site browser |
src/convar_export.h |
JSON and CSV writers |
src/convar_idc.h |
IDC function registration |
src/convar_types.h |
Shared structures |
tests/test_idc_export.py |
Shape checks over the IDC surface, run inside IDA |
Platforms
Windows x64, Linux x64, Linux ARM64, macOS x64, macOS ARM64.