飘云阁安全论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

查看: 15256|回复: 84

[Android] Android NDK 使用llvm 混淆

    [复制链接]

该用户从未签到

发表于 2015-5-4 10:54:30 | 显示全部楼层 |阅读模式
在逆向分析中 碰到 NDK被 llvm 混淆的软件越来越多了, 所以自己搭建环境编译一些小项目 分析分析
环境
Ubuntu 14.04   64bit

先将  ndkllvm.tar 解压到 /opt 目录中 命令如下
$ sudo tar -xv -f ndkllvm.tar -C /opt
然后 配置环境变量
$ vim ~/.profile  //在文件末尾添加
export LLVM=/opt/Android-ndk-r10b
加载环境变量
$ source ~/.profile

然后可进入 llvm_project/hello 目录 通过
$ $LLVM/ndk-build                //进行编译项目了


游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 2威望 +8 飘云币 +4 收起 理由
wzy41718682 + 4 PYG有你更精彩!
sndncel + 4 + 4 PYG有你更精彩!

查看全部评分

  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 465 天

    [LV.9]以坛为家II

    发表于 2015-5-4 11:14:49 | 显示全部楼层
    沙发是我的,我来支持空道版主了。有人坐我大腿上么{:soso_e120:}

    评分

    参与人数 1威望 +4 收起 理由
    0xcb + 4 PYG有你更精彩!

    查看全部评分

    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    无聊
    2017-11-5 12:00
  • 签到天数: 113 天

    [LV.6]常住居民II

    发表于 2015-5-4 11:27:21 | 显示全部楼层
    本帖最后由 wx_f1Jji177 于 2015-5-4 11:31 编辑

    llvm还可以混淆代码吗,研究下, 资源好大呀,其实藤椅坐着也是不错的,{:soso_e141:}
  • TA的每日心情

    2020-12-13 21:51
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2015-5-4 11:40:43 | 显示全部楼层
    多谢分享。学习下。
  • TA的每日心情
    开心
    2016-6-16 14:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2015-5-4 12:26:09 | 显示全部楼层
    @空道。。放个bin上来看看,混淆成啥样了~

    点评

    ida F5的效果: 是复杂的多了,  详情 回复 发表于 2015-5-4 13:09
  • TA的每日心情
    无聊
    2017-11-5 12:00
  • 签到天数: 113 天

    [LV.6]常住居民II

    发表于 2015-5-4 13:09:47 | 显示全部楼层
    本帖最后由 wx_f1Jji177 于 2015-5-4 13:12 编辑
    飘云 发表于 2015-5-4 12:26
    @空道。。放个bin上来看看,混淆成啥样了~

    1. #include <stdio.h>
    2. int main(int argc, char **args)
    3. {
    4.         int i = 0;
    5.         for(i = 0; i < 10; i++)
    6.         {
    7.                 if(i % 2)
    8.                 {
    9.                         printf("ou:%d\n", i);
    10.                 }
    11.                 else
    12.                 {
    13.                         printf("ji:%d\n", i);
    14.                 }
    15.         }
    16.         printf("hello\n");
    17.         return 0;
    18. }
    复制代码



    ida F5的效果:

    1. int __fastcall main()
    2. {
    3.   signed int v0; // r0@1
    4.   signed int v1; // r4@1
    5.   const char *v2; // r0@7
    6.   int v3; // r0@39
    7.   char v5; // [sp+7h] [bp-21h]@0

    8.   v0 = 428080492;
    9.   v1 = 0;
    10.   do
    11.   {
    12.     while ( 1 )
    13.     {
    14.       while ( 1 )
    15.       {
    16.         while ( 1 )
    17.         {
    18.           while ( 1 )
    19.           {
    20.             while ( 1 )
    21.             {
    22.               while ( 1 )
    23.               {
    24.                 while ( 1 )
    25.                 {
    26.                   while ( 1 )
    27.                   {
    28.                     while ( 1 )
    29.                     {
    30.                       while ( 1 )
    31.                       {
    32.                         while ( 1 )
    33.                         {
    34.                           while ( 1 )
    35.                           {
    36.                             while ( v0 <= -902473546 )
    37.                             {
    38.                               if ( v0 == -1066363283 )
    39.                                 v0 = 1905947092;
    40.                             }
    41.                             if ( v0 > -593865293 )
    42.                               break;
    43.                             if ( v0 == -902473545 )
    44.                             {
    45.                               v2 = "ji:%d\n";
    46.                               goto LABEL_8;
    47.                             }
    48.                           }
    49.                           if ( v0 > -480917249 )
    50.                             break;
    51.                           if ( v0 == -593865292 )
    52.                             v0 = -1066363283;
    53.                         }
    54.                         if ( v0 > -429563627 )
    55.                           break;
    56.                         if ( v0 == -480917248 )
    57.                           v0 = 1980625991;
    58.                       }
    59.                       if ( v0 > -288824782 )
    60.                         break;
    61.                       if ( v0 == -429563626 )
    62.                       {
    63.                         puts("hello");
    64.                         v0 = 1980625991;
    65.                       }
    66.                     }
    67.                     if ( v0 > 141628117 )
    68.                       break;
    69.                     if ( v0 == -288824781 )
    70.                       v0 = -593865292;
    71.                   }
    72.                   if ( v0 > 428080491 )
    73.                     break;
    74.                   if ( v0 == 141628118 )
    75.                     v0 = 893803981;
    76.                 }
    77.                 if ( v0 > 778582159 )
    78.                   break;
    79.                 if ( v0 == 428080492 )
    80.                 {
    81.                   v0 = -480917248;
    82.                   if ( v1 < 10 )
    83.                     v0 = 778582160;
    84.                 }
    85.               }
    86.               if ( v0 > 893803980 )
    87.                 break;
    88.               if ( v0 == 778582160 )
    89.                 v0 = 893803981;
    90.             }
    91.             if ( v0 > 1124738897 )
    92.               break;
    93.             if ( v0 == 893803981 )
    94.             {
    95.               v3 = (v1 ^ 0xFFFFFFFE) & v1;
    96.               if ( (v1 ^ 0xFFFFFFFE) & v1 )
    97.                 LOBYTE(v3) = 1;
    98.               v5 = v3;
    99.               v0 = 1769065312;
    100.             }
    101.           }
    102.           if ( v0 > 1285514747 )
    103.             break;
    104.           if ( v0 == 1124738898 )
    105.           {
    106.             v0 = 2110947756;
    107.             ++v1;
    108.           }
    109.         }
    110.         if ( v0 > 1547117937 )
    111.           break;
    112.         if ( v0 == 1285514748 )
    113.           v0 = -593865292;
    114.       }
    115.       if ( v0 <= 1705860464 )
    116.         break;
    117.       if ( v0 > 1769065311 )
    118.       {
    119.         if ( v0 > 1905947091 )
    120.         {
    121.           if ( v0 > 1980625990 )
    122.           {
    123.             switch ( v0 )
    124.             {
    125.               case 1980625991:
    126.                 puts("hello");
    127.                 v0 = 1547117938;
    128.                 break;
    129.               case 2110947756:
    130.                 v0 = 428080492;
    131.                 break;
    132.               case 2133513828:
    133.                 v2 = "ou:%d\n";
    134. LABEL_8:
    135.                 printf(v2, v1);
    136.                 v0 = -288824781;
    137.                 break;
    138.             }
    139.           }
    140.           else if ( v0 == 1905947092 )
    141.           {
    142.             v0 = 1124738898;
    143.           }
    144.         }
    145.         else if ( v0 == 1769065312 )
    146.         {
    147.           v0 = -902473545;
    148.           if ( v5 )
    149.             v0 = 2133513828;
    150.         }
    151.       }
    152.       else if ( v0 == 1705860465 )
    153.       {
    154.         v0 = 1124738898;
    155.         ++v1;
    156.       }
    157.     }
    158.   }
    159.   while ( v0 != 1547117938 );
    160.   return 0;
    161. }
    复制代码
    是复杂的多了,



    llvm_project.zip

    121.77 KB, 阅读权限: 75, 下载次数: 1, 下载积分: 飘云币 -2 枚

    这个是楼主的demo工程

  • TA的每日心情
    开心
    2015-8-2 16:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-5-4 13:19:10 | 显示全部楼层
    连android都有llvm混淆了。。。不带这么玩的
  • TA的每日心情
    无聊
    2016-12-22 10:33
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-5-4 16:13:24 | 显示全部楼层
    多出了一些无用东西,不算太麻烦
  • TA的每日心情
    开心
    2020-6-17 14:54
  • 签到天数: 622 天

    [LV.9]以坛为家II

    发表于 2015-5-4 21:15:42 | 显示全部楼层
    手机上的东西,混淆这么多,不怕运行不起来?
  • TA的每日心情
    慵懒
    2019-10-29 10:19
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2015-5-5 10:55:55 | 显示全部楼层
    估计混淆之后 程序不会运行缓慢 就好,
    您需要登录后才可以回帖 登录 | 快速注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|飘云阁安全论坛 ( 粤ICP备15107817号-2 )|扫码赞助

    Powered by Discuz! X3.3© 2001-2017 Comsenz Inc.

      
    快速回复 返回顶部 返回列表