c - Assembly-level function fingerprint -


I would like to define that two functions were compiled from two functionalities (C) source code, and would like to To do this, even though they have been compiled by different compiler versions or with different collection options. Currently, I am considering implementing some type of endemler-level function fingerprinting. The fingerprint of a function should have properties:

  1. The two functions compiled from the same source in different conditions are likely to have the same fingerprint (or similar one),
  2. Two functions compiled from different sources are likely to have different fingerprints,
  3. (Bonus) If two source functions are the same, then fingerprints are similar (for some reasonable definition of similar).

    What I am seeing for now is a group of merits of collective work which are personally satisfied (1) and expectations have also been taken together (2). .

    Beliefs

    Of course this is usually impossible, but something that might exist, which will work in most cases.

  4. has not been ambiguous in any way, compiled by GIC,
  5. on x86 Linux Can be applied to other architectures would be good).

    Thoughts

    Unfortunately, I have no experience with the assembly. Here are some ideas for the above qualities:

      < Li> The type of instructions contained in the function (i.e. floating point instructions, memory barriers)
    • Memory access from the function (it does
    • called the Library function (their names should be available in ELF , Their order should not usually change)
    • Size

      Mau Working Job

      I was only able to find work related to tightness: ul>

    • Automatic approach which can detect cryptography in coded code:
    • Fast Library Identification and Recognition Technology in IDA Disambigler; Concrete instruction recognizes scenes, but contains some potentially useful ideas:

      Do you have work quality Have any suggestions about? Or an al Any idea that meets my goal or something like that was already implemented and I completely missed it?

      FLIRT uses byte-level pattern matching, so this instruction breaks with any changes in encoding (like different register allocation / re-ordering instructions).

      For graph matching, see Bindiff. Although it is a closed source, Haller has described some methods. They also do some open sources to generate fingerprints which lose some alkos.

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -