吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 74421|回复: 271
收起左侧

[Android 脱壳] 360官网脱壳分析-2017-04-04

    [复制链接]
欧阳锋锋 发表于 2017-4-4 23:45
本帖最后由 欧阳锋锋 于 2017-4-5 00:00 编辑

             网上已经有很多360脱壳教程了,看了好多后就想自己动手调试下。感谢各位大神无私分享的文章,本菜才能顺利过掉反调。本人是初涉逆向,
水平有限,秉着学习的目的,发帖分享自己的逆向学习过程,肯定会有些错误或分析不正确的地方,欢迎大牛指正,赐教,本菜鸟不胜感激。只是可以dump
  dex,还无法进行还原、安装运行。onCreate函数被动态注册为native,可以在so中找到注册的地址,可以结合静态和动态调试,有时间的话会继续研究下去。      
第一  过反调试      
   主要在JNI_Onload函数的case 29case33上下断点
1、  第一处反调试,应用调试的特性参考文档http://www.evil0x.com/posts/26301.html   



               1.png
2、映射linker     
                2.png
3、查看并修改符号rtld_db_dlactivity的值      
    0x2B= open("/system/bin/linker");第一处反调试      
    length= lseek(0x2B,0,SEEK_END);     
    lseek(0x2B,0,SEEK_SET);        
    mmap(NULL,0,1,2,0x2B,0)         
  在程序头表中查找第一个PT_LOAD段的p_vaddr        
    找到PT_DYNAMIC = r3 =0x0000FED4        
    r1= 基址+0x0000FED4        
    在动态段查找DT_STRTAB偏移为0x00000258 ,计算内存偏移                       
                       DT_SYMTAB偏移为0x00000168 ,计算内存偏移                 
   找到符号rtld_db_dlactivity :基址+Elf32_Sym->st_value     
               3.png
查看0x400E3BF8内存地址的指令
                4.png
DE 10修改为nop指令 C0 46===>过掉第一处反调试 4
第二处反调,此处LR的值为strtol,将其返回值修改为0,过掉第二处反调。   
       0x2E= open("/proc/self/status")                           ;     
       strstr(read(),"TracePid");
       strtol();      
       close(fd)   
                5.png    
                6.png
5、第三处反调    fd =open("/proc/net/tcp");第三处反调试  
                               read();   
                               strstr(xxx,"00000000:5D84");0x5D8A=23946
  调试的时候可以不用远程端口号,或者修改内存中的值过掉反调试

                   7.png
     
6、第四处反调      
     1)、文件监控线程, nop        
          736E0DE8地址nop,过掉文件监控线程
                  pthread_create ===>sub_4B50 //第四处反调试   
                 {                       
                        inotify_init                     
                        inotify_add_watch            
                        select            
                 }     
                9.png    

2)、文件监控线程,nop
                  10.png

3)、文件监控线程,nop
                   12.png

4)、文件监控线程,nop

     总共有四处启动文件监控线程的点。

8. 第五处反调360time()函数,通过比较差值,判断程序是否被调试,简单点,可是在time()函数上下断点,让其返回相同的,固定的值。刚开始调试可能会花
费大量的时间在反调试上面,等熟悉了各个反调试点后,可以进行注入,hook这些函数,从而过掉反调试,会省去大量无畏的时间。至此反调试全部去掉,后边
就没有反调试了,进程开始原始dex的解密加载操作。


第二  dex解密、加载
     1 、调试过程中,通过查看proc/self/maps中可以看出,反调试全部在libjiagu.so映射的段中,Dex的解密加载在debug_xxx段中,将这款内存整个dump下来,可
          以 发现为elf文件,Elf头被抹掉,与section相关的信息被修改为无效的或抹掉,防止静态分析,使用ThomasKing大神的so修复工具,IDA就能正常打开,
          静态分析了。
     2fopen(“/proc/self/maps”);进行匹配查找:
                          /dev/ashmem/dalvik-classes.dex      
                          apk@classes.dex        
                          .odex         
          分割出内存基地址,判断头是否为”dey”;
                  根据pDexHeader->dataSize+pDexHeader->dataSize找到qh开头的内存地址,         0x2DF为数据块的长度,其中存储了,加固app的相关信息,包括,
          包名,Applicationactivity等和自身加载的一些信息。
                      5.png

解密后的文件
            6.png

2、  解密dex数据
                  10.png
                    loc_EDF4()
                    {            
                          BLsub_433E0{0x433FA j_j_tl_mmap -->分配dex空间, 长度 0x3274}      
                          BLX  R12; --> //解密dex数据到前面分配的空间中//偏移0xEE14            
                         {                                       
                                 blxsub_36A88()                          ----------->0x353A4               
                                {                                                   
                                           loc_36ADA()
                                           {                                                        
                                                    sub_365A4()
                                                      {                                                     
                                                                         sub_358F0()
                                                                         {        
                                                                              loc_36156解密操作   
                                                                        
                                                                          }                                                              
                                                       }                                                      
                                             }                                             
                                    }                                    
                          }                     
      此时的dex头,0x70个字节还是加密的
                          sub_46F6C()
                           {  
                                   //解密dex头,0x70个字节,
                            }
                  11.png

------------------------------------------------至此dex完全解密到内存中-------------------------------------------                        
                      接下来自己构建,构建DexFile结构
进行系统版本属性的判断
                12.png
getSystemContext();
getPackageInfo();
getPackageInfo(包名)  
RegisterNatives(DexFile_jcl,);      
          {            
                 {"getClassNameList","(I)[Ljava/lang/String;",0xD791}RegisterNatives(StubApp2379654022);            
                 {"interface9","()Ljava/lang/String;",0x73921d79},              
                 {"getAppkey","()Ljava/lang/String;",0x73901ad1},           
                 {"mark","()V",,0x739185dd},     
                 {"interface6","(Ljava/lang/String;)Ljava/lang/String;",0x738fde05},      
                {"interface7","(Landroid/app/Application;Landroid/content/Context;)Z",0x73901e99},
           。。。。。。。。。。。。。。
            }
RegisterNatives("onCreate","(Landroid/os/Bundle;)V",0x0000BD1D);可见onCreate可定是注册为native函数的,在so的偏移0x0000BD1D处,可以动态调试跟
  进去看看
            13.png
so偏移0xA9B8处为解释执行switch 开始的地方,猜测应该是逐条指令进行解释执行的
            15.png
附件会上传脱壳过程中用到的app和记录的文档,dumpsodex,供大家学习,相互交流,共同学习。


8.png
1.png

360脱壳过程记录-2017-04-04.zip

1020.17 KB, 下载次数: 1404, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 95吾爱币 +93 热心值 +92 收起 理由
小小金 + 1 + 1 用心讨论,共获提升!
sunnylds7 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ly67 + 1 + 1 用心讨论,共获提升!
Sean1994 + 1 + 1 我很赞同!
天蝎浪花 + 1 + 1 看不懂,宝宝心塞塞
helloword121 + 1 + 1 谢谢@Thanks!
山驴 + 1 + 1 完全看不懂,很难受
帅帅建华 + 1 谢谢@Thanks!
wkdqqh + 1 + 1 我很赞同!
夏侯爷 + 1 + 1 用心讨论,共获提升!
LYQ + 1 + 1 我很赞同!
我爱逆向 + 1 + 1 用心讨论,共获提升!
zphdt + 1 + 1 鼓励转贴优秀软件安全工具和文档!
longgy + 1 + 1 我很赞同!
fu90 + 1 + 1 热心回复!
真心等待 + 1 + 1 谢谢@Thanks!
樊荣 + 1 + 1 我很赞同!
ixiaosha + 1 + 1 已答复!
CHEUNGQAZ + 1 用心讨论,共获提升!
imconan + 1 + 1 用心讨论,共获提升!
i5suci + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
haoxu1230 + 1 + 1 用心讨论,共获提升!
voodoosys + 1 + 1 已答复!
川普 + 1 + 1 都是大神,学习了,感谢分享
chenhongleng + 1 鼓励转贴优秀软件安全工具和文档!
快乐交友 + 1 + 1 用心讨论,共获提升!
静叶流云 + 1 + 1 谢谢@Thanks!
kindbigbear0 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
google12306 + 1 + 1 谢谢@Thanks!
fidcz + 1 + 1 热心回复!
paradroid + 1 + 1 我很赞同!
ihy + 1 + 1 谢谢@Thanks!
a83690465 + 1 + 1 好像很厉害的样子
wcj1997 + 1 + 1 已答复!
xyuetao + 1 + 1 谢谢@Thanks!
zamliage + 1 + 1 好像很厉害的样子!
喝开水拉肚子 + 1 + 1 用心讨论,共获提升!
ArrayList + 1 + 1 已答复!
穹丹科技 + 1 + 1 谢谢@Thanks!
Binarian + 1 我很赞同!
darmao + 1 + 1 用心讨论,共获提升!
tang1996 + 1 + 1 已答复!
lapop + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
海底总动员 + 1 + 1 我很赞同!
roamshi + 1 + 1 用心讨论,共获提升!
host10 + 1 + 1 谢谢@Thanks!
石斑鱼 + 1 + 1 谢谢@Thanks!
gaoxin + 1 + 1 我很赞同!
Y0rke + 1 + 1 我很赞同<span id="transmark" style="display: none; width
铅笔刀 + 2 + 1 用心讨论,共获提升!
Y城的L君 + 1 + 1 用心讨论,共获提升!
photor + 1 + 1 谢谢@Thanks!
文可う润心 + 1 + 1 谢谢@Thanks!
coconutx0123 + 1 + 1 用心讨论,共获提升!
hsia_y + 1 + 1 谢谢@Thanks!
359243543 + 1 + 1 用心讨论,共获提升!
xeonman + 1 + 1 我很赞同!
追风的燕子 + 1 + 1 我很赞同!
mwt888 + 1 + 1 谢谢@Thanks!
burn + 1 + 1 谢谢@Thanks!
heyanlin0823 + 1 + 1 我很赞同!
吾永不放弃 + 1 + 1 谢谢@Thanks!
asd0628 + 1 热心回复!
许你,一世承诺 + 1 + 1 用心讨论,共获提升!
demon_dev + 1 + 1 用心讨论,共获提升!
qmopl + 1 + 1 我很赞同!
noalieri + 1 + 1 我很赞同!
数字蜀黍 + 1 热心回复!
eversliver + 1 + 1 我很赞同!
yyshun + 2 + 1 鼓励转贴优秀软件安全工具和文档!
williamxia + 1 + 1 用心讨论,共获提升!
photonmang + 1 + 1 用心讨论,共获提升!
守护神艾丽莎 + 1 + 1 已答复!
Intro + 1 + 1 用心讨论,共获提升!
苏裹咿丶 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
superlukia + 1 + 1 热心回复!
yuxing818 + 1 + 1 谢谢@Thanks!
青莲剑哥 + 1 + 1 我很赞同!
soyiC + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lies2014 + 1 + 1 谢谢@Thanks!
fisher + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
gameyw + 1 + 1 我很赞同!
亡羊 + 1 + 1 我很赞同!
殇语 + 1 谢谢@Thanks!
ningjing2011 + 1 + 1 我很赞同!
c文字 + 1 热心回复!
cntom + 1 + 1 我很赞同!
zhu911 + 1 + 1 谢谢@Thanks!
lieay + 1 + 1 大牛
drw168 + 1 + 1 我很赞同!
BY丶显示 + 2 + 1 我很赞同!
freecode + 1 + 1 我很赞同!
zby03772015 + 2 + 1 谢谢@Thanks!
牵绊zZ + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

photonmang 发表于 2017-4-5 18:35
微笑丶纯属礼貌 发表于 2017-4-5 13:11
我从来不安装 360 我的电脑 从买回来 就从来没 安装过杀毒软件,我毕竟是一个编程的小白,对逆向,有点研究 ...

踏马得,我竟无言以对!
头像被屏蔽
天羽七星 发表于 2017-4-5 11:46
邪恶博士 发表于 2017-4-5 00:15
lyxi841213 发表于 2017-4-5 00:34 来自手机
路过看看!
freecode 发表于 2017-4-5 00:43
很详细的教程。
丶FollowYou 发表于 2017-4-5 01:13
感谢分析。。
sajuuk1129 发表于 2017-4-5 01:39
牛人。。学习下。。不搞过
BY丶显示 发表于 2017-4-5 02:00
正需要,谢谢。
sdaza 发表于 2017-4-5 05:57 来自手机
先mark一下
dszsdyx 发表于 2017-4-5 07:09
过来看看,学习一下谢谢
fearless89757 发表于 2017-4-5 07:23
技术贴 支持一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 14:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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