-
Notifications
You must be signed in to change notification settings - Fork 192
Integrity protection implementation thoughts #48
Comments
We did in the original implementation of Hikari and then removed, guess why |
Probably, some guys try to commercialize the ideas. But I don't see the problem here. There is a balance here in:
|
Not really, the idea itself is inherently flawed, this is purely a technical issue |
Do you mean if the algorithm is known, the protection is useless? |
Is this available somewhere? Or this implementation was not published on github? |
Not only that, but a few other issues, some inherently from LLVM's IR system design. Should be easy to reason about once you start implementing it.
I dont remember, probably not |
The main problem I see, at least, now is getting the ranges in the native code which should be protected as we cannot get the lenght of the function being protected. We can easily find the function location in the native code but getting its length is more difficult task. |
Exactly, in order to do that you need to dig very deep into the compilation pipeline, heavily modify multiple components in LLVM , as well as handling stuff like inlining or whatsoever. |
QuarksLab had a slide about implementing such feature (although they talked about it in a such an obscure way that we can only guess that it's integrity related) |
@Naville How do you think whether |
Trade secret that I can't share too much |
It seems impossible to achieve high availability only through IR Pass, because it cannot be guaranteed that the TargetMachine generated by us is the same as the TargetMachine generated by the frontend, and the location of the IR Pass in the pipeline is also an issue |
No plans to implement this feature |
Do you ever think about adding integrity protection to make this product more or less complete?
It is pretty easy to implement any algorithm on C, precompile it is a bitcode file (*.bc) and then just link it as it is done for the custom implementation in AntiDebugging.cpp.
Example implementation:
Each integrity protection instance should have
Protection itself should be applied in two steps:
The text was updated successfully, but these errors were encountered: