首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记一次详细勒索病毒分析

,用于善后工作 a.txt..doc: 加密后文件样本 Read___ME.html: 勒索信息 0x03 行为预览 1.exe (样本主体行为): 1、简单反调试技术,调用无效循环及无效 API...,导致 IDA 无法判别哪些是数据哪些是代码,我们可以手动将其转换,但即使转换成功后也无法正常反编译,加大了我们分析难度,只能通过 OD 一点一点单步进行分析。...该函数用来关闭一些进程,如 word,excel,防止后面加密函数运行时,由于文件占用导致加密失败。...比较后缀名是不是 ..doc 判断是否被加密 比较文件名是不是 Read__ME.html(生成勒索文档),比较文件名是不是 Hash 文件 比较文件名是不是比较是不是复制到 C:\Documents...分析完毕 通过上面的分析,我们可以了解到该病毒对每个文件 uuid 进行运算,通过运算结果生成 AES 密钥,并使用用户 RSA 公钥对 uuid 进行加密放在了文件中,用户角度考虑要解密文件数据首先要获得

1.7K10

CMake 秘籍(七)

我们通过使用函数不是宏来实现add_doxygen_doc,以限制变量定义作用域和可能副作用。...在这种情况下,函数和宏都可以工作(并且会产生相同结果),但我们建议除非需要修改父作用域中变量,否则应优先使用函数不是宏。...一个选项是使用打包 MinGW 编译器。作为打包交叉编译替代方案,我们还可以使用 MXE(M 交叉环境)代码构建一套交叉编译器:mxe.cc。...然后,通过指向CMAKE_TOOLCHAIN_FILE到工具链文件来配置代码(在本例中,使用了代码构建 MXE 编译器): $ mkdir -p build $ cd build $ cmake...然后,通过指向CMAKE_TOOLCHAIN_FILE到工具链文件来配置代码(在本例中,使用了代码构建 MXE 编译器): $ mkdir -p build $ cd build $ cmake

7000
您找到你想要的搜索结果了吗?
是的
没有找到

Rust实战系列-复合数据类型

(3)open() 和 close() 函数返回值为 bool 类型,也许可以返回更复杂类型,包括错误信息(如果操作系统返回错误信息) (4)函数都不是方法,代码风格来看,调用 f.open() 不是...暂时没考虑和磁盘等持久化存储介质交互过程。 “newtype 模式: 有时,需要 type 关键词,当需要编译器将新 type 作为独立类型不是别名时怎么办?使用 newtype。...一起工作(在 main 中使用) 先不考虑这两个函数,只是假设执行成功 返回 读取字节数 复制一份数据,save_to.append() 会缩小输入 Vec 严格来说不是必须,但了解一下很有用。...const 创建了编译常量, let 值是在运行时创建。 在编译器层面,let 更多指的是别名,不是不可变性。在编译器术语中,别名是指在同一时间对内存中同一位置有多个引用。...以下步骤对上面的示例代码生成文档: # 示例代码文件名为 file-doc.rs rustdoc file-doc.rs 此时,可以看到生成了 doc 目录: 浏览器访问 index.html:

1.5K20

ES6 系列之我们来聊聊 Promise

回调 说起 Promise,我们一般都会回调或者回调地狱说起,那么使用回调到底会导致哪些不好地方呢? 1....当然了,与人线性思考方式相违和,还不是最糟糕,实际上,我们还会在代码中加入各种各样逻辑判断,就比如在上面这个例子中,doD() 必须在 doC() 完成后才能完成,万一 doC() 执行失败了呢?...我们是要重试 doC() 吗?还是直接转到其他错误处理函数中?当我们将这些判断都加入到这个流程中,很快代码就会变得非常复杂,以至于无法维护和更新。 2....然而如果将这种同步和异步混用代码作为内部实现,只暴露接口给外部调用,调用方由于无法判断是到底是异步还是同步状态,影响程序可维护性和可测试性。...Promise 构造,结果会得到一个立刻跑出异常,不是一个被拒绝 Promise。

61730

有赞 Android 编译优化方案 Savitar 2.0

一般工程,会随着代码增加导致工程或模块编译时间不断增加,但是在使用了增量编译加速之后,可以让工程增量编译速度不受工程模块代码量规模影响,只与改动量正相关(理论上规模越大工程,得到编译提效收益越明显...三、Savitar 2.0 版本新功能 在早期 1.0 版本 Savitar 中,是使用引入本地 build.gradle 文件和工程引入加载代码方式完成集成,存在较强入侵性,集成体验不是很好...internal 可访问区域,解决增量编译由于单独编译导致 internal 访问问题。...例如: // 原始函数 public void sayHello() // 修改后函数 public String sayHello() 返回值 void变为 String并不会导致编译错误,但是在运行时会导致...如果能再次编译依赖方,加入到最终产物中就可以避免这样错误。 解决这个问题有两个关键点:文件改动分析与改动文件直接依赖方定位。

1.2K20

RPM打包原理、示例、详解及备查

然后,进行编译编译过程是在%_builddir中完成,所以需要先把源代码复制到这个目录下边,一般情况下,源代码是压缩包格式,那么就解压过来即可; 3....手册页应在 %doc 中声明 : %doc %{_mandir}/man1/hello.1.*。 由于示例程序使用了翻译和国际化,因此会看到很多未声明 i18 文件。...-c name : 如果源码包解压后包含多个目录,不是单个目录时,此选项可以创建名为 name 目录,并在其中解压。...4.3 %install阶段 此阶段包含安装阶段需要执行命令,即从 %{_builddir} 复制相关文件到 %{buildroot} 目录(通常表示 ~/rpmbuild/BUILD 复制到 ~/...测试代码应写入 %check 部分(紧接在 %install 之后,因为需要测试 %{buildroot} 中文件),不是写入 %{build} 部分,这样才能在必要时忽略测试。

10.3K71

一个编译问题带你了解 Flutter Web 打包构建和分包实现

; canvaskit : 通过 Webassembly + Skia 绘制控件; 虽然都知道 canvavskit 更接近 Flutter 设计理念,但是由于它构建 wasm 文件大小和字体加载等问题带来成本考虑...这里省略了无关 yaml 文件代码,那么上述简略代码,大家觉得有没有什么问题 ?...,我初步怀疑是不是优化等级 -O4 带来问题,但是正常情况下,Flutter 打包时 flutter_tools 并不是使用源码路径,而是使用以下两个文件: /Users/xxxx/workspace...但是到这里可以发现另外一个问题,因为 loadDeferredLibrary 方法是异步编译 js 代码上看,在执行完 loadDeferredLibrary 之后马上就进入到了 checkDeferredIsLoaded...三、最后 虽然这个问题不难解决,但是通过这个问题去了解 dart2js 编译和构建过程,可以看到很多平时不会接触内容 最后 如果你觉得这篇文章对你有点用的话,麻烦请给我们开源项目点点star:http

1.6K40

Go命令官方指南【原译】

编译包时,构建会忽略以“_test.go”结尾文件。 -o标志仅在编译单个包时允许,强制构建将结果可执行文件或对象写入命名输出文件不是最后两段中描述默认行为。...-json标志使包数据以JSON格式打印,不是使用模板格式。 -compiled标志导致list将CompiledGoFiles设置为呈现给编译Go源文件。...通过这种方式,导入注释可以让包作者确保使用自定义导入路径,不是直接指向底层代码托管站点路径。 对供应商树中代码禁用导入路径检查。这使得可以将代码复制到供应商树中备用位置,而无需更新导入注释。...但是,导入兼容性规则并不能保证:v1.5.4可能是错误不是v1.5.3向后兼容替代品。因此,go命令永远不会旧版本更新到未安装模块较新版本。...如果参数命名模块但不命名包(因为模块根目录中没有Go源代码),则跳过该参数安装步骤,不是导致构建失败。

8K30

Unity性能调优手册2基础:硬件,渲染,数据,Unity如何工作,C#基础,算法和计算复杂度

大多数摊位是由分支引起。尽管分支本身在某种程度上预测了结果,但仍然可能犯错误。尽管在不记住内部结构情况下也可以进行性能调优,但了解这些内容将有助于您在编写代码时更加了解如何避免循环分支。...Tips Stack Overflow Error栈溢出错误由于对函数递归调用耗尽堆栈内存时,会发生堆栈溢出错误。...然而,c#与传统C和其他语言不同之处在于,它不是一种可以在机器上自行编译和执行机器语言,而是一种中间语言;后面IL转换为可执行代码IL被称为“可执行代码”。...错误执行顺序或事件计时可能导致意外内存泄漏或额外计算。因此,您应该了解重要事件调用计时性质以及同一事件内执行顺序。...堆栈由操作系统管理,堆由程序管理。换句话说,了解堆内存管理方式可以实现内存感知实现。由于管理堆内存机制在很大程度上取决于程序起源代码语言规范,我们将解释c#中堆内存管理。

44431

PGO in Go 1.21

编译器必须基于静态启发式算法进行最佳猜测,因为它无法知道哪些情况在运行时将会常见。 但是,有没有可能知道呢? 在没有确切信息情况下,了解代码在生产环境中使用方式,编译器只能对包代码进行操作。...通常情况下,您希望生产环境中收集性能分析文件,以便编译器能够获取在生产环境中行为代表性视图。...因此,我们可能会生产环境中收集性能分析文件,该环境运行上周代码,然后使用它来构建今天代码。这完全没有问题!Go中PGO可以处理源代码轻微更改不会出现问题。...对于差异性性能分析,重要是两个性能分析文件都代表相同数量工作,不是相同时间。因此,我已经调整了服务器,使其自动收集性能分析文件,同时调整了负载生成器,使其发送固定数量请求,然后退出服务器。...由于接口可以有多个实现,编译器生成了一个 间接 函数调用,这意味着它在运行时接口值中类型中查找要调用正确方法。

31130

MySQL8.0.30 release note 中文翻译(详细版)

插件式身份验证 SASL LDAP 插件无法正确解析 Kerberos 配置文件读取 Kerberos 密钥分发中心 (KDC) 主机信息,从而导致 SASL 身份验证错误。...目标用户或角色不存在,IF EXISTS使REVOKE引发警告,不是错误。...MySQL 8.0.30开始,MySQL企业加密功能由一个组件提供,不是openssl_udf共享库安装。...对缺失值选择性使用一个常数下限不是一个统计估计,具有简单性和可预测性优点,并提供一些保护,以防止由于陈旧直方图和桶内启发式方法低估了选择性。...当语句在执行过程中需要重新准备时--例如,当指定符号性与实际数据类型不一致时,参数没有被正确克隆,导致错误。出现这种情况是因为为参数指定值被用来打印用于重新解析字符串,不是一个字面的?

1.9K10

编写你专属 MSBuild C# 代码生成器:在保存文件时自动实时生成你代码

本文是在此基础上更进一步,可以让生成代码变成实时;更准确说,是在保存文件时即生成代码,而无需完整编译一次项目。...但如果希望完整了解基于 MSBuild 生成代码原理,你可以需要了解以下知识或教程: 理解 C# 项目 csproj 文件格式本质和编译流程 如何创建一个基于命令行工具跨平台 NuGet 工具包...我们即将实现是:在保存 Test.txt 文件时,会立即执行我们编译流程,这样,我们便能基于 Test.txt 来实时生成一些代码。...如果你想复制到你项目里,记得去掉行首所有 + 号。 等你复制到项目里之后,试着在 Test.txt 文件里面随便写点什么,然后保存。...不过,你可以其他博客里找到很多生成代码方法,比如这篇……还有这篇……还有这这这篇…… 生成代码 T 到 T1, T2, Tn —— 自动生成多个类型泛型 如何创建一个基于命令行工具跨平台

33210

u202a错误,百分之九十都不知道隐藏在文件路径里惊天秘密!(干货收藏)

今天在做Python文件处理时候遇到这样一个问题。 使用鼠标右键获取到文件路径并使用时候发现总是发生错误导致文件路径读取失败。 ?...但是将前后两个代码细心对比小伙伴就会发现。 除了文件路径一个是复制过来、一个是手动输入以外,在代码上并没有任何区别,但是就是这样两个代码,手动输入可以运行,复制过来路径无法运行。...代码是这样: #文件路径分割 import shutil import os.path as op path1 = r'D:\data\venv\test.txt' #文件夹直接复制而来路径...更神奇是,这个字符并不是我们每次右击复制文件路径时都会出现。 它只会在我们右向左复制时候出现\u202a,左向右复制时候并不会出现这个字符。 ? 嗯…还有这神操作… ?...并且是使用正斜杠连接,不会出现因为反斜杠导致转义字符错误

5.7K53

Go实战之常用命令行工具

常用命令详解 启动错误报告 运行go bug命令,Bug打开默认浏览器并启动新Bug报告,报告包括有用系统信息 编译包和依赖项 编译go文件 build compile packages...否则,get将使用当前所需版本 第二步是下载(如果需要)、构建和安装命名包 如果参数命名是模块不是包(因为模块根目录中没有go源代码),则会跳过该参数安装步骤,不会导致构建失败 ?...当测试结果可以从缓存中恢复时,go test将重新显示以前输出,不是再次运行测试二进制文件。当发生这种情况时,go测试打印(缓存)代替汇总行中测试花费时间 ?...不是在sleeping或waiting I/O)时花费cpu时间 heap 报告内存分配示例;用于监视当前和历史内存使用情况,并检查内存泄漏 threadcreate 报告程序中引导创建新线程部分...当您认为由于互斥争用导致CPU未充分利用时,请使用此profile。

87310

【Python】已解决python错误:docx.opc.exceptions.PackageNotFoundError: Package not found at ‘new.docx‘报错解决办法

PackageNotFoundError通常发生在尝试打开一个不存在或路径不正确Word文档时。 二、可能出错原因 文件路径错误 指定文件路径不正确或文件名拼写错误。...from docx import Document # 错误文件路径或文件doc = Document('wrong_path/new.docx') 文件不存在 尝试打开Word文档实际上并不存在于指定路径...from docx import Document # 文件不存在 doc = Document('new.docx') 文件类型错误 尝试打开文件不是.docx格式。...from docx import Document # 文件是.txt不是.docx doc = Document('new.txt') 权限问题 没有足够权限访问指定文件。...建议删除文件名中中文符号。 如果还不行,检查一下是不是doc文件没法读 注意事项 总是使用绝对路径不是相对路径,以避免因当前工作目录不同导致路径问题。

14210

【漫游Github】无编译无服务器,实现浏览器 CommonJS 模块化

如果对以上 2、3 项不太了解,可以篇文章中了解 webpack 模块运行时设计[3]。 3....NodeJS 会在 require 时对源码文件进行包装, webpack 这类打包工具会在编译期对源码文件进行改写(也是类似的包装)。... one-click.js 没有编译工具,那编译期改写肯定行不通了,那怎么办呢?下面来介绍两种常用方式: 3.2.1..../divide.js"> `; doc.open(); doc.write(htmlStr); doc.close(); 复制代码 这样就可以在“隔离作用域...当然,细节上还可能会需要支持模块路径解析(resolve)、循环依赖处理、错误处理等。由于这部分实现和很多库类似,又或者不算特别核心,在这里就不详细介绍了。 4.

95020

C++11常用新特性快速一览

模板增强 外部模板 传统 C++ 中,模板只有在使用时才会被编译器实例化。只要在每个编译单元(文件)中编译代码中遇到了被完整定义模板,都会实例化。这就产生了重复实例化导致编译时间增加。...所以,采用默认值捕捉所有变量仍然是不安全,主要是由于指针变量复制,实际上还是按引用传值。 lambda 表达式可以赋值给对应类型函数指针。但是使用函数指针并不是那么方便。...表示匹配任意字符, . 转义后则表示匹配字符 . ,最后 txt 表示严格匹配 txt 这三个字母。因此这个正则表达式所要匹配内容就是文件名为纯小写字母文本文件。...在这里,我们并没有真正复制,所以我们把这个构造函数叫做“转移构造函数”(move constructor),他工作就是把资源从一个对象转移到另一个对象,不是复制他们。...当然,如果你在使用了 mova(a) 之后,还继续使用 a,那无疑是搬起石头砸自己脚,还是会导致严重运行错误

2.5K50

C ++ 中不容忽视 25 个 API 错误设计!

错误#3:无视“三法则” 什么是“三法则”? 三法则是,如果一个类定义了析构函数、复制构造函数或复制赋值运算符,那么它应该明确定义三个函数所有,不是依赖它们默认实现。...在代码中使用静态consts不是#defines用于简单常量。...这对于需要在本地使用API构建代码开发人员而言,不仅会导致浪费时间,而且还会因自动构建代理消耗时间导致成本高昂,因为这样代理可能需要每天数千次构建代码。...如果一个头文件不具备编译所需全部功能,但是包含该头文件程序正在编译,则表明由于包含顺序依赖性,头文件以某种方式获得了所需功能。...错误#22:没有使用平台/编译器支持最低公共特性 你应该始终对客户主要使用编译器/ C ++标准有一个很好了解

1.5K20

GO笔记之GO命令快速体验

当前我所了解来看,GO没有提供包管理仓库,而是直接使用版本管理系统作为仓库,支持如git、svn、mercurial等。...之前build命令在编译非main包会生成缓存文件,main包会生成执行文件并拷贝到当前目录。install会将它们安装到指定文件。...代码规范 这类命令可以帮助我们规范代码格式,减少代码发生错误几率,其中主要有go fmt、go vet和go fix三个命令。 go fmt作用是代码格式化。...假设有main.go文件内容如下: package main func main() { a := x + y } 复制代码 我们只需执行go fmt main.go文件,然后再次打开...main.go文件: package main func main() { a := x + y } 复制代码 格式化已经完成。

1.2K10
领券