欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]使用unicorn engin还原Armariris字符串混淆

[原创]使用unicorn engin还原Armariris字符串混淆

孤挺花(Armariris) -- 由上海交通大学密码与计算机安全实验室维护的LLVM混淆框架 https://github.com/GoSSIP-SJTU/Armariris

编译Armariris

git clone git@github.com:gossip-sjtu/Armariris.git

编译

cd Armariris

mkdir build

cd build

cmake ../ -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="ARM;X86;AArch64"

make -j8

测试文件内容如下:

#include <stdio.h>

void fun(){

    printf("test 3333\n");

}

int main(int argc, char *argv[]) {

    printf("test 1111\n");

    printf("test 2222\n");

    fun();

    return 0;

}

使用编译好的llvm编译这个测试的文件

clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -mllvm -sobf test.c -o test

使用isysroot指定sdk,然后使用-mllvm -sobf开启字符串混淆

Armariris是如何进行字符串混淆的

我们直接看使用ida反汇编出来的代码

int __cdecl main(int argc, const char **argv, const char **envp)

{

  printf(aRcur7777, argv, envp);

  printf(&byte_100001036);

  fun();

  return 0;

}

可以看到有两个printf函数打印了一些数据出来,我们点第一个打印的字符串,双击aRcur7777跳转到
字符串定义位置,这个字符串在data段

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功