后门程序分析1

临时补充一个内容,这是一个后门程序,通过IDA分析,之后把里面收集的信息点全部整理出来(包括:反虚拟机,系统信息等等)pass:guet

用IDA打开先看看主函数的样子
在这里插入图片描述
在这里插入图片描述
查阅一些这些API



    InternetOpenA:
        参数:
            lpszAgent: [输入] 指定用户代理名称的字符串。
            dwAccessType: [输入] 指定访问类型的标志。例如,使用 INTERNET_OPEN_TYPE_DIRECT 直接连接到互联网。
            lpszProxyName: [输入] 指定代理服务器名称的字符串。
            lpszProxyBypass: [输入] 指定应绕过的代理服务器的主机名的字符串。
            dwFlags: [输入] 附加选项标志。
        返回值:返回一个有效的句柄,表示打开的 Internet 会话;如果失败,则返回 NULL。

    InternetOpenUrlA:
        参数:
            hInternet: [输入] 用于请求的 Internet 连接句柄。
            lpszUrl: [输入] 指向包含 URL 的 null 结尾字符串的指针。
            lpszHeaders: [输入] 指向包含 HTTP 请求标头的可选 null 结尾字符串的指针。
            dwHeadersLength: [输入] 指定标头字符串的长度(以字节为单位)。
            dwFlags: [输入] 附加选项标志。
            dwContext: [输入] 用户定义的上下文值。
        返回值:如果成功,则返回一个有效的句柄,表示在指定的 Internet 会话中打开的 URL;如果失败,则返回 NULL。

    InternetCloseHandle:
        参数:
            hInternet: [输入] 打开的 Internet 句柄。
        返回值:如果成功,返回 TRUE;如果失败,返回 FALSE。

    GetLastError:
        参数:无
        返回值:返回最近发生的错误代码。

    FormatMessageA:
        参数:
            dwFlags: [输入] 格式化选项标志。
            lpSource: [输入] 指向包含消息定义的可执行模块或 DLL 的指针。
            dwMessageId: [输入] 错误消息标识符。
            dwLanguageId: [输入] 语言标识符。
            lpBuffer: [输出] 接收格式化消息文本的缓冲区。
            nSize: [输入] 缓冲区的大小(以字符为单位)。
            Arguments: [输入] 指向一个数组,其中包含要插入格式化消息的参数的地址。
        返回值:如果成功,则返回写入缓冲区的字符数,不包括 null 终止字符;如果失败,则返回 0。

    LocalFree:
        参数:
            hMem: [输入] 要释放的内存句柄。
        返回值:如果成功,返回 NULL;如果失败,返回非空值。

也就是说上面这段代码就是传输在你本机上读取的信息

看到sub_1400010D0这个函数这个函数有点长,我们慢慢分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先查阅一下函数



    RegOpenKeyExW:
        参数:
            hKey: [输入] 要打开的注册表项的父键句柄。
            lpSubKey: [输入] 指向要打开的子键名称的字符串指针。
            ulOptions: [输入] 注册表项打开选项,例如 REG_OPTION_OPEN_LINK。
            samDesired: [输入] 访问注册表项的安全性和访问权限。
            phkResult: [输出] 接收打开的注册表项句柄。

    RegQueryValueExW:
        参数:
            hKey: [输入] 打开的注册表项句柄。
            lpValueName: [输入] 指向要查询的值的名称的字符串指针。
            lpReserved: [保留] 保留参数,必须设置为 NULL。
            lpType: [输出] 接收值的类型。
            lpData: [输出] 接收查询到的值的缓冲区。
            lpcbData: [输入/输出] 指定 lpData 缓冲区大小的指针。

    RegCloseKey:
        参数:
            hKey: [输入] 要关闭的注册表项句柄。

    SLIsGenuineLocal:
        参数:
            pComponent: [输入] 保留参数,必须设置为 NULL。

    SysAllocString:
        参数:
            psz: [输入] 指向以 null 结尾的字符串的指针。

    CoUninitialize:
        参数:无

    SysFreeString:
        参数:
            bstrString: [输入] 要释放的 BSTR 字符串。

    GetPwrCapabilities:
        参数:
            pSystemPowerCapabilities: [输出] 接收系统电源功能信息的结构体指针。

    MultiByteToWideChar:
        参数:
            CodePage: [输入] 指定要使用的代码页。
            dwFlags: [输入] 附加选项标志。
            lpMultiByteStr: [输入] 指向多字节字符的字符串指针。
            cbMultiByte: [输入] 多字节字符的长度(以字节为单位)。
            lpWideCharStr: [输出] 接收宽字符的缓冲区。
            cchWideChar: [输入] 缓冲区的大小(以字符为单位)。

    GetDiskFreeSpaceExW:
        参数:
            lpDirectoryName: [输入] 要查询的目录的路径。
            lpFreeBytesAvailable: [输出] 接收可用空间的指针。
            lpTotalNumberOfBytes: [输出] 接收总空间的指针。
            lpTotalNumberOfFreeBytes: [输出] 接收总可用空间的指针。

    GlobalMemoryStatusEx:
        参数:
            lpBuffer: [输入/输出] 指向接收内存信息的结构体指针。

    Sleep:

    参数:
        dwMilliseconds: [输入] 线程挂起的时间,以毫秒为单位。

    GetLastInputInfo:
        参数:
            plii: [输入/输出] 指向 LASTINPUTINFO 结构体的指针,用于接收最后输入信息。

    GetTickCount:
        参数:无

    VariantClear:
        参数:
            pvarg: [输入/输出] 要清除的 VARIANT 变量。


    RegOpenKeyExW:如果成功,返回 ERROR_SUCCESS;如果失败,返回错误代码。
    RegQueryValueExW:如果成功,返回 ERROR_SUCCESS;如果失败,返回错误代码。
    RegCloseKey:如果成功,返回 ERROR_SUCCESS;如果失败,返回错误代码。
    SLIsGenuineLocal:如果操作系统是正版的,返回非零值;否则返回零。
    SysAllocString:如果成功,返回分配的 BSTR 字符串;如果失败,返回 NULL。
    CoUninitialize:无返回值。
    SysFreeString:无返回值。
    GetPwrCapabilities:如果成功,返回非零值;如果失败,返回零。
    MultiByteToWideChar:如果成功,返回转换后的宽字符数;如果失败,返回零。
    GetDiskFreeSpaceExW:如果成功,返回非零值;如果失败,返回零。
    GlobalMemoryStatusEx:无返回值。
    Sleep:无返回值。
    GetLastInputInfo:如果成功,返回非零值;如果失败,返回零。
    GetTickCount:返回从系统启动到当前经过的毫秒数。
    VariantClear:如果成功,返回 S_OK;如果失败,返回错误代码。

后续我们分析一下代码逻辑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/109290.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习合集】模型设计之网络宽度和深度设计 ->(个人学习记录笔记)

文章目录 网络宽度和深度设计1. 什么是网络深度1.1 为什么需要更深的模型浅层学习的缺陷深度网络更好拟合特征学习更加简单 2. 基于深度的模型设计2.1 AlexNet2.2 AlexNet工程技巧2.3 VGGNet 3. 什么是网络宽度3.1 为什么需要足够的宽度 4. 基于宽度模型的设计4.1 经典模型的宽…

EM算法解析+代码

大纲 数学基础:凸凹函数,Jensen不等式,MLEEM算法公式,收敛性HMM高斯混合模型 一、数学基础 1. 凸函数 通常在实际中,最小化的函数有几个极值,所以最优化算法得出的极值不确实是否为全局的极值&#xff…

初学编程入门基础教学视频,中文编程开发语言工具箱之豪华编辑构件,免费版中文编程软件下载

初学编程入门基础教学视频,中文编程开发语言工具箱之豪华编辑构件,免费版中文编程软件下载 构件的其中一个属性、方法,查找内容,替换内容。 构件工具箱非常丰富,其中该构件在 文本件构件板菜单下。 编程系统化课程总目…

web - 前段三剑客

目录 前言 一. HTML 常用标签演示 图片标签 ​编辑 表格标签(重点) ​编辑 表单标签 (重点) 布局标签 其余标签 二. CSS 2.1 . css的三种引入方式 2.2 . 三大选择器 2.3 . css样式 - 浮动 2.4 . css样式 - 定位 1.static 2.absolute(绝对位置) 3.relavite(相…

【设计模式】第13节:结构型模式之“享元模式”

一、简介 所谓“享元”,顾名思义就是被共享的单元。享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象。 实现:通过工厂模式,在工厂类中,通过一个Map或者List来缓存已经创建好的享元对象&am…

LeetCode 415 字符串相加 简单

题目 - 点击直达 1. 415 字符串相加 简单1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. 415 字符串相加 简单 1. 题目详情 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。…

LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字

目录 88合并两个有序数组 1、题目要求 2、解题思路 (1)、暴力解法: (2)、双指针,使用第三数组的解法: 3、代码展示 (1)、暴力解法: (2&am…

画时钟(turtle库)

思路: 总体来看,分为两个部分:固定的表盘,和不断刷新的指针(和时间显示) 固定的表盘 我的表盘长这个样子: 分为三个部分:60个dot点(分、秒),12条…

漏洞复现--用友 畅捷通T+ .net反序列化RCE

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

树莓派基金会近日发布了新版基于 Debian 的树莓派操作系统

导读树莓派基金会(Raspberry Pi Foundation)近日发布了新版基于 Debian 的树莓派操作系统(Raspberry Pi OS),为树莓派单板电脑带来了新的书虫基础和一些重大变化。 新版 Raspberry Pi OS 的最大变化是它现在基于最新的…

竞赛选题 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步:将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

《数字图像处理-OpenCV/Python》连载(33)使用掩模图像控制处理区域

**本书京东优惠购书链接:https://item.jd.com/14098452.html** **本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html** 第 5 章 图像的算术运算 在OpenCV中,图像是以Numpy数组格式存储的,图像的算术运…

大数据Flink(一百零三):SQL 表值聚合函数(Table Aggregate Function)

文章目录 SQL 表值聚合函数(Table Aggregate Function) SQL 表值聚合函数(Table Aggregate Function) Python UDTAF,即 Python TableAggregateFunction。Python UDTAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等,与…

grafana InfluxDB returned error: error reading influxDB 400错误解决

问题: 如图提示错误解决 确认自己的docker容器是否配置了以下3个字段 DOCKER_INFLUXDB_INIT_USERNAMExxx DOCKER_INFLUXDB_INIT_PASSWORDyyy DOCKER_INFLUXDB_INIT_ADMIN_TOKENzzz 如果有,在grafana中需要添加header配置Header: Authorization , Value…

docker应用部署---nginx部署的配置

1. 搜索nginx镜像 docker search nginx2. 拉取nginx镜像 docker pull nginx3. 创建容器,设置端口映射、目录映射 # 在/root目录下创建nginx目录用于存储nginx数据信息 mkdir ~/nginx cd ~/nginx mkdir conf cd conf# 在~/nginx/conf/下创建nginx.conf文件,粘贴下…

VScode 调试 linux内核

VScode 调试 linux内核 这里调试的 linux 内核是通过 LinuxSD卡(rootfs)运行的内核 gdb 命令行调试 编辑 /home/tyustli/.gdbinit 文件,参考 【GDB】 .gdbinit 文件 set auto-load safe-path /home/tyustli/code/open_source/kernel/linux-6.5.7/.gdbinit在 lin…

C笔记:引用调用,通过指针传递

代码 #include<stdio.h> int max1(int num1,int num2) {if(num1 < num2){num1 num2;}else{num2 num1;} } int max2(int *num1,int *num2) {if(num1 < num2){*num1 *num2; // 把 num2 赋值给 num1 }else{*num2 *num1;} } int main() {int num1 0,num2 -2;int…

【AD9361 数字接口CMOS LVDSSPI】D 串行数据之SPI

【AD9361 数字接口CMOS &LVDS&SPI】D部分 接续 【AD9361 数字接口CMOS &LVDS&SPI】A 并行数据之CMOS 串行外设接口&#xff08;SPI&#xff09; SPI总线为AD9361的所有数字控制提供机制。每个SPI寄存器的宽度为8位&#xff0c;每个寄存器包含控制位、状态监视…

进阶设计一(DDR3)——FPGA学习笔记<?>

一.简介 DDR3 SDRAM&#xff0c;以其单位存储量大、高数据带宽、读写速度快、价格相对便宜等优点 吸引了大批客户&#xff0c;占领市场较大份额。同时&#xff0c;作为内存条中不可缺少的一部分&#xff0c;DDR3 SDRAM 在计算机领域也占有一席之地。 要掌握 DDR3 SDRAM…

什么是 Node.js

目标 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端的应用…