Skip to content
This repository was archived by the owner on Jan 25, 2024. It is now read-only.
This repository was archived by the owner on Jan 25, 2024. It is now read-only.

Split antidebug/antitracing techniques from the code-complexity-and-obfuscation document #10

@trufae

Description

@trufae

Explain various obfuscations in detail:

  • obfuscate code (antidisasm tricks)
  • obfuscate data (strings, files)
  • obfuscate metadata (objc, symbols)

Expose the decompilation information on every language (java, js, objc, swift, C, ..)

  • swift is not as introspectable as objc

Anti-debug techniques

  • restricting debuggers or making debugging complicate have nothing to do with code complexity or obfuscation
  • explain how to use the PT_DENY_ATTACH and android:debuggable=false with code

Control flow validation

  • flow integrity - verify the workflow is the expected on every function (where do i come from?)
  • white box security
  • I dont think compiler optimizations should be listed as a way to protect code logic

Anti-RE techniques:

  • renaming symbols with wrong or invalid names
  • depending on the compiler the final binary can have more than one symbol table
  • always verify the resulting binary with strings | grep... (at least)
  • i dont think the DRM applied by FairPlay can be in any way a security measure to care because there are several tools (appcake, clutch, r2, dumpdecrypted, ...) to automate this cracking into a single press-enter

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions