有一天,在机缘巧合之下我获得了一个锁机软件(是多巧合阿喂!),然后兴高采烈的把它拖入了虚拟机里蹂躏(>_<!)。

很巧,软件有虚拟机检测。。。

Emmmm好吧,随便过一下。。。

我用的虚拟机是VMware12,网上查到了一段过检测的代码:

isolation.tools.setVersion.disable = "TRUE"

isolation.tools.getVersion.disable = "TRUE"

把上面两行加到虚拟机配置文件结尾,保存然后重新打开虚拟机即可。

好了,这次程序直接运行了起来。

靠!连一点暗示都不给,直接重启的嘛!这个人好坏好坏的,都不稍稍伪装下!

幸亏做了快照备份。。赶紧还原虚拟机,下面就开始简单分析一下这个程序的行为吧!

当然,少不了表姐的PeDoll~这时,表姐C/S的软件架构就很好的解决了测试机重启的问题~表白表姐~

好了,具体怎么抓的实在太简单,这里我就不写了,也就一个脚本的事,不耽误大家时间了。我们只看最后。

从PeDoll里保存下来两个512字节的数据文件,我断定这一定是这个智障软件写入到MBR的内容(废话嘛!)。其中一个很明显是锁机的,另一个可能是我虚拟机原始的MBR。看到这里谢天谢地。。至少这软件知道把原来的数据保存下来,这样就代表还原不是不可能拉!

在分析之前,我把虚拟机还原了一遍,又抓了一次数据。结果表明这丫两次写入的数据一模一样!诶,都不加个随机密码之类的吗!

好了,下面是这款软件写入到MBR的内容。

恩,这样乱七八糟的是要我怎么看嘛!还好,我有nasm! 于是,我随手从官网下载了nasm的二进制文件。就下面这货。

其中我们只用到ndisasm.exe这个程序来反汇编我们的MBR文件。最后来让我们看看结果~

嗯,,这回看着顺眼多了。把结果保存到文件中,我们来仔细分析下吧。

00000000  E90000            jmp 0×3

00000003  8CC8              mov ax,cs

00000005  8ED8              mov ds,ax

00000007  8ED0              mov ss,ax

00000009  8EC0              mov es,ax

0000000B  BC0001            mov sp,0×100

0000000E  BDED7C            mov bp,0x7ced   ;;;提示字符串偏移

00000011  BBED7C            mov bx,0x7ced

00000014  E8B000            call 0xc7       ;;;计算字符串长度

00000017  89C1              mov cx,ax       ;;;cx=字符串长度

00000019  B80113            mov ax,0×1301

0000001C  BB0C00            mov bx,0xc      ;;;页号0,黑底红字

0000001F  B200              mov dl,0×0

00000021  CD10              int 0×10        ;;;打印提示字符串

00000023  B800B8            mov ax,0xb800

00000026  05A000            add ax,0xa0

00000029  8ED8              mov ds,ax       ;;; ds=0xb8a0

0000002B  31C9              xor cx,cx       ;;;初始化cx

0000002D  31DB              xor bx,bx       ;;;初始化bx

0000002F  31C0              xor ax,ax       ;;;初始化ax

00000031  CD16              int 0×16        ;;;等待输入密码

00000033  3C08              cmp al,0×8      ;;;退格

00000035  7413              jz 0x4a

00000037  3C0D              cmp al,0xd      ;;;回车

00000039  741B              jz 0×56

0000003B  B402              mov ah,0×2

0000003D  8807              mov [bx],al

0000003F  886701            mov [bx+0x1],ah

00000042  81C30200          add bx,0×2

00000046  41                inc cx

00000047  E9E5FF            jmp 0x2f

0000004A  81EB0200          sub bx,0×2      ;;;退格键按下

0000004E  49                dec cx

0000004F  31C0              xor ax,ax

00000051  8907              mov [bx],ax

00000053  E9D9FF            jmp 0x2f

00000056  8CC8              mov ax,cs       ;;;回车键按下

00000058  8EC0              mov es,ax

0000005A  31DB              xor bx,bx

0000005C  BEDA7C            mov si,0x7cda   ;;;密码字符串偏移

0000005F  2E8A0ED97C        mov cl,[cs:0x7cd9]

00000064  B500              mov ch,0×0

以上参考了链接http://slab.qq.com/news/tech/1293.html,有兴趣的可以自己去看看。

经分析,这个MBR文件跟上面链接中的应该是同一种,特征完全一致,我只是写了一点注释方便大家对照(顺便学习一下汇编,嘿嘿嘿)。

最后得出密码的十六进制是C6C6BDE2C4E3C2E8B1C6A8BAA8DEA4A2(嗯,我就不翻译了),所以最后困扰我的就是这个密码要怎么输入?经研究发现有人说用ALT+小键盘数字来输入,不过我没有小键盘(求好心人赞助。。。),试了其他方法也没有成功,这里希望能有大佬指教一下~

最后一个不算结束的结束吧。经(xiao)此(da)一(xiao)战(nao)之后,我的功力又有了不小的提升。以后还是要多练练手才能不生疏阿。

此次用到的程序文件我全都打包放到了附件中点击原文下载),感兴趣的小伙伴可以下载研究,欢迎交流~

记一次MBR锁机病毒分析的更多相关文章

  1. Android最新锁屏病毒分析及解锁

    一.情况简介   从去年开始PC端的敲诈者类病毒在不断的爆发,今年年初的时候手机上也开始出现了敲诈者之类的病毒,对这类病毒很无语也是趋势,因为很多时候病毒的产生是和金钱利益相关的.前天去吾爱破解论坛病 ...

  2. android黑科技系列——修改锁屏密码和恶意锁机样本原理分析

    一.Android中加密算法 上一篇文章已经介绍了Android中系统锁屏密码算法原理,这里在来总结说一下: 第一种:输入密码算法 将输入的明文密码+设备的salt值,然后操作MD5和SHA1之后在转 ...

  3. Android版本的"Wannacry"文件加密病毒样本分析(附带锁机)

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  4. Android最新敲诈者病毒分析及解锁(11月版)

    一.样本信息 文件名称:久秒名片赞,(无需积分s)(2)(1)(1).apk 文件大小:1497829字节 文件类型:application/jar 病毒类型:Android.CtLocker 样本包 ...

  5. [FreeBuff]Trojan.Miner.gbq挖矿病毒分析报告

    Trojan.Miner.gbq挖矿病毒分析报告 https://www.freebuf.com/articles/network/196594.html 竟然还有端口转发... 这哥们.. 江民安全 ...

  6. Redisson 实现分布式锁的原理分析

    写在前面 在了解分布式锁具体实现方案之前,我们应该先思考一下使用分布式锁必须要考虑的一些问题.​ 互斥性:在任意时刻,只能有一个进程持有锁. 防死锁:即使有一个进程在持有锁的期间崩溃而未能主动释放锁, ...

  7. apple iphone 3gs 有锁机 刷机 越狱 解锁 全教程(报错3194,3014,1600,短信发不出去等问题可参考)

    以自身经历列步骤如下:(基本思路就是刷6.1.6,越狱,降级基带,解锁) 一.准备工作 1.下载3gs 6.1.6官方固件.地址:http://act.feng.com/wetools/index.p ...

  8. ReentrantLock之非公平锁源码分析

    本文分析的ReentrantLock所对应的Java版本为JDK8. 在阅读本文前,读者应该知道什么是CAS.自旋. 由于ReentrantLock的公平锁和非公平锁中有许多共同代码,本文只会对这两种 ...

  9. 记录腾讯云中矿机病毒处理过程(重装系统了fu*k)

    刚想学学kafka,登录与服务器看看把,谁知ssh特别慢,很奇怪,我以为是我网速问题,断了wifi,换了网线,通过iterm想要ssh root@x.x.x.x,但是上不去? 就tm的很奇怪了,登录腾 ...

随机推荐

  1. OpenLayers 3 扩展插件收集

    OpenLayers 3 扩展插件 Awesome-OpenLayers OL3扩展 ol3-ext 很酷的一组 OpenLayers 3 (ol3) 扩展: 编辑-选择控件.CSS popup(弹出 ...

  2. 模板引擎 引自 《PHP核心技术与最佳实践》

    随着web的发展,仅一门语言或者一种技术已经不能满足需求,分层架构显得越来越重要.在大型架构中,从来不会简单地应用php从头到尾实现一个完整的mvc架构.可能底层是c/java的支撑,负责密集运算和y ...

  3. Excel数据转化为sql脚本

    在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况.这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库. 1 在数据前插入一列单元格,用来拼写sql语句. 具体 ...

  4. Spring IOC容器启动流程源码解析(一)——容器概念详解及源码初探

    目录 1. 前言 1.1 IOC容器到底是什么 1.2 BeanFactory和ApplicationContext的联系以及区别 1.3 解读IOC容器启动流程的意义 1.4 如何有效的阅读源码 2 ...

  5. FILTER:progid:DXImageTransform.Microsoft.Gradient使用

    FILTER:progid:DXImageTransform.Microsoft.Gradient使用 语法: filter:progid:DXImageTransform.Microsoft.Gra ...

  6. git best practice

    1. https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud (atlassian家的git) 2. https: ...

  7. android Service 的简单使用(转)

    1.要使用Service,首先就是在配置文件里吗添加Service,如果不填加,你的Service是不能够使用的.目前学到的方法有两种    方法一:<service android:enabl ...

  8. Mybatis之Configuration初始化(配置文件.xml的解析)

    源码解读第一步我觉着应该从Mybatis如何解析配置文件开始. 1.先不看跟Spring集成如何解析,先看从SqlSessionFactoryBuilder如果解析的. String resouce ...

  9. 关于C语言中的Complex(复数类型)和imaginary(虚数类型)

    关于C语言中的Complex(复数类型)和imaginary(虚数类型) 其实这里的复数complex就是数学里的复数,包含实部和虚部两个部分,比如:x=2.1+6i,下面进行详细介绍. C99 新增 ...

  10. list和数组排序(冒泡)

    package cn.test.bubble; import java.util.ArrayList; import java.util.Arrays; import java.util.List; ...