It might be useful to detect exception throws and report their use as injected attributes in Call Analysis.
public sealed class ThrowsAttribute : Attribute
{
public Type Type;
}
Notes from the Discord conversation:
Just checking for il2cpp_raise_exception isn't enough.
Il2cpp has exception helper functions so we have to look for a function which loads two strings - "System" and the name of the exception type.
These helpers can be nested several layers deep, so if we have a call to an unknown function, we have to take the first ~ 3 calls/jmps from that function's body and do the same recursive check on each of those functions.
Open Questions:
Is this useful enough to justify the work involved?
Is this useful enough to justify adding more attributes for the user to scroll past?
Should the constructor parameter types also be specified?
With native method detection implemented, I no longer see much justification for this feature. The constructor calls show up clearly in the analysis, even if some traversal is required.
It might be useful to detect exception throws and report their use as injected attributes in Call Analysis.
Notes from the Discord conversation:
il2cpp_raise_exception
isn't enough.Open Questions:
References: https://github.com/SamboyCoding/Cpp2IL/blob/new-analysis/Cpp2IL.Core/Analysis/Actions/x86/Important/CallExceptionThrowerFunction.cs