病毒反调试跟踪

2023-11-06

跟踪一个反调试巨多的病毒样本

1.调用 QueryPerformanceCounter反调试,这个API调用了封装ZwQueryPerformanceCounter系统调用的ntdll!NtQueryPerformanceCounter

004060FA  |.  3345 FC         xor eax,[local.1]
004060FD  |.  8945 FC         mov [local.1],eax
00406100  |.  8D55 EC         lea edx,[local.5]
00406103  |.  52              push edx                                                  
00406104  |.  FF15 C0204300   call dword ptr ds:[<&KERNEL32.QueryPerformanceCounter>]
0040610A  |.  8B45 FC         mov eax,[local.1]
0040610D  |.  3345 EC         xor eax,[local.5]
00406110  |.  8945 FC         mov [local.1],eax

2.注册SEH异常处理函数

004053C0   $  55              push ebp
004053C1   .  8BEC            mov ebp,esp
004053C3   .  6A FE           push -0x2
004053C5   .  68 10654400     push 123.00446510
004053CA   .  68 F0874000     push 123.004087F0
004053CF   .  64:A1 00000000  mov eax,dword ptr fs:[0]                                  ;  SEH地址
004053D5   .  50              push eax
004053D6   .  83C4 D0         add esp,-0x30
004053D9   .  53              push ebx
004053DA   .  56              push esi
004053DB   .  57              push edi
004053DC   .  A1 0C804400     mov eax,dword ptr ds:[0x44800C]
004053E1   .  3145 F8         xor dword ptr ss:[ebp-0x8],eax
004053E4   .  33C5            xor eax,ebp
004053E6   .  50              push eax
004053E7   .  8D45 F0         lea eax,dword ptr ss:[ebp-0x10]
004053EA   .  64:A3 00000000  mov dword ptr fs:[0],eax                                  ;  注册SEH
004053F0   .  8965 E8         mov dword ptr ss:[ebp-0x18],esp
004053F3   .  6A 01           push 0x1

3.调用 IsProcessorFeaturePresent 反调试 ,手动修改eax=0即可

00405DA1   .  83C8 01         or eax,0x1
00405DA4   .  A3 10804400     mov dword ptr ds:[0x448010],eax
00405DA9   .  6A 0A           push 0xA
00405DAB   .  E8 82A00200     call <jmp.&KERNEL32.IsProcessorFeaturePresent>            ;  反调试
00405DB0   .  85C0            test eax,eax
00405DB2   .  75 07           jnz short 123.00405DBB
00405DB4   .  33C0            xor eax,eax
00405DB6   .  E9 88020000     jmp 123.00406043
00405DBB   >  C745 F0 0000000>mov dword ptr ss:[ebp-0x10],0x0
00405DC2   .  C745 F4 0000000>mov dword ptr ss:[ebp-0xC],0x0

4.LoadLibrary 加载 一个奇怪的dll…

0012FE88    004084C5  /CALL 到 LoadLibraryExW 来自 123.004084BF
0012FE8C    00432494  |FileName = "api-ms-win-core-synch-l1-2-0"
0012FE90    00000000  |hFile = NULL
0012FE94    00000800  \Flags = 800

5.加载kernel32.dll 得到 InitializeCriticalSectionEx 地址

EBP-10   0> 0040849F  /CALL 到 GetProcAddress 来自 123.00408499
EBP-C    0> 7C800000  |hModule = 7C800000 (kernel32)
EBP-8    0> 004326C0  \ProcNameOrOrdinal = "InitializeCriticalSectionEx"

6.再次调用 IsProcessorFeaturePresent 反调试,修改0x4606C4的值

0042CEB3    8BEC           mov ebp,esp
0042CEB5    6A 0A          push 0xA
0042CEB7    E8 762F0000    call <jmp.&KERNEL32.IsProcessorFeaturePresent>
0042CEBC    A3 C4064600    mov dword ptr ds:[0x4606C4],eax
0042CEC1    33C0           xor eax,eax

7.调用UnhandledExceptionFilter 反调试,进入SEH

EBP-8    0> 00405A4E  /CALL 到 SetUnhandledExceptionFilter 来自 123.00405A48
EBP-4    0> 00405A50  \pTopLevelFilter = 123.00405A50
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

病毒反调试跟踪 的相关文章

  • 二进制转换

    我们平时使用的十进制 十进制转二进制 整数情况 11表示成二进制数 11 2 5 余 1 5 2 2 余 1 2 2 1 余 0 1 2 0 余 1 得0结束 11的二进制表示为 从下往上 1011 小数情况 0 9表示成二进制数 0 9
  • 7.26 二进制练习题

    给你个礼物你能收到吗 打开这个exe文件后 我们看到了它让我们输入礼物提取码 我们先随便输入数据 按回车显示提取码错误还有输错的次数 我们发现这里存在着一个循环 然后我们在IDA里面打开这个文件 int cdecl main int arg
  • IEEE二进制浮点数算术标准(IEEE 754)

    IEEE二进制浮点数算术标准 IEEE 754 是20世纪80年代以来最广泛使用的浮点数运算标准 为许多CPU与浮点运算器所采用 这个标准定义了表示浮点数的格式 包括负零 0 与反常值 denormal number 一些特殊数值 无穷 I
  • 程序员面试金典--面试26之介于0和1之间的实数,类型为double,返回它的二进制表示

    题目描述 有一个介于0和1之间的实数 类型为double 返回它的二进制表示 如果该数字无法精确地用32位以内的二进制表示 返回 Error 给定一个double num 表示0到1的实数 请返回一个string 代表该数的二进制表示或者
  • .有如下的4个/24地址块,试进行最大可能的聚合。212.56.132.0/24,212.56.133.0/24,212.56.134.0/24,212.56.135.0/24。

    有如下的4个 24地址块 试进行最大可能的聚合 212 56 132 0 24 212 56 133 0 24 212 56 134 0 24 212 56 135 0 24 由于四个地址块前两个字节都相同 只需将每个地址块的第三个字节转换
  • 二进制的算法题怎么做

    内容会持续更新 有错误的地方欢迎指正 谢谢 告诉大家一个诀窍 能高效解决大多数二进制的题目 假设有一个数n 那么n n 1 的作用 n n 1 得到的结果相当于把整数的二进制表示中最右边的那个1变成0 例1 求二进制数中1的个数 输入一个整
  • Kubernetes v1.25 搭建单节点集群用于Debug K8S源码

    参考说明 参考自 v1 25 0 CentOS binary install IPv6 IPv4 Three Masters Two Slaves md 按照自己的理解修改了下 搭建好的单节点v1 25 4版本集群 1 集群环境准备 1 1
  • C++编程积累——C++实现十进制与二进制之间的互相转换

    欢迎关注原创公众号 计算机视觉联盟 回复 西瓜书手推笔记 可获取我的机器学习纯手推笔记 直达笔记地址 机器学习手推笔记 GitHub地址 目录 十进制与二进制之间的转换 十进制转换二进制 C 实现十进制转换二进制 二进制转换十进制 C 实现
  • 二进制简单计算

    二进制简单计算 1 24 35 值 用二进制补码方式进行计算 24的补码 00011000 35的原码 10100011 35的反码 11011100 35的补码 11011101 24 35的值 00011000 11011101 111
  • 十六进制转二进制

    public static String hexToBinary String hex if hex null hex length 2 0 return null String bString String tmp for int i 0
  • 关于存储器按字节寻址和按字寻址的理解

    关于存储器按字节寻址和按字寻址的理解 近日在学习MOOC上学习哈工大刘宏伟老师的 计算机系统组成原理 课程 在4 1节提到主存的时候简单地提到一下关于按字节寻址和按字寻址的寻址空间问题 个人非常疑惑于是各处搜索查找资料 下面是本人就这个问题
  • 有限域GF(2^8)内乘法代码实现以及原理

    在密码学中经常用到有限域的乘法 一般在AES中用到的是GF 2 8 有限域内乘法 什么是有限域呢 有限域通俗的讲就是函数的运算结果全都包含在一个域中 不同于实数域 有限域有一个最大值 所有超过这个最大值的数都会经过一定的方法使他回到这个域中
  • 病毒反调试跟踪

    跟踪一个反调试巨多的病毒样本 1 调用 QueryPerformanceCounter反调试 这个API调用了封装ZwQueryPerformanceCounter系统调用的ntdll NtQueryPerformanceCounter 0
  • 遗传算法之二进制编码

    遗传算法的基本步骤 遗传算法 GA 的流程如图所示 Created with Rapha l 2 2 0 编码 把所需要选择的特征进行编号 每一个特征就是一个基因 一个解就是一串基因的组合 为了减少组合数量 在图像中进行分块 然后把每一块看
  • Linux下的dd命令

    简介 dd命令是Linux下的一个重要的磁盘操作命令 它的主要作用是备份和复制磁盘 dd的语法是 dd if 输入文件的名称 of 输出文件的名称 参数 值 if 输入文件的名称 指定输入文件的名称 可以是文件 设备 目录等 of 输出文件
  • 数学基础课之01二进制

    关于Java的移位符 左移位 lt lt 右移位 gt gt 表示算术右移 gt gt gt 表示逻辑右移 python同Java 由于java的二进制数最高位为符号位 0为正 1为负 右移位涉及到最左补0还是补1的问题 逻辑右移直接补0即
  • _cdecl、_stdcall和_fastcall的区别

    概述 在windows开发环境中有三种觉的调用协议 分别为 cdecl C调用 stdcall 标准调用 fastcall 快速调用 三种调用方式有参数传递和栈帧恢复的方式有所不同 本文在结合汇编代码简要说明一下有三种调用方式的区别 环境
  • C++基础——简单而强大的bitset

    basis bitset 的构造 bitset的操作 一些高级用法 将Bitsets视为一组标志 一些简单的原子操作 往往能组合出复杂而强大的功能 位操作的深远意义不在于表示一种数值 而是可能的情况数 我虽然暂时不知道bitset能组合出如
  • 黑马程序员---从头开始,回忆JAVA基础之JAVA用十六进制表示浮点数的方法

    在二进制文件中 存储数据的格式为16进制 下面举例说明27 0f在二进制文件中怎么表示 float 共计32位 折合4字节 由最高到最低位分别是第31 30 29 0位 31位是符号位 1表示该数为负 0反之 30 23位 一共8位是指数位
  • 详解原码、反码、补码——深入理解补码

    学过计算机原理的人都知道原码 反码 补码 但是有多少人知道为什么会有这三种码呢 这三种码又是用来干嘛的呢 众所周知 在计算机的世界只有01 那么显然所有的数都得转成二进制 这样计算机才能够理解 如何将一个十进制的数转成二进制就不说了 说下原

随机推荐

  • Centos各个版本下载地址

    CentOS7 6 下载地址 CentOS 7 x86 64 DVD 1810 iso CentOS 7 6 DVD 版 4G http mirrors 163 com centos 7 6 1810 isos x86 64 CentOS
  • Mysql 表字符集变更

    背景 线上有几张表的字符集是 latin1 要求换成utf8mb4 至于操作的时机则需要自行判断 1 查看库中所有字符集为latin1的所有表 SELECT DISTINCT table schema table name collatio
  • Spring事件传播行为和隔离级别

    spring特有的事务传播行为 spring支持7种事务传播行为 确定客户端和被调用端的事务边界 说得通俗一点就是多个具有事务控制的service的相互调用时所形成的复杂的事务边界控制 下图所示为7钟事务传播机制 传播行为 含义 PROPA
  • SpringMVC多文件上传

    文章目录 一 文件上传 1 1 导入pom依赖 1 2 配置文件上传解析器 1 3 设置文件上传表单 1 4 实现文件上传 二 文件下载 三 多文件上传 四 JRebel的使用 一 文件上传 1 1 导入pom依赖
  • 【树莓派】安装1Panel管理面板

    用的树莓派型号 RaspberryPi 4B 4G内存版 1Panel 是一个现代化 开源的 Linux 服务器运维管理面板 SSH进入树莓派 创建一个root密码 sudo passwd root 进入root模式 安装部署 curl s
  • 阻容降压原理的通俗讲解

    将交流市电转换为低压直流的常规方法是采用变压器降压后再整流滤波 当受体积和成本等因素的限制时 最简单实用的方法就是采用电容降压式电源 电容降压的工作原理并不复杂 他的工作原理是利用电容在一定的交流信号频率下产生的容抗来限制最大工作电流 例如
  • linux中反单引号(`)的作用

    在linux当中反引号也就是 符号 作用是 打上反引号的命令 首先将反引号内的命令执行一次 然后再将已经执行过的命令得到的结果再执行一次 就可以得到我们反引号的输出 看以下例子便可懂得
  • 设置海思芯片MMZ内存、OS内存详解

    1 前言 1 本文是基于hi3516dv300芯片的uboot和内核进行讲解 2 dv300芯片的板子上实际接了2G内存 dv300芯片实际最大也只支持2G内存 2 hi3516dv300芯片的内存地址范围 1 通过查阅数据手册可知 Hi3
  • adb命令怎么打开_细说电脑运行命令怎么打开

    电脑运行命令怎么打开呢 有时候决定一步一步的打开某个管理器或者程序太麻烦 有没有一步到位的方法呢 打开运行命令就可以啦 不过运行命令不太好找 下面我就给大家分享一下打开电脑运行命令的方法以及快捷键 运行命令主要是DOS操作系统的运行方式 我
  • 【华为OD机试 2023 B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 茶叶的保健作用与有益成分

    保健作用 能减低心脑血管发病和死亡风险据研究报道 日本研究者从1994年起对某地4万多名40岁至79岁中老年人进行跟踪调查发现 与一天喝茶不到1杯的人相比 每天喝5杯以上绿茶的男性因脑血管病死亡的平均风险下降了22 女性下降了31 其中脑梗
  • 《Spring源码深度分析》第6章 容器的功能扩展

    目录标题 前言 一 ApplicationContext代码切入点 加载配置文件的方式 代码切入点 二 设置配置路径 三 扩展功能 四 环境准备 五 加载 BeanFactory 1 obtainFreshBeanFactory 源码 流程
  • 目标跟踪(OTB100、GOT10K、LaSOT)数据集pysot测试结果

    论文画图 必不可少的测试结果 因为接触跟踪较晚 且对于matlab实在是不熟悉 所以最开始直接尝试的就是pysot进行曲线图 各算法比较框图的绘制 但是最近因为写论文需要画图 发现一些算法的txt文件实在难找 所以写下了这个帖子 目前并不全
  • 键盘盲打练习打字软件 v6.30绿色版

    点击下载来源 键盘盲打练习打字软件 v6 30绿色版 键盘盲打练习是一款字母和数字相结合的键盘打字练习软件 跟其他同性质功能软件相比较 它最大的特点是 眼睛不用看键盘 击闪烁的键 仔细体会 单击鼠标右键或按Alt A键 可弹出快捷菜单 非常
  • # STM32错误积累01:error: #11-D: unrecognized preprocessing directive

    解决办法 在 ifndef 与 define 后加上一个空格
  • docker安装kafka

    Kafka 是一个分布式流媒体平台 类似于消息队列或企业消息传递系统 kafka介绍 名词解释 producer 发布消息的对象称之为主题生产者 Kafka topic producer topic Kafka 将消息分门别类 每一类的消息
  • 【多模态】14、Segment Anything

    文章目录 一 Intruduction 二 Segment Anything Task 三 Segment Anything Model 四 Segment Anything Data Engine 五 Segment Anything D
  • 关于Qt pro、pri、qmake、Makefile的资源整理

    QT中PRO文件写法的详细介绍 如何在Qt Creator中创建pri文件 以及pri文件的说明 qmake的使用 跟我一起写 Makefile 一 推荐大家仔细看陈皓的和我一起写Makefile 可以通透makefile的工作原理 其次里
  • 林园价值交易策略

    文章目录 选股策略 林园6条炒股 心经 选股策略 选股时可以考虑在低市盈率 高分红的绩优龙头股和确定性高的小盘股中选 所选择的上市公司的财务指标需符合七大标准 每股盈利不低于0 3元 净利润不少于7000万元 毛利率在20 以上 净资产回报
  • 病毒反调试跟踪

    跟踪一个反调试巨多的病毒样本 1 调用 QueryPerformanceCounter反调试 这个API调用了封装ZwQueryPerformanceCounter系统调用的ntdll NtQueryPerformanceCounter 0