每日一题#10-22 Ransomware
Ransomware
0x01 查壳
run.exe拖入exeinfo发现UPX壳
0x02 手动脱壳(大家有什么好的脱壳器求分享!)
载入程序
F8单步执行,当右侧寄存器窗口中esp寄存器第一次变化时停下(就是下一句了)
右键点击esp,选择数据窗口跟随
在左下角数据窗口中,右键点击0019FF64这个地址,选择 断点->硬件访问->Word
执行程序(F9),程序将在断点处停下
注意最后一个无条件跳转 的地址,从00ecee83直接跳转到004aac9b,大跳转一般情况下意味着OEP的出现,单步执行到实现跳转(中间需要通过F4调过一个循环,不再赘述)
跳转实现后出现了这些代码,判断已经到达OEP
(判断是否到达OEP请参考脱壳新手必读——各个OEP位置)
右键使用OD插件实现脱壳(右键->OD脱壳调试进程->脱壳)
(ESP定律脱壳的原理实际上是运用了堆栈平衡的理论,具体可参考ESP定律原理)
0x03 静态分析
尝试将脱壳后的程序拖入IDA进行静态分析,发现_main函数的地方出现了很多没啥卵用的代码
程序使用这种形式的花指令来干扰我们分析,为了使用IDA进行静态分析,必须想办法把这一大段花指令干掉
0x04 去除花指令
参考别人的wp结合自己的做法,去除花指令总结出三种做法
1、手动nop
在OD中把所有的花指令都找出来,手动nop填充(代码量比较大完成这一步需要点时间)
2、OD插件DeJunk
使用OD自带的花指令去除插件Dejunk
点击E(Edit),弹出记事本
在PatList任意一项中多添加一个标号,并在该标号的位置填入你的替换代码
S为原指令的操作码
D为目标指令的操作码
这里将那一堆Push/Pop指令全都用nop填充
由于花指令是从古0x00401000开始,所以就从这儿开始运行dejunk,我没有数需要填充多少,干脆将去除字节设置为最大99999
填充之后保存到run_dump,拖入IDA就可以进行静态分析
3、自己写脚本
使用Python脚本剔除花指令(注意环境是Python2)
data = open('run_dump1.exe','rb').read()
data = data.replace('\x60\x61\x90\x50\x58\x53\x5b','\x90\x90\x90\x90\x90\x90\x90')
open('run_dejunk.exe','wb').write(data)
0x04 继续静态分析
将去除花指令的程序拖入IDA中就可以F5静态分析
加密关键代码:
但是没秘钥啊就很捉急
看大神们的WP提示这里file是exe类型,用到了PE文件结构中“This program cannot be run in DOS mode”这句话
就是在PE文件中一定会有这句话,而且一定会在固定的位置上
这样我们就有了 原数据(上面那句话的hex形式)和加密后文数据(file中相应位置上的hex数据),根据加密算法可以反推出key来
脚本
enc='C7F2E2FFAFE3ECE9FBE5FBE1ACF0FBE5E2E0E7BEE4F9B7E8F9E2B3F3E5ACCBDCCDA6F1F8FEE9'.decode(hex)
dec='This program cannot be run in DOS mode'enc=list(enc)
dec=list(dec)
key=''
for i in range(len(enc)):enc[i] = (~ord(enc[i]))&255key += chr(ord(dec[i])^enc[i])
print (key)
解出key为letsplaychess
在run.exe中输入letsplaychess,待程序执行完毕后,将file文件加后缀名exe,运行得到flag
wp参考:wp
每日一题#10-22 Ransomware相关推荐
- 蓝桥杯每日一题(22):三升序列(python)
Topic [问题描述] 对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向右看.或者从上向下看是递增的. 例如 ...
- 每日一题:22. 仅仅反转字母 (C++)
题目 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置. 所有英文字母(小写或大写)位置反转. 返回反转后的 s . 示例 1: 输入:s = "ab-cd&qu ...
- 每日三题 10.13
1.一个项目团队的成员位于两个国家,有经验的资源在A 国的公司总部一起工作,而交付项目工作的其余资源位于B 国的客户办公室.项目经理大多数时间都在客户办公室.上个月,有经验的资源发现了几个不可接受的问 ...
- 每日三题 11.22
1.组织正在经历从瀑布模式到敏捷开发的转变.该组织计划逐步采取"混合敏捷"开发过程.项目经理受聘来领导组织转变和产品开发.项目经理下一步该怎么做? A.建立工作授权和工作分解结构 ...
- 每日一题(22)——malloc与free(三)
void GetMemory(char **p, int num) {*p = (char *)malloc(num); }void Test(void) {char *str = NULL;GetM ...
- 每日三题 12.22
1.一名公司高管要求敏捷管理专业人士提供建议确保项目干系人完全理解产品目标.敏捷管理专业人士应提供什么建议? A.沟通产品业务计划. B.与关键干系人一起召开会议. C.邀请项目干系人参加spr ...
- 每日三题 10.14
1.一个项目的成本绩效指数(CPI)为 1.2,且关键路径上的一个可交付成果落后于进度.如果项目经理将项目回正轨,项目会发生什么情况? A.活动将并行执行 B.范围将被修改 C.成本和风险将会增加 D ...
- 果壳游戏(春季每日一题 10)
为了消磨时光,奶牛 Bessie 和她的朋友 Elsie 喜欢玩一种她们在农业展览会上看到的游戏. 游戏准备阶段,Bessie 在桌子上放置三个倒置的坚果壳,111号坚果壳放在位置1,21,21,2号 ...
- 电动力学每日一题 2021/10/23 载流板产生的电磁场
电动力学每日一题 2021/10/23 载流板产生的电磁场 载流板的辐射 载流板的辐射 先验证电荷守恒: ∂ρ∂t=−∇⋅J=−∂∂zJz=0\frac{\partial \rho}{\partial ...
- 电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场
电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场 无限长均匀电流 无限长圆柱面均匀电流密度 无限长均匀电流 假设z轴上有一根非常细的电线,携带均匀电流I0I_0I ...
最新文章
- ajax异步后台存放购物车表,jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)...
- ADO.NET编程小错误
- 计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)
- 【直播课】图像分类竞赛技巧与多标签分类实战
- 面试官问我怎么设计100层大楼的电梯按键,我......
- Redis 安装启动
- 悬浮截图软件_Windows最好用截图工具,QQ第一,它第二
- an 转换器_400V耐压场效应管替代IRF730B型号参数,使用在DC-DC电源转换器。_场效应管吧...
- 蓝桥杯-算法提高-种树
- ❤️《大前端—了解与使用ES6》
- android gpu 编程,Android设备上的GPU编程
- VDI成长之路:Windows桌面优化配置(持续更新-20120227)
- ffmpeg代码实现自定义decoder
- 易语言WebUI教程 —— 入门简介
- 5G/NR BWP基本概念
- PHP+jQuery年会在线拍照抽奖
- 大创和互联网加_大创?科研立项?互联网+大赛?创业大赛?……你还在纠结吗?...
- css3中translateY、translateX的使用
- win7命令行打开计算机,Win7怎么打开cmd命令提示符_Win7打开命令提示符教程-192路由网...
- 设置标题栏背景色,背景色是自定义背景色
热门文章
- 依赖、关联、聚合、组合
- 【官方】2023年“中国软件杯”大学生软件设计大赛飞桨小汪赛道基线系统
- 【干货#008】30分钟实战知晓云内容发布小程序
- 2016.7.14 如何在浏览器中查看jsp文件
- 2022年黑龙江最新建筑八大员(标准员)模拟考试试题及答案
- 建筑施工技术【22】
- 记2017第八届蓝桥杯决赛(国赛)—北京三日游
- 沉睡者 - 微信内测一个手机可注册2微信号
- python识别二维码条形码?用pyzbar一招搞掂(含代码)!
- ChatGPT/大模型+零代码,给中小企业带来哪些机会?