2020年11月

010 Editor v11.0.1逆向破解

0x00 软件概况

使用工具:OD & IDA 7.2
破解平台:win7 x64

软件官网:https://www.sweetscape.com/010editor/
软件作用:010 Editor 是一款专业的文本和十六进制编辑器,其旨在快速轻松地编辑计算机上任何文件的内容。该软件可以编辑文本文件,包括 Unicode 文件、批处理文件、C/C++、XML 等,而在编辑二进制文件中,010 Editor 有很大的优势。

我下载的是32位安装版的程序,64位和便携版的破解方式应该是大同小异的

0x01 逆向分析

​ 安装完程序后简单查看了一下程序使用的DLL发现一大堆QT的DLL,所以传统的使用GetWindowTextW等Win32API对关键函数定位就不能起作用了。

1. 第一步本地验证

在随意输入用户名和注册码之后会出现以“Invalid name or password.”开头的弹窗,就可以通过IDA的交叉引用定位到调用该字符串的函数。image-20201112213723119.png (1139×467)

通过简单的上下翻阅可以发现关键if语句
image-20201112213834892

通过 v14 向上定位到复制的地址
image-20201112214124263

跟进KeyFunc函数,由上方关键if语句知道,如果要进入正确的语句块则 v14 = 0xDB 即 KeyFunc的返回值为0xDB。

使用OD动态调试可知,如果输入错误ebx会等于 0x177
image-20201112215124806

如果我们想要绕过验证则直接在IDA内把0x177的返回值修改为0xDB

image-20201112215508286

然后在Edit -> Patch program -> Apply patches to input file 保存文件
image-20201112215742352

至此我们就通过了第一步的本地验证,重新打开注册界面随意输入用户名和注册码都会通过验证

2. 网络验证

我们在愉快使用一段时间后,可能会重新出现注册码错误的或者提示连接服务器错误的提示,这就得突破网络验证机制了

在此前的关键if语句所在的函数中我们会发现以“Could not contact the webserver.”开头的字符串,往上阅读代码就可以发现网络验证错误打印跳转,结合OD可确定网络验证函数
image-20201112230114413

根据上下逻辑可知当网络验证函数返回正整数时即为通过网络验证

这里是直接把验证CALL给直接NOP掉了,就相当于PASS了网络验证了
image-20201112231543456

还要把此处的判断 nop掉,不然后续会弹窗,影响使用
image-20210422184010834
image-20210422184049912

0x02 总结

总的来说本程序的逻辑是比较清晰的,注册码算法部分本文未具体展开我们只展示了众多破解此程序的其中一种方法,如有错误,还望指正。

0x03 源程序安装包及破解程序

安装包:010EditorWin32
破解程序:010Editor

使用方法:下载俩个程序后,先运行安装程序待安装完成后把破解程序放到安装目录替换源程序

也可以直接使用绿色版(解压即可使用):绿色版

彩虹猫病毒(MEMZ)分析及思维导图

memz1

0x00 基本介绍

​ 彩虹猫病毒是一款MBR类型病毒,中招的用户MBR会被篡改重启后无法正常进入系统只会出现彩虹猫的动画。同时在中招之后用户的鼠标和键盘会间歇性失效,桌面不断出现弹窗并且出现负片效果,鼠标图标会被修改,发出错误提示的声音,诺通过任务管理器关闭MEMZ.exe进程桌面会出现大量弹窗,随后出现蓝屏。

​ 本文仅局限于逆向分析层面,如查壳,行为分析,运行效果分析等未在本文展开,文末会放上个人认为比较好的分析文章以供学习。

image-20201107104238650

0x01 环境及工具

应用程序名称:MEMZ.exe
MD5:19DBEC50735B5F2A72D4199C4E184960
SHA1: 6FED7732F7CB6F59743795B2AB154A3676F4C822
工具: IDA Pro 7.0 & OD&die
分析环境:VMware Workstation Pro 15 + Win7 x64

0x02 逆向分析

image-20201107110433438

程序中的函数很少我们只要把握大体执行流程,通过简单分析总共分为三大部分:

1. 初次运行执行流程

通过 GetCommandLineW 函数获取命令行参数,如果命令行无参数则为初次运行。

image-20201107105158378

弹出俩个弹窗对用户进行提醒,如果都选择确认病毒就正式运行

image-20201107105405242

创建了5个命令行参数为/watchdog的进程和一个命令行参数为/main的进程

image-20201107105907751

至此初次运行流程就已经结束了,接下来分析命令行参数为/watchdog的进程执行了什么

2. /watchdog

此模块创建了一个线程和名为“hax”的窗口,线程的回调函数稍后分析,先来看看windows窗口的消息处理函数

image-20201107110553380

我们发现消息处理函数只关注两个窗口关闭消息,如果捕获到了窗口关闭消息则触发 RandomBoxAndOverWindows 函数,那我们接下来就得分析该函数做了什么事情

image-20201107110820241

RandomBoxAndOverWindows

首先我们发现该函数创建了20个线程

image-20201107111312096

StartAddress

这个线程回调函数设置了消息钩子,对窗口创建进行挂钩让窗口出现的位置随机

image-20201107111409918
image-20201107111823503

弹窗的内容

image-20201107112051845

DestroyWindows

通过GetProcessAddress 获取 RtlAdjustPrivilege和NtRaiseHardError函数的地址,如果获取成功则先用RtlAdjustPrivilege函数提权如何使用NtRaiseHardError制造蓝屏;如果有一个获取失败则启动备用方案使用ExitWindowsEx 函数强制关机。

至此WndProcess消息回调函数就分析结束了,接下来回过头分析先前的线程回调函数

image-20201107113011378

ProtectSelf

循环创建进程快照,然后和自身路径进行比较,有相同的计数器就加1,假如有病毒进程被关闭了本次循环的计算器数值会小于上一次,就会进入RandomBoxAndOverWindows 函数,出现大量弹窗并引起蓝屏。

image-20201107113845506

3. /main

​ 接下来的操作就是本病毒最核心的部分了,对MBR的操作以及让电脑出现总总异常,这里放一个对MBR的介绍,简单的说就是早期系统的一个系统引导代码,从Win8开始以后的系统基本上都不在使用MBR分区做为系统引导了,都开始使用GPT分区了。

​ 将程序内的硬编码拷贝到申请的堆内存中去,然后再写入MBR区域,写入成功就弹出note.txt

image-20201107120243489

​ 然后就循环创建10个线程,线程函数都在405130处

image-20201107121218901
image-20201107121236491

​ 每个线程的功能都不相同,具体的功能都是由某个特定的API来实现的,相对来说是比较好分析的,这里就不具体展开了,就直接上思维导图里的图片了

image-20201107121529657

至此三大模块都分析完毕

0x03 总结

此病毒的分析还是比较顺利的,没有遇到什么反调试,对于病毒本身还是具有局限性的只能应用在使用MBR分区的操作系统中。在github上有人写出了源码,将在下面的参考文章中放出

0x04 参考文章

MEMZ源码参考

彩虹猫病毒的逆向