String_encryption

字符串加密,使用clang-c接口将源代码转换成抽象语法树,并对抽象语法树进行遍历和分析,帮助我们分析代码中存在的字符串;进而对其中的字符串进行加密处理,来防止静态分析

Posted by kunnan on August 17, 2018

前言

libclang: C Interface to Clang

拿到字符串的开始和结束的位置,然后再进行字符串加密操作

字符串加密

  • 解析字符串的code

    • 导入一些必要的头文件clang-c

    • ​ 先使用dlopen 将其加载到内存并获取需要使用的函数指针

              void *hand = dlopen("/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib",RTLD_LAZY);
          
      

解析字符串的代码分析

clang-c/Index.h
  • enum CXChildVisitResult printVisitor(CXCursor cursor, CXCursor parent, CXClientData client_data) {: \brief Visitor invoked for each cursor found by a traversal.

    • CXChildVisitResult
      • CXChildVisit_Break 结束遍历
      • CXChildVisit_Continue 跳过当前节点的额遍历,不再遍历它的孩子节点
      • CXChildVisit_Recurse 继续遍历它的孩子节点

See Also

/Users/devzkn/bin//knpost String_encryption 字符串加密,使用clang-c接口将源代码转换成抽象语法树,并对抽象语法树进行遍历和分析,帮助我们分析代码中存在的字符串;进而对其中的字符串进行加密处理,来防止静态分析 -t security
#原来""的参数,需要自己加上""

转载请注明: > String_encryption