精华内容
下载资源
问答
  • 静态分析与动态分析
    千次阅读
    2019-10-03 14:24:18

    静态分析关注系统的要素和组织(联系);强调的是部分如何组成整体;着重于要素的局部联系。

    动态分析关于于系统的功能:前调的是要素与联系如何组成链条,完成事务的处理。

     

    动态分析依靠静态分析支持;

    静态分析依靠动态分析验证。

     

    静态分析思想:自顶向下、删繁就简、分而治之,逐步求解;

    动态分析思想:将分开的要素组合起来完成功能。

    转载于:https://www.cnblogs.com/feng9exe/p/7658979.html

    更多相关内容
  • 动态分析Android App之动态调试

    万次阅读 多人点赞 2019-08-24 18:36:38
    动态分析Android App之动态调试 这个系列一共有五篇左右,内容主要介绍如何动态分析和调试Android App,和网上其他教程相比,内容更充实,体系更健全,深入而浅出。闻道有先后,术业有专攻,希望能给刚入门Android...

    这个系列一共有五篇左右,内容主要介绍如何在Java层动态分析和调试Android App,和网上其他教程相比,内容更充实,体系更健全,深入而浅出
    闻道有先后,术业有专攻,希望能给刚入门Android逆向的同侪们些微帮助。出于各种原因,文章有两个遗憾,一是只包含了Java层代码的动态分析和调试,Jni和Native层并没有涉及;二是对Hook框架的介绍和使用不是很充分,因为Hook值得另外很多个五篇去写。逆向太深太广了,吾辈将上下而求索。

    本篇内容所涉及到的资源
    链接:https://pan.baidu.com/s/14ZF-7pop4NbrDPydtRQOeg
    提取码:8fs8

    一、认识动态分析Android程序

    我们将需要运行应用程序才能实施和完成的分析方法统称为动态分析方法,不要被这个名词吓到了,抓包、动态调试、观察App页面的UI设计和交互、使用Xposed/Frida Hook App中某个函数、Smali插桩等等,这些都可以称为动态分析,有时候我们也会认为Smali插桩是一种静态的技术,但这里不用过分区分和计较,我们最应该关注的是技术和思路。
    这个系列会逐一讲解和介绍这些动态分析工具的使用,为了防止我讲的不够清楚,每一个知识点和技术都会配上数篇详细可靠的同类型文章。当然,你也可以直接Google获取这些知识,但需要稍加甄别搜索到的内容。我们第一篇说一下Smali动态调试。

    1.1 什么是Smali动态调试?

    调试分为源码级调试和反汇编级别调试,源码级调试是什么自然不用说,程序员大多都使用过诸如Pycharm这样的IDE对自己的程序进行过源码级调试,从而了解程序运行情况,分析程序的执行流程,观察变量的动态值等。而我们进行逆向分析时,手里不可能有App的源码,这就需要进行反汇编级的调试,也就是我们常说的的Smali动态调试。

    当我学习Smali时,产生过各种各样的困惑,smali是什么?我写的是java代码,怎么变成smali了?为什么可以smali代码可以调试?Jadx反编译出来的java代码如此优雅,能不能根据这些代码进行源码级调试?
    我们一一来探讨这些问题。

    从Java源码到编译打包成APK文件,会经过非常复杂和繁多的步骤,我们这里只关注代码的编译过程。

    Android平台上主要使用Java语言来开发程序,但Android上的程序运行机制和标准的Java程序并不一样。
    我们先看一下Java程序从编写到执行的过程

    第一步:编写Java代码
    第二步:所有的Java代码通过Java编译器被编译成java字节码,即.class文件
    第三步:Java字节码在Java虚拟机上被解释成机器语言后,程序执行
    

    在这里插入图片描述
    手机系统内存和处理器速度有限,为了解决运行效率的问题,以及摆脱和Java母公司的版权纠纷,Google开发了Dalvik虚拟机,Android程序就运行在其上,我们来看一下App中Java代码的编译过程。

    第一步:编写Java代码
    第二步:所有的Java代码通过Java编译器(javac)被编译成Java字节码,即.class文件
    第三步:Java字节码通过Android 的dx工具转换为Dalvik字节码,即.dex文件
    第四步:Dalvik字节码在Dalvik虚拟机上运行
    

    在这里插入图片描述
    现在我们已经知道解压Apk后,那些奇怪的dex是哪来的了,那Smali又是哪来的呢?
    我们看一下Smali代码长啥样
    在这里插入图片描述
    首先澄清一下这两个概念

    反汇编:将可执行的文件中的二进制经过分析转变为汇编程序。
    反编译:将可执行的程序经过分析转变为高级语言的源代码格式,一般完全的转换不太可能,因为有编译器的优化等因素在里面。

    各种各样反编译工具几乎都用到了Baksmali这个工具,我们来看一下它和孪生兄弟的介绍:

    Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器。
    其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。
    Smali,Baksmali分别是冰岛语中编译器,反编译器的叫法。

    也就是说,Smali代码是利用Baksmali反汇编(disassemble)dex文件得到的一种类汇编代码,它完整的实现了.dex格式所有功能(注解,调试信息,线路信息等),谈起Smali和dex之间的关系,我们常常称为转化(convert),即还原度极高,这也是Smali可以胜任动态调试的重要原因。而利用Smali汇编器,我们可以修改Smali代码,重新编译成dex文件,进一步可以对Apk进行重打包。

    在这里插入图片描述
    在黑产中,这也是无数盗版应用、破解版应用、功能增强应用、去广告版应用的实现原理。
    在这里插入图片描述

    而我们这些只是想分析App通信协议的程序员,也可以简单的修改Smali进行“Smali插桩”,通过log探针输出一些可疑的信息,或者根据探针是否触发,探测程序运行逻辑。

    提到Smali插桩,玩法也不少,Android逆向人员在仰望星空时,或多或少都渴望过一种破解App的暴力美学——让每一行代码都自动吐出来一句话“爷,我在这儿,我是干嘛的,我前面又是啥。”
    换成可以通过代码实施的方案,也就是在每个方法内打印调用栈或者log输出一下它在哪个方法里,该怎么做呢?方法非常多,我们看一下暴力插桩的三个思路。

    1.直接对smali代码进行文法分析,写一些正则表达式的判断,实现在每行代码后面加上log输出的Smali代码,然后使用Smali汇编器编译成dex文件,进而重打包Apk,最后运行App查看log输出。具体实现可以参考这篇文章,实现出来的效果也很不错实现出来的效果也很好。
    《Android应用逆向——分析反编译代码之大神器》 https://blog.csdn.net/charlessimonyi/article/details/52027563
    在这里插入图片描述
    2.直接对Dex进行操作,可以使用的工具有ReDex,Dexter等。但由于Dalvik发展尚浅,且由于Dalvik字节码比Java字节码的结构更加紧凑,所以修改起来比较复杂,笔者暂时没有看到逆向中应用Dex插桩的具体实现。

    3.既然Dex紧凑而且不好搞,那能不能搞Java字节码进行插桩呢?答案是完全可以的,对Java字节码进行操作的工具非常多且成熟,可以通过AspectJ、Asm、javassit等工具对Java字节码进行操作。下面这个工具,就是将Dex文件转换为Java字节码,再使用asm操作字节码,最后再用dx工具(Android Java代码编译流程第三步中提到的Android自带工具)编译成dex,进而重打包Apk,最后运行App查看log输出。
    《带你开发一款给Apk中自动注入代码工具icodetools》
    https://blog.csdn.net/jiangwei0910410003/article/details/53386071

    Smali和Smali插桩就介绍到这儿了,感兴趣的同学可以去试一下。
    讲道理,我们应该先花一万字讲一下smali语法和smali如何实现基础的插桩,但动态调试Smali实在是方便又迷人,我发誓,在掌握Smali动态调试后,你们很快就会将又麻烦又容易出错的Smali插桩忘在脑后。

    但这绝不意味着我们就不需要能看懂和理解Smali语法了,原因主要有两个

    1. Smali动态调试基于Smali代码,断点该下在哪里,程序跑到哪儿了,如何查看调试中的变量值……这些都需要你稍微懂一些Smali语法。
    2. Jadx之类的工具虽然号称做到了Dex到Java的一站式反编译(Dex to Java decompiler),但在其内部,是先将Dex反汇编成smali,再用asm将smali转成class字节码,最后解析查看Java代码。如果说Dex到Smali是一种convert(转化),得到的是可调式、精准靠谱的源码,那么Dex到Java就是一种translation(翻译),虽然看着可能还不错,但其实和源码相差甚远,只能称为Java伪代码,正因为相差甚远,所以我们才无法使用Jadx反编译出来的java代码进行源码级的调试,而只能进行稍显晦涩的Smali调试。所以你可能会在使用Jadx反编译过程中遇到部分逻辑无法翻译成java代码的情况,或者翻译的Java代码和真实的Smali逻辑有差异,这个时候就需要老老实实看Smali代码。

    在下一篇中,我们将结合小红书应用来讲解Smali的语法,这一篇的主角还是实现如何进行动态调试。

    1.2 为什么要进行Smali动态调试?

    动态调试能更充分的展示程序的运行逻辑,简而言之倍儿爽。

    1.3 不能进行Java调试吗?

    在上面我们已经讲的很清楚了,反编译得到的Java代码只是一种翻译而来的伪代码,它无法支撑其源代码级的动态调试。

    接下来我们开始动态调试Smali之旅。

    二、推开调试之门

    出于安全考虑,Android系统并不允许应用被随意调试,官方文档称需要满足二者之一的条件。

    1.App的AndroidManifest.xml中Application标签必选包含属性android:debuggable=“true”;
    2./default.prop中ro.debuggable的值为1;

    我们先来看第一个条件有没有办法满足,首先,发行版的App都会将debuggable设置为 false,使第三方不能直接调试分析APP,这也是厂商出于安全的考虑,那我们就需要反编译Apk,修改后进行重打包,这也是绝大多数教程的做法,但我个人非常非常不建议这么操作,因为重打包容易遭受无妄之灾,这也是我不喜欢Smali插桩的原因——它们需要重打包App
    你想研究App的通讯协议和加密字段,这已经足够让人焦头烂额,你可能会遇到繁杂的代码、诡异的反抓包,So层的加密……而如果你对App进行重打包,那就要面对App额外的保护措施,比如重打包失败,签名验证等。因为重打包这个操作主要是开发盗版App和破解版App做的事,这对厂商来说更加难以忍受,只是修改一个debuggable字段就要揽上这么多事,显然吃力不讨好。

    那第二个条件好满足吗?default.prop 文件非常好找,它就在Android的根目录下,我们可以通过ES文件浏览器找到它。
    在这里插入图片描述
    在这里插入图片描述
    很不幸的发现,这台手机的debuggable标识为0,不可调试。一个朴素的想法是直接修改这个值不就可以了?但是这是不可以的,这个值只在系统启动时,也就是开机时才会读取和加载一次。那重启?抱歉,每次重启,这个值就会恢复默认。所以就造成了一个死循环。
    那我们是怎么解决它的呢?有这样几种办法。
    1.改写系统文件,修改ro.debuggable为1,重新编译系统镜像文件,刷入设备。
    难度稍大,但一劳永逸,缺点是对新手很不友好。可以参考这篇文章,https://bbs.pediy.com/thread-197334.htm。
    2.注入init进程,修改内存中ro.debuggable的值,这个也是之前惯常的做法。
    通过大佬写的mprop工具可以修改内存中所有的属性值,只需要按照操作步骤,cmd敲七八行即可,还有人出了一键式的bat脚本。资源放在了我分享的百度资源里,大家也可以去制作者那儿下载。https://bbs.pediy.com/thread-223294.htm。 需要注意的是,因为是修改内存值,所以文件中的ro.debuggable值并不会变化,且每次重启设备都要重新注入。
    3.使用开发版/测试版的手机系统,ro.debuggable值常常为1
    4.使用模拟器,比如雷电模拟器、Genymotion等,许多模拟器天然支持动态调试,尽管defalut.prop中值并不为1,打开adb shell,用getprop ro.debuggable命令查看内存中的debuggable值却为1。
    在这里插入图片描述
    在这里插入图片描述
    5.Xposed Hook系统判定函数,Android系统凭什么判断某个App是一个可调试的应用?从读取AndroidManifest.xml中android:debuggable属性值,到打开这个应用,里面有非常多的门路,找一个合适的时机进行hook,就可以实现狸猫换太子,这需要逆向分析人员了解Android源码,我们这里不去说它,因为成熟的工具已经有很多了,只需要下载Apk,在Xposed中激活后重启手机,就可以一劳永逸。

    • BDOpener 开启APK调试与备份选项的Xposed模块 https://security.tencent.com/index.php/opensource/detail/17
    • Xinstall 如何不重打包调试Android应用 https://www.open-open.com/lib/view/open1426304176732.html
    • BuildProp Enhancer Make all application attribute android:debuggable=“true” https://repo.xposed.info/module/com.jecelyin.buildprop
    • XDebug make all app on your phone debuggable https://github.com/deskid/XDebug

    我个人平时用BDopener,网盘资源中存放了数种开启调试的工具,请自行选择,Xinstall是个十分优秀的Xposed框架,我们日后还会用到它。

    三、选择调试目标

    我猜测你很可能选择了雷电模拟器,或者在真机上装了BDOpener,我并不觉得意外,因为这两种方法确实最为便捷,之所以我们要讲那么多种方法,是为了避免意外,有的机型或者有的App存在闪退行为,这样你就可以求助于另外一个方法。

    我们演示在雷电模拟器上调试新浪博客的一个sign参数,不难,但又不是纸玩具,非常适合我们进行测试。
    下载新浪博客最新版,我在百度云里也放了apk。开启Fiddler/Charles抓包工具后,打开App。
    在这里插入图片描述
    点开一条博客
    在这里插入图片描述
    查看Fiddler,多出四五条数据,根据数据包大小和内容找到我们需要的那一条。
    在这里插入图片描述
    这是一个GET请求,字段有九个
    在这里插入图片描述
    deviceid、chno,appver,appid是固定不变的,Is_default可以不填,login_uid因为没有登录也不用管,article_id是每篇文章的id,显然这个sign是比较好玩的。
    它是64位十六进制数,猜测是两个md5拼接,不太确定哦。

    我们接下来使用Jadx反编译Apk,搜索url链接的末尾部分,即get_article_info.php,放一张之前教程的截图
    在这里插入图片描述
    在这里插入图片描述
    只有m字符串是符合要求,双击代码进去看一下,在这个config(配置)包里,以类变量的方式存放着大量的字符串,如果想引用它,就是b.m
    在这里插入图片描述
    在这里插入图片描述
    右键查看用例,看一下这个url在哪儿被使用了,发现只有一处
    在这里插入图片描述
    双击第二行的代码,查看详细引用
    在这里插入图片描述
    它包装了一个a方法来取我们的目标URL,再次查找用例
    在这里插入图片描述
    点开第一个,你会发现其实它就是a方法上面的那个方法
    在这里插入图片描述
    看到这些代码你应该感到喜闻乐见了,我们发送网络请求,首先就要进行字段的获取和拼接,在Java中往往由集合map完成,格式类似于{”id“:3,“name”:“lilac”},put存入,get取出,这儿就是一个典型的Hashmap。

    它第一步初始化一个map,之后巴拉巴拉放进去很多东西,看着和我们get请求中的字段一致。接下来我们用Smali动态调试跟踪一下集合m从初始化到塞满东西的全部过程
    首先我要说明,这儿不用动态调试也是完全可以的,但App并不总是很简单,可以一目了然。

    首先我们要获取反编译的Smali代码,因为我们的调试就是基于Smali的。你可以使用Apktool敲几行命令完成,但我个人更喜欢可视化的界面,市面上有很多集成了这些工具,可视化拖拽操作的工具。
    我这边演示windows下的操作,工具放在了网盘里,也可以自行搜索下载。
    在这里插入图片描述
    操作选择反编译apk——拖拽apk到源文件——点击操作,依据电脑性能和Apk的大小,反编译所需时间要几十秒到十分钟不等,反编译完成后自动弹出文件目录。
    在这里插入图片描述
    mac可以下载这个工具https://github.com/Jermic/Android-Crack-Tool ,界面和操作几乎和windows中一样。
    在这里插入图片描述
    都讲这么久了,我们都还没说调试工具,是这样的,几乎所有的主流Java IDE配上smalidea插件都可以对Smali进行动态调试,除此之外,JEB也可以直接调试Smali,IDA也有调试DEX的能力,还有Qtrace等等工具,但调试Smali,我只推荐Android Studio+smalidea插件这个组合,操作简单,功能强大,效果也很稳定。

    接下来打开Android Studio(注:Android studio版本需要大于3.0,我个人是3.5Beta版)
    先下载smalidea插件,可以直接用我的百度云链接,也可以去官网下载 https://bitbucket.org/JesusFreke/smali/downloads/
    在这里插入图片描述
    Android Studio–>Settings–>Plugins–>Install plugin from desk…,安装插件;需要注意smalidea路径最好不要有中文路径,可能会出问题。安装好后重启生效。
    在这里插入图片描述
    打开项目【Open an existing Android Studio Project】,选择sinablog文件夹,等待其加载,过程会持续数分钟。
    在这里插入图片描述
    加载完成之后,你需要配置一下JDK和SDK,SDK并不一定要和我一样,29,22……或者别的其他版本都可以。
    在这里插入图片描述
    在这里插入图片描述

    我们要在想要跟踪的程序起始处下断电,重新上一下图,它是类com.sina.sinablog.network.d中的一个a方法,我们要在smali文件夹中找到它。
    在这里插入图片描述
    在目录中,我们可以看到两个smali文件夹,这是由于dex分包造成的,你暂时可以不用理解它,smali1文件夹找不到对应的包,就去下一个找即可,注意要切换到Project目录。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接下来找到a方法,我们需要了解Smali语法才能读懂它,这一部分我打算下一节结合Smali插桩讲,大家也可以自行搜索和学习。
    我们现在只需要知道".method"和“.end method”分别是方法开始和结束的地方即可。下图红框即a方法的两个重载方法,它们对应着我们前面分析的Jadx伪代码。
    在这里插入图片描述
    对比一下Jadx反编译的结果
    在这里插入图片描述
    显然Smali代码更长的那个才是我们需要的重载方法,在代码左边空白处单击即可下断点。
    在这里插入图片描述

    下好断点后,就可以准备开始运行了。
    首先,红框一圈出来的设备信息处,必须要有一个蓝色的设备在运行,如果你的是黑色,可以重启一下模拟器。
    在这里插入图片描述
    在这里插入图片描述
    确定设备没问题后,点击那个带箭头的小虫子
    在这里插入图片描述
    在这里插入图片描述
    我们现在要找到我们应用的包名,查看应用包名以及其他信息的方法和工具非常多,我这里推荐一个非常优雅的工具Apk Messenger,在反编译的第一步,我们需要对应用进行查壳,我也建议使用它,因为它实在是难得的UI设计好看的反编译工具。这是它的官网,https://www.ghpym.com/apkinfo.html ,百度云也放了相应的资源。

    在这里插入图片描述
    直接拖拽Apk 进去
    在这里插入图片描述
    细心的小伙伴可能会发现,它判定应用进行了腾讯加固,这似乎是一个误报。这是为什么呢?事实上,Apk的查壳工具都并不算聪明,是通过检查Apk目录中是否由加固软件的特征文件判断的,我们来看一下APK Messenger的判断库。
    在这里插入图片描述
    再用360压缩或者别的压缩工具打开Apk,会在assets目录下找到这些。
    在这里插入图片描述
    所以不用去管它,我们反编译内容正常,就不用考虑它为什么是个“假加固”的事了。
    现在我们知道了包名,在模拟器中打开App,在列表中找到com.sina.sinablog附加调试即可,反复调试Smali代码时,可能会出现进程列表里没有这个App的状况,重启App即可。
    在这里插入图片描述
    在这里插入图片描述
    网上很多教程都让你用DDMS查看端口,再用adb动态转发端口之类的,其实这些步骤一般都是不需要的。
    我们现在已经开始了Smali调试,只需要触发断点即可。
    在这里插入图片描述
    点击一条博客
    在这里插入图片描述
    关于Android Studio调试工具如何使用,网上已经有非常多的文章了,不熟悉的可以看一下这篇文章https://blog.csdn.net/yy1300326388/article/details/46501871

    我们这里需要使用到下图这些功能
    在这里插入图片描述
    我们来看一下Smali代码,我们下一篇才会讲Smali语法,但如果大家先学习了Smali语法,会对Smali调试有非常大的帮助。在这里插入图片描述
    运行完move-result-object v0 这一行后,我们在Watches监视器中添加v0,接下来我们就可以一路F8,感受它的变化了。
    初始化hashmap时,那个方法已经塞进去五个字段了,一步步F8,你会发现v0里的字段越来越多,没过多久,Get请求的九个字段就全部躺在了v0中。
    在这里插入图片描述
    在这里插入图片描述
    光靠F8一行一行走是没办法得知的,你可以退出调试模式,更加精细的看一下,F7进入到子方法,Shift+F8跳出方法,这样子多走几遍,你就理解了。
    在m方法中,获得了5个字段
    在这里插入图片描述
    出了m方法后,得到了三个字段
    在这里插入图片描述
    我们用Jadx的Java代码上标记一下
    在这里插入图片描述在这里插入图片描述
    SIGN是怎么生成的呢?
    在这里插入图片描述
    不熟悉Smali可以在Jadx中对应看一下
    在这里插入图片描述
    sign值是由CpltUtil.invoke()方法生成的,参数是两个字符串,第一个是固定字符串“/apicheck/blog”,第二个参数是八个参数的字符串,我们可以用计算器查看一下。

    在如图这一步,v0即包含了8个字段的map,点击图中红框的计算器,它叫Evaluate Expression,可以在这儿运行各种各样的表达式
    输入new JSONObject(v0).toString();
    你会发现JSONObject飘红,按照提示进行导包
    在这里插入图片描述
    导包后Evaluate
    在这里插入图片描述
    好吧,报错,那我们就不转JsonObject了,直接toString转成字符串看看什么样
    在这里插入图片描述
    在这里插入图片描述
    结果为{is_default=0, login_uid=, blog_uid=1260074450, article_id=4b1b35d20102yvlj, appver=6.1.2, appid=2, deviceid=e9ec21f2f9a7dc8f9c4e10694bdc6143, chno=515_104},和预期一样。
    接下来我们在Jadx中看一下这个CpltUtil.invoke()方法

    在这里插入图片描述
    一看这名字,似乎是个native方法,Ctrl+左键进入
    在这里插入图片描述
    竟然是一个native层的加密函数,在之后native层破解时我们再提它,大家可以先试一下。
    去lib库中找到libcrossplt.so文件,在ida中反编译,这个函数是静态注册的,所以很容易就可以在Exports列表中找到它,之后F5反汇编成c代码,静态分析c代码或者ida动态调试即可。

    不入so层,就还没有入门逆向,大家加油,下一篇可能讲Smali相关的东西。
    在这里插入图片描述

    展开全文
  • 这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特...本篇文章将讲解动态分析OllyDbg工具的基础用法,主要是结合两个Crakeme案例逆向破解。希望对初学者有帮助,大神请飘过,谢谢各位看官!

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步。上一篇文章分享了IDA Pro反汇编工具的基础用法,并简单讲解一个EXE逆向工程解密实战方法;本篇文章将讲解动态分析OllyDbg工具的基础用法,主要是结合两个Crakeme案例逆向破解。希望对初学者有帮助,大神请飘过,谢谢各位看官!

    下载地址:https://github.com/eastmountyxz/NetworkSecuritySelf-study
    百度网盘:https://pan.baidu.com/s/1dsunH8EmOB_tlHYXXguOeA 提取码:izeb

    PS:作为初学者,深知网络安全这块要学习的知识太多,希望自己能始终保持满腔热情,科研结合实践慢慢前行。

    前文学习:

    展开全文
  • 恶意代码分析实战——Lab03-01.exe基础动态分析篇 1.实验目的 综合运用各种分析工具,分析Lab03-01.exe的基本信息,并推测其功能。 2.实验环境(硬件、软件) VMware虚拟机(winxp): 硬件:处理器Intel® Core™ ...

    恶意代码分析实战——Lab03-01.exe基础动态分析篇

    1.实验目的

    综合运用各种分析工具,分析Lab03-01.exe的基本信息,并推测其功能。

    2.实验环境(硬件、软件)

    VMware虚拟机(winxp):
    硬件:处理器Intel® Core™ i5-10210U CPU @ 1.60GHz 2.11 GHz
    软件:32位操作系统
    kali虚拟机

    3.实验步骤(详细描述操作过程,关键分析需要附截图)

    (1)静态分析

    ①MD5值

    在这里插入图片描述

    ②peid分析

    在这里插入图片描述

    可以看到Lab03-01.exe已被加壳处理

    ③strings分析
    strings Lab03-01.exe
    

    在这里插入图片描述

    在这里插入图片描述

    发现一些注册表信息和一个exe文件以及一个可以的域名
    猜测分析可能会通过连接访问该网址下载某些木马文件或者通过vmx32to64.exe下载打开某些后门,,所以在动态分析中重点关注注册表修改信息和文件的增加删除以及联网操作

    (2)动态分析

    ①regshot注册表分析

    Regshot拍摄第一次快照后运行Lab03-01.exe
    在这里插入图片描述
    运行Lab03-01.exe后记录第二次快照
    在这里插入图片描述
    点击compare将两次注册表信息对比后发现新增注册表键值
    在这里插入图片描述

    发现在自启动项VideoDriver中增加了键值43 3A 5C 57 49 4E 44 4F 57 53 5C 73 79 73 74 65 6D 33 32 5C 76 6D 78 33 32 74 6F 36 34 2E 65 78 65,将它换成字符为C:\WINDOWS\system32\vmx32to64.exe,说明VideoDriver自启动项就是指向system32目录下的vmx32to64.exe

    ②process explorer分析

    打开explorer的下端窗口查看DLLs动态链接库

    在这里插入图片描述
    运行Lab03-01.exe后发现
    在这里插入图片描述

    在Lab03-01.exe中存在ws2_32.dll和wshtcpip.dll所以说明存在网络方面的操作

    ③process monitor分析

    进入Filter窗口添加筛选条件
    在这里插入图片描述
    在这里插入图片描述
    由于在之前静态分析时猜测该程序会下载vmx32to64.exe文件,顾在运行Lab03-01.exe后可以ctrl+F直接搜索vmx32to64.exe后
    在这里插入图片描述

    发现在windows\system32路径下创建写入来vmx32to64.exe文件并且在在currentversion\run下创建了VideoDriver自启动项键值
    来到windows\system32目录下查看vmx32to64文件

    在这里插入图片描述
    在这里插入图片描述

    查看它的MD5值发现它同Lab03-01.exe一样,所以得出结论Lab03-01.exe将自己复制到windows\system32目录下,而在上面的注册表分析中VideoDriver自启动项键值指向了windows\system32路径下的vmx32to64.exe

    ④ApateDNS网络访问分析

    在这里插入图片描述
    发现它访问了www.practicalmalwareanalysis.com这个网址
    ApateDNS虚拟网络配置可参考文章《恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境》

    4.实验结论

    Lab03-01.exe的功能将自己复制到system32目录下,并开机自启动
    且Lab03-01.exe运行使访问www.practicalmalwareanalysis.com网址

    展开全文
  • Android APK 静态分析与动态分析

    千次阅读 2016-10-25 09:52:52
     动态分析是Android沙盘的主要功能,主要使用Google Android模拟器作为沙盘环境,同时以前面修改过的system.img来启动模拟器,以在操作过程中生成我们所需的日志信息:   system(' start emulator -...
  • 静态分析与软件测试中的动态分析

    千次阅读 2018-07-25 16:46:29
    静态分析不涉及被测软件的动态执行,并且可以在运行程序之前的早期阶段检测可能的缺陷。静态分析在编码之后和执行单元测试之前完成。静态分析可以由机器完成,以自动“遍历”源代码并检测不合规规则。经典的例子是一...
  • 再次只给出一个软件动态分析的方法和流程的大概描述,如果大家对某个工具或者方法感兴趣,度娘走你!(其实很多博客都有,讲的真心好……)1. 动态程序分析(Dynamic Program Analysis)动态程序分析:根据程序的一...
  • MobSF框架之动态分析 一、使用配置 【1】方式一:虚拟设备,配置动态分析器(VirtualBox + MobSF_VM.ova) 参考:https://github.com/ajinabraham/Mobile-Security-Framework-MobSF/wiki/1.-Documentation  ...
  • Android动态分析工具Droidbox

    千次阅读 2016-12-27 18:34:27
    【4】可以设置分析时间: ./droidbox.sh <file.apk> 10 (10表示10s) 【5】参考资料: http://blog.csdn.net/ccc7560673/article/details/8004039 三、主要功能 【1】获取APK包的...
  • 恶意代码的分析方法:静态分析、动态分析 恶意代码静态分析技术主要包括 :反病毒软件扫描、文件格式识别、字符串提取分析、二进制结构分析、反汇编、反编译、代码结构与逻辑分析、加壳识别和代码脱壳。 反病毒...
  • 程序动态分析工具调研

    千次阅读 2015-10-19 17:03:05
    综述本文是对程序动态工具的调研,通对各种动态分析工具的原理、功能、优缺点等方面的调研分析来使读者在使用工具时更有针对性。 作为调研,本文并不过多的涉及工具的细节,主要关注点在于工的原理、功能、优缺点...
  • 多级放大电路动态分析 这里有三种情况: #第一级发生截止失真,第二级正常 #第一级正常,第二级饱和失真 #第一级发生截止失真,第二级饱和失真 如果不理解为什么是饱和和截止失真,请参考链接中文章的结尾部分: ...
  • 浅谈逆向-动态分析之OD界面介绍OD的配置 界面介绍 A区域:view菜单功能项的快捷按钮 B+C+D+E+F: CPU窗口 (OD打开一个可执行文件后,会立刻加载,自动分析后并列出汇编代码,默认打开CPU窗口) B区域:反汇编...
  • 安卓动态分析工具 Inspeckage

    千次阅读 2017-07-04 12:29:19
    一个基于Xposed 开发的应用动态分析工具 github已开源 内置web页面 体验度很不错 核心功能绕过SSL 可以抓到https 以及使用HOOK 过滤出很多有价值的数据 信息收集 请求权限;应用权限共享库出口和非出口活动,内容...
  • Android动态分析工具Inspeckage

    千次阅读 2016-12-13 18:03:17
    Inspeckage工具 【1】Inspeckage是一个简单的应用程序(apk),对动态分析很多常用的功能进行了汇总,并且内建了一个HTTP服务器来提供友好的网页界面 【2】
  • 动态分析是在可控环境中运行程序或者模拟程序的执行过程,同时利用分 析工具,监控程序的所有操作,观察其执行流程和状态,获取执行过程中的各 种数据。调试则是一种最为重要的动态分析技术,能够获取程序的真实行为...
  • 这是作者网络安全自学教程系列,主要...这篇文章将讲解逆向分析OllyDbg动态调试工具的基本用法,包括界面介绍、常用快捷键和TraceMe案例分析。基础性文章,希望对您有所帮助,如果存在错误或不足之处,还望告知,加油!
  • Android中的动态调试案例分析

    热门讨论 2016-05-20 13:17:17
    动态破解apk动态破解apk动态破解apk动态破解apk动态破解apk
  • 如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细...
  • Inspeckage,安卓动态分析工具

    千次阅读 2017-06-09 12:06:44
    Inspeckage是一个用来动态分析安卓app的xposed模块。Inspeckage对动态分析很多常用的功能进行了汇总并且内建一个webserver。整个分析操作可以在友好的界面环境中进行。可以参考:Inspeckage - Android Package ...
  • 让我们从体育类比开始,以帮助说明这两种方法之间的区别。...动态代码分析更像是在带电投手的情况下练习挥杆动作,每个投球的类型和位置都会发生变化。它不仅测试您的基础知识,还测试您对不同的意外情况做...
  • 这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友...本文将讲解HGZ木马控制服务器的过程,并进行恶意样本分析,结合签名两篇文章进行串讲。基础性文章,希望对您有所帮助。
  • BitBlaze(四) - 动态分析组件TEMU

    千次阅读 2013-05-02 11:20:16
    4 TEMU:动态分析组件 这一部分主要介绍TEMU,BItBlaze平台的动态分析组件,描述其提取操作系统级语义的组件,执行系统全局的动态污点分析,以及它的插件和实现。 4.1 TEMU概述 TEMU是一个基于全系统仿真器QEMU...
  • MSF android apk动态分析

    千次阅读 2015-10-29 00:02:43
    MSF动态分析配置过程见链接 https://github.com/ajinabraham/Mobile-Security-Framework-MobSF/wiki/Documentation通过manger.py runserver启动本地服务,访问127.0.0.1:8000访问服务,上传APK静态分析 点击”...
  • 动态数据分析报表,用起来真真太酷炫了,不知道这篇文章能否写的清楚。制作动态数据分析报表,除了传统的柱状图或者折线图之外,我觉得主要在于切片器,这个切片器相当于筛选框的作用,切片器在插入---------》切片...
  • R Markdown生成动态分析报告(.html)

    千次阅读 2016-04-12 13:30:35
    发现一个比Latex生成动态分析报告方便无数倍的R Markdown 1.配置环境 tools --global options--sweave的weave Rnw files using改为knitr 2.新建R Markdown file,测试代码如下 R CODE BY 小酥饼maomao =============...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,098,170
精华内容 439,268
关键字:

动态分析