2024ciscn 逆向ezCsky和dump详解

news/2024/12/16 20:09:13/文章来源:https://www.cnblogs.com/XFocus/p/18611035

ezCsky

Exeinfo看了不是exe

IDA分析不了,使用鸡爪Ghidra进行分析。这边顺带讲一下Ghidra的基础操作方法

下载Ghidra:https://gitcode.com/gh_mirrors/gh/ghidra_installer

下载java11(对版本有要求)

打开.bat文件

第一次用需要先输入jar文件所在的地址,比如我的就是

C:\Program Files\Java\jdk-11

具体根据自己的情况做出调整

新建文件夹

添加文件

双击

看左边函数这一栏

重点关注这几个函数

找到密文

既然是rc4那肯定还有key

后面还有一步异或

stb r0, 0x2470(0)为异或操作,按位与后一位异或

所以exp的思路就是,先对密文进行rc4解密,再从后往前按位异或

完整的exp

key = 'testkey'
enc = [0x96, 0x8F, 0xB8, 0x08, 0x5D, 0xA7, 0x68, 0x44, 0xF2, 0x64, 0x92, 0x64, 0x42, 0x7A, 0x78, 0xE6, 0xEA, 0xC2, 0x78, 0xB8, 0x63, 0x9E, 0x5B, 0x3D, 0xD9, 0x28, 0x3F, 0xC8, 0x73, 0x06, 0xEE, 0x6B, 0x8D, 0x0C, 0x4B, 0xA3, 0x23, 0xAE, 0xCA, 0x40, 0xED, 0xD1]# RC4 解密过程
s_box = list(range(256))
j = 0
for i in range(256):
j = (j + s_box[i] + ord(key[i % len(key)])) % 256
s_box[i], s_box[j] = s_box[j], s_box[i]res = []
i = j = 0
for s in enc:
i = (i + 1) % 256
j = (j + s_box[i]) % 256
s_box[i], s_box[j] = s_box[j], s_box[i]
t = (s_box[i] + s_box[j]) % 256
k = s_box[t]
res.append(s ^ k)# 格式化输出为十六进制
hex_res = ['0x{:02x}'.format(byte) for byte in res]# 打印十六进制结果
print('[' + ', '.join(hex_res) + ']')for i in range(40, -1, -1):
res[i] = res[i] ^ res[i+1] if i + 1 < len(res) else res[i]
result = ''.join(chr(byte) for byte in res)print(result)

flag{d0f5b330-9a74-11ef-9afd-acde48001122}

Dump

用winhex打开flag文件

用ida打开re.exe

酷似ollvm混淆

用D810去控制流平坦化时失败。

看到题目提示,字符编码算法,同时flag长度为22?!先运行re.exe看看

显然每个字符数字和字母在运行后输出的结果是固定的hex值,所以可以直接把所有的可能跑出来

然后对照flag的hex值,得到flag

数字比赛时给出了是4

flag{MTczMDc4MzQ2Ng==}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将java私有库(jar)提交至公服/公共仓库(central repository)-手动版

如何将java私有库(jar)提交至公服/公共仓库(central repository)-手动版 准备GunPG(用于asc签名) 项目代码(建议是maven结构的) sonatype账号(https://central.sonatype.com/api/auth/login) Maven Helper(Idea插件,maven命令快捷插件) github或gitee账号(用于注册sonatype的N…

如何设计一个有效曝光的框架

本文主要介绍如何设计一个有效曝光的框架。先阐述有效曝光的概念及产生原因,接着围绕View标识、数据存储、曝光计算、曝光缓存、曝光策略、框架可扩展性等展开,包括View的唯一ID标识、数据存储的作用、曝光的面积和时长计算、缓存处理、框架策略扩展方式等,最后指出实现需考…

QT项目文本编辑器开发(2)

本章节接着上文,实现文本编辑器的新内容创建。 首先我们创建一个新的MyChildWnd 按照以下内容添加我们的代码:class MyChildWnd : public QTextEdit {Q_OBJECTpublic:MyChildWnd();QString myCurDocPath;void newDoc(); //创建新文档QString getCurDocName();bool loadDoc();…

QT 自动伸缩的工具栏和自定义配置的工具栏 QToolBar更多按钮的样式设置

1.实现目标 如下图所示,播放窗口的工具栏,有很多按钮,当窗口的宽度不够时,能够自动生成更多按钮,点击更过按钮就会出现多余按钮的menu菜单;2。实现方法 一开始我还想着加个按钮控件,在播放窗口resize函数中判断工具栏的宽度能容纳几个按钮,判断宽度是否够,如果不够的话…

诊断工具——找到泄漏点

C#若出现内存泄漏时可通过如下方式进行查找。 多次运行后在VS的诊断工具中截取内存快照, 然后点开内存快照,查看托管内存信息,如下图: 上图中PerspectiveViewModel是PerspectiveView页面的VM,理论上只有打开它时才会创建1个,离开这个页面时它会被GC回收。但通过多次进入…

海山数据库(He3DB)源码解读:T_DropRoleSetStmt原理浅析

一、概述DropRoleStmt 表示删除角色的 DDL 语句。。 二、DropRole 命令的执行流程PostgresMain exec_simple_query →执行简单的 SQL 查询; StartTransactionCommand → 开始事务; pg_parse_query →解析为内部的抽象语法树(AST); PortalRun standard_ProcessUtility →权限…

【Adobe Dimension 2024下载与安装】

1、安装包 我用夸克网盘分享了「Dimension 2024」 链接:下载地址 2、安装教程(安装前关闭系统防护) 1) 下载软件安装包,双击Set-up.exe安装2) 修改安装目录,点击继续3) 安装完成,点击启动4) 启动程序

【教程】任务管理(高级)打造完整的项目管理平台

通过循序渐进的功能升级,你将打造一个强大的管理系统,让团队协作更高效、流程更智能。前言 亲爱的读者,恭喜你已经成功搭建了基础的任务管理系统!不过,这仅仅是开始。就像盖房子一样,我们已经打好了地基,接下来要一层层建起更高的楼层,让这个系统变得更加完善和强大。 …

阿里云服务器-centos7-ARL灯塔搭建

以阿里云centos7服务器为例,快速搭建arl灯塔系统 一、安装doker环境 已有doker环境的可以更新或者跳过,自行操作 没有安装过doker环境的参考以下步骤: 1.1 安装docker所需要的依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2这是一个在基于 yum 包管理…

24-12-16PHP大作业步骤!!!

一:先在自己的本地数据库里新建一个叫dzy的数据库,里面建有四个表,下面是建表的代码 #用户表 CREATE TABLE user( id int(11) not NULL PRIMARY KEY auto_increment, username VARCHAR(30) not NULL UNIQUE, email VARCHAR(30) not null, password VARCHAR(100) not null );…

As启动虚拟机报错

当前用户下这个目录新建文件:.android advancedFeatures.ini Vulkan = off GLDirectMem = on