FlareOn1 -- 5get_it

news/2025/10/2 20:21:15/文章来源:https://www.cnblogs.com/mdkj/p/19123128

用 DIE 打开,是一个 dll

1

用 ida 打开,简单分析一下,是一个记录键盘按键的程序。里面的每个虚拟键码都有一个函数返回字符串

2

那么 flag 在哪里呢?看到左边函数窗口里看到有一个 DialogFunc,按 X 查找交叉引用,最后找到按下 "m" 对应的函数

3
image

执行 sub_10001240 的条件是 dword_100194FC > 0。
dword_100194FC 的初始值是 0,再找 dword_100194FC 的交叉引用,看看哪里把它改成了 1,最后找到了 "o" 对应的函数

image

按照这个方法,逐步追溯每个变量改变的条件,所有按键对应的的字符连起来就是 flag

import idautils
import idaapi
import idc
import copytarget_var_ea = 0x100194FC
target_var_value = 1
asc_string = 'm'init_func_ea = 0x10001060print("*********************************")def get_initial_status(func_ea):status = dict()for ea in idautils.FuncItems(func_ea):insn = idaapi.insn_t()idaapi.decode_insn(insn, ea)if insn.itype == idaapi.NN_mov and insn.ops[0].type == idaapi.o_mem and insn.ops[1].type == idaapi.o_imm:status[insn.ops[0].addr] = insn.ops[1].valuereturn statusinit_status = get_initial_status(init_func_ea)
current_staus = copy.deepcopy(init_status)def get_target_status(func, target_ea):status = dict()flowchart = idaapi.FlowChart(func)target_block = None# 找到目标地址所在的块for block in flowchart:if block.start_ea <= target_ea < block.end_ea:target_block = blockbreak# 获取函数返回值mov_eax_addr = idc.prev_head( # mov eax, immidc.prev_head(            # pop ebpidc.prev_head(        # retfunc.end_ea)))insn = idaapi.insn_t()idaapi.decode_insn(insn, mov_eax_addr)asc_addr = 0if insn.itype == idaapi.NN_mov and insn.ops[0].type == idaapi.o_reg and insn.ops[1].type == idaapi.o_imm:asc_addr = insn.ops[1].valueelse:raise Exception("not \"mov eax, imm\"")# 反向遍历块,获取运行到目标地址所需要的所有条件while True:pre_blocks = target_block.preds()pre_count = 0for block in pre_blocks:pre_count += 1if pre_count > 1:raise Exception("too many preds")cmp = idaapi.insn_t()idaapi.decode_insn(cmp, idc.prev_head(idc.prev_head(block.end_ea)))jcc = idaapi.insn_t()idaapi.decode_insn(jcc, idc.prev_head(block.end_ea))if cmp.itype == idaapi.NN_cmp and cmp.ops[0].type == idaapi.o_mem and cmp.ops[1].type == idaapi.o_imm and cmp.ops[1].value == 0 and jcc.itype == idaapi.NN_jle:if jcc.ops[0].addr == target_block.start_ea:status[cmp.ops[0].addr] = 0else:status[cmp.ops[0].addr] = 1else:raise Exception("not \"cmp mem, 0\" and \"jle addr\"")target_block = blockif pre_count == 0:break# 返回结果return status, asc_addrstart_at = 0
while start_at == 0:# 遍历所有引用目标变量的地方target_count = 0for xref in idautils.XrefsTo(target_var_ea):insn = idaapi.insn_t()idaapi.decode_insn(insn, xref.frm)# 找到达到目标状态的 movif insn.itype == idaapi.NN_mov and insn.ops[1].type == idaapi.o_imm and insn.ops[1].value == target_var_value:target_count += 1if target_count > 1:raise Exception("too many targets")func = idaapi.get_func(xref.frm)status, asc_addr = get_target_status(func, xref.frm)print(status)print(idc.get_strlit_contents(asc_addr))asc_string = idc.get_strlit_contents(asc_addr).decode() + asc_string# 对比初始状态,找到变化的量change_count = 0for addr in status:if addr in init_status:if init_status[addr] != status[addr]:change_count += 1if change_count > 1:# raise Exception("too many changes")breakprint(f'change: {addr:x} -> {status[addr]}')target_var_ea = addrtarget_var_value = status[addr]else:raise Exception("uninitialzed var")if change_count == 0:start_at = func.start_eaprint(f'start at {start_at:x} ({idc.get_func_name(start_at)})')print(asc_string)

image

l0ggingdoturdot5tr0ke5atflaredashondotcom
l0gging.ur.5tr0ke5@flare-on.com
提交,都不对。
上网搜一下,答案是 l0gging.Ur.5tr0ke5@flare-on.com

这里只是通过虚拟键码判断,没有区分大小写,也没有处理 Shift 和 CapsLock,所以没弄清楚为什么 U 会是大写……

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

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

相关文章

2025/10/1

2025/10/1回家

2025 年阀门厂家 TOP 企业品牌推荐排行榜,管道阀门,气动,调节,电动执行器,生产,电磁,不锈钢,进口,耐高温阀门推荐这十家公司

在工业领域,阀门作为流体控制的关键部件,其质量优劣、性能好坏直接关系到整个系统的安全稳定运行。从市政工程的供水供气,到工业防爆场景的严苛环境,再到环保水处理、能源化工等行业,阀门无处不在。然而,当前阀门…

爬虫逆向-AST科技

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站开发如何查看请求体包头建设厅官方网站

之前做页面抓取&#xff0c;数据采集等功能的时候&#xff0c;第一个想到的就是用正则表达式去匹配页面内容。但是对于像我这种&#xff0c;正则只懂皮毛的人来说&#xff0c;写正则是真的很恶心的一件事。去网上找&#xff0c;也不一定能改成自己需要的正则。今天给大家推荐一…

2025/9/30

2025/9/30钳工工程实训 英语听说能力训练

天津购物网站搭建唐山地方志网站建设

来源&#xff1a;微信公众号科技咨询频道作者&#xff1a;谢黎、张志强&#xff0c;中国科学院成都文献情报中心兰德公司2021年5月24日发布《美国5G时代&#xff1a;在保障国家和人民的同时获得竞争优势》报告。报告援引美国国防创新委员会、联邦政府的观点&#xff0c;声称5G是…

做蛋糕需要建议网站不丹阳网站

这篇回答两个问题&#xff1a; 1.为什么在 pycharm中打开新的project&#xff0c;切换interpreter 之后发现自己之前装的库消失了&#xff1f; 2.为什么 interpreter 切换到python3.8了&#xff0c; terminal 还是在 3.9&#xff1f;&#xff1f; 问题的关键&#xff1a;搞懂什…

tcp与udp 协议 - 摘星

TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议) 是 TCP/IP 协议族中最核心的两种传输层协议,二者在可靠性、连接方式、传输效率等维度存在本质区别, 适用于不…

赛前训练4 extra 字典树

A 板子。实现 #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <stdlib.h> #include <vector> #include <…

CF1450E Capitalism

首先你发现这个条件特别能用差分约束描述,特别是构造方案。 但是你无法处理相同的情况,我们注意到相连的边的两个点的 \(a\) 奇偶性必定不同,于是这必定是一张二分图,检验一下是不是二分图即可。 然后跑普通的差分…

织梦如何做几种语言的网站移动互联网开发平台基于linux安卓

“同物异谱&#xff0c;同谱异物”会对影像分类产生的影响&#xff0c;加上高分辨率影像的光谱信息不是很丰富&#xff0c;还有经常伴有光谱相互影响的现象&#xff0c;这对基于像素的分类方法提出了一种挑战&#xff0c;面向对象的影像分类技术可以一定程度减少上述影响。 本…

手游网站怎么做可做百度百科参考资料的网站

编辑距离算法其实就是&#xff0c;在规定的编辑操作(替换字符串、插入字符串、删除字符串)中&#xff0c;经过几步可以把一个字符串变成另一个字符串&#xff0c;而这个所需的步数就是你的编辑距离。 测试样例&#xff1a; str1 abc str2 yabd 表里的每一个值都代表着将s…

网站建设一年600wordpress自动添加标签

声明常量&#xff1a;使用const关键字定义一个常量&#xff0c;不允许对其进行更改。例如&#xff1a; const int PI 3.1415926;修饰函数参数&#xff1a;加上const限定符可以确保函数不会修改传入的参数值。例如&#xff1a; void print(const int num) {// num不能在函数内…

Java 在Word 文档中添加批注:高效文档协作的利器 - 指南

Java 在Word 文档中添加批注:高效文档协作的利器 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

ui网站开发国内互联网公司排名2021

学习时间表 周次内容学习时长建议第一周 【第一章-1】JDK下载与配置电脑的环境变量&#xff0c;并在电脑上运行第一个java程序 2h【第一章-2】IDEA开发环境的安装与编写第一个程序 2h 第二周【第二章-1】Java编程基础——变量与常量1h【第二章-2】Java编程基础…

二分图最大匹配 匈牙利算法

模板:洛谷p3386 #include<bits/stdc++.h> using namespace std; const int N=5e4+10; int vis[N],match[N]; vector<int> edges[N]; int n,m,e; bool dfs(int u){for(int &v:edges[u]){if(vis[v])con…

用来查数据的网站怎么建设最新网页版传奇游戏

一、axios 简介 axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;可用于浏览器和 Node.js 环境&#xff0c;支持以下特性&#xff1a; 发送 HTTP 请求&#xff08;GET/POST/PUT/DELETE 等&#xff09; 拦截请求和响应 自动转换 JSON 数据 取消请求 并发请求处理 二…

2025 年脱硫剂厂家 TOP 企业品牌推荐排行榜,氧化铁,羟基氧化铁,常温氧化铁,沼气,天然气,煤气,煤层气,液化气,二氧化碳,氨气脱硫剂公司推荐

在当前工业快速发展的背景下,气体脱硫成为保障生产安全、减少环境污染的关键环节。无论是天然气、沼气行业,还是甲醇、化肥生产领域,都对脱硫剂的性能有着极高要求。优质的脱硫剂不仅需要具备高脱硫精度,还要有稳定…

网站内部优化是什么创建网站有免费的吗

3月29日&#xff0c;以“新零售、新流量、新风口”为主题的2024喜尔康浙江省经销商培训会在喜尔康总部正式开始举办。活动旨在智能新时代赋能经销商伙伴&#xff0c;通过抓住行业智能化风口&#xff0c;实现喜尔康与经销商的共赢&#xff0c;决胜未来新零售商机。 喜尔康始终致…

2025雨棚生产厂家 TOP 企业品牌推荐排行榜,西安,陕西,西北推拉雨棚,推拉,移动,活动,户外,电动伸缩雨棚推荐这十家公司!

引言在遮阳遮雨行业快速发展的当下,雨棚作为工业、商业、体育休闲等多个领域的重要设施,市场需求持续增长。然而,当前雨棚生产厂家数量众多,行业整体呈现出良莠不齐的态势。部分厂家缺乏核心技术,生产的雨棚在结构…