You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Class fingerprints are helpful to find methods that have same method signature.
Feature
object MyClassFingerprint : ClassFingerprint(
"com/example/package/MyClass", // Name of the class
listOf( // list of method signatures present in the class
MethodFingerprint("V", AccessFlags.PUBLIC or AccessFlags.FINAL, listOf("L", "L", "L"), listOf(
// Opcode list for method 1
)),
MethodFingerprint(strings = listOf("force_overlay", "Media#updateFields", "live_reels_metadata"))
MethodFingerprint(customFingerprint = { methodDef ->
methodDef.definingClass.endsWith("ClipsEditMetadataController;")
}),
// Add more method fingerprints as needed
),
// Number of methods in the class
3
)
ClassFingerprint: This is a class that extends the Fingerprint class and is used to define the fingerprint of the target class. The ClassFingerprint includes a set of characteristics that uniquely identify the target class, such as the class name, method signatures, and number of methods in the class.
Other details are self-explanatory.
Motivation
Class structure is more stable
More precise matching
Less prone to false positives
Additional context
No response
Acknowledgements
I have searched the existing issues and this is a new and no duplicate or related to another open issue.
I have written a short but informative title.
I filled out all of the requested information in this issue properly.
The text was updated successfully, but these errors were encountered:
Not sure what the best way to implement this would be (I don't have much Kotlin development experience), I came up with two viable solutions (they both expose ClassDef to `customFingerprint):
change customFingerprint signature to (Method, ClassDef) -> Bool. It's clean (nice API), but breaks pretty much all patches that depend on a custom fingerprint.
create a MethodProxy class that implements Method, but also accepts a ClassDef as a constructor argument, and makes it publicly accessible. Doesn't break API, but feels more hacky.
Maybe there exists even a cleaner way? I looked at extensions, but I couldn't find a nice way to pass a local variable into an extension function/field.
MethodFingerprint could also be reworked to perform matching on the ClassDef.
Type
Functionality
Issue
Class fingerprints are helpful to find methods that have same method signature.
Feature
ClassFingerprint: This is a class that extends the Fingerprint class and is used to define the fingerprint of the target class. The ClassFingerprint includes a set of characteristics that uniquely identify the target class, such as the class name, method signatures, and number of methods in the class.
Other details are self-explanatory.
Motivation
Additional context
No response
Acknowledgements
The text was updated successfully, but these errors were encountered: