ISCC2024 winterbegins

首先,用IDA打开程序,看到一大堆while(1)又套着while(1)的结构,肯定是控制流平坦化了,我们可以使用IDA插件d810去掉。
在这里插入图片描述

现在程序就好看多了。如果IDA没有显示这堆中文字符串,可以考虑使用IDA8.3,就可以显示了。

首先,反汇编第12行那个函数sub_7FF783BFCB20,里面一大堆奇奇怪怪的语句,不知道是干嘛的。我们可以在第十六行下断点,然后随便输入一堆字符串,就可以知道,这个函数其实就是对v6字符串赋值。
在这里插入图片描述可以点进去v6看看,往下拉一拉,就能看到了,就是赋值到比较后面的位置而已。

在这里插入图片描述

sub_7FF783BE1000这个函数比较简单,就是输入的字符串不能有数字。

在这里插入图片描述

sub_7FF783BE11E0,这个函数就是对你输入的字符串,重复的字母会压缩成一个,并且后面跟着一个重复次数。例如,CC会变成C2,BBB会变成B3,也可以动调玩玩看。

下面的sub_7FF783BE1E30这个函数就比较重要了,其中,sub_7FF783BE1A50这个函数:
在这里插入图片描述里面有个sub_7FF783BE2030(&v6[3 * i], “%%%02X”, (unsigned __int8)a1[i]);
这个语句其实就是sprintf。这个函数就是把字符串的ascii码转16进制字符串。

sub_7FF783BE1840这个函数,就是把字符的数字转成数字,如果是字母,也做一些转换,具体的转换可以自己看看,非常简单。

在这里插入图片描述sub_7FF783BE15D0这个函数应该是最重要的了。sub_7FF783BFC480这个函数就是一个赋值,动调可以知道。下面的语句,就是在Str中,找对应位置的两个汉字赋值到v3,最后返回v3。(一个汉字是对应两个字节的,这个是汉字的编码方式)
对应的位置指的是,sub_7FF783BE1840这个函数不是会得到一些数字吗?我们会从输入的字符串转变过来的数字,然后根据这些数字找到Str对应的位置,找到相应的汉字赋值。

思路清晰了,脚本非常好写:

key="冻笔新诗懒写寒炉美酒时温醉看墨花月白恍疑雪满前村"
ciphertext="美酒恍疑时温寒炉美酒寒炉寒炉懒写墨花前村时温时温前村恍疑墨花懒写墨花月白墨花懒写醉看墨花醉看恍疑醉看美酒墨花醉看醉看前村恍疑醉看时温醉看前村月白醉看新诗醉看月白醉看美酒墨花冻笔醉看恍疑墨花冻笔醉看恍疑墨花懒写墨花前村墨花"table=[]
for i in range(0,len(ciphertext),2):table.append(key.find(ciphertext[i:i+2]))#print(table)
for i in range(0,len(table)):table[i]=int(table[i]/2)def get_char(pos):cnt=0new_pos=posstring=""c=0while cnt<2:if table[new_pos]!=11:string+=str(table[new_pos])new_pos+=1cnt+=1else:new_pos+=1string+=str(chr(61+table[new_pos]))new_pos+=1cnt += 1return new_pos,chr(int(string,16))i=0
ans=""
while i<len(table):i, c = get_char(i)ans += c
print(ans)
#ISC2{_rxrgidvoenahdpipir}

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

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

相关文章

stm32_HAL_CAN(特点:广播试,检测线路是否空,id有优先级)

UART I2C SPI 介绍 CAN&#xff08;Controller Area Network&#xff09;接口是一种常用于嵌入式系统中的通信接口&#xff0c;尤其在汽车和工业领域。它由Robert Bosch GmbH在1986年开发&#xff0c;旨在提供一种可靠、高效、灵活的车载通信网络。CAN总线的主要 特点包括&am…

eNSP学习——配置高级的访问控制列表

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建OSPF网络 3、配置Telnet 4、配置高级ACL控制访问 需要eNSP各种配置命令的点击链接自取&#xff1a;华为&#xff45;NSP各种设备配置命令大全PDF版_ensp配置命令大全资源-…

数据结构01 栈及其相关问题讲解

栈是一种线性数据结构&#xff0c;栈的特征是数据的插入和删除只能通过一端来实现&#xff0c;这一端称为“栈顶”&#xff0c;相应的另一端称为“栈底”。 栈及其特点 用一个简单的例子来说&#xff0c;栈就像一个放乒乓球的圆筒&#xff0c;底部是封住的&#xff0c;如果你想…

【简单介绍下Sass,什么是Sass?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Linux:多线程的操作

多线程操作 进程与线程线程的创建 create_pthread创建线程池给线程传入对象的指针 线程等待 pthread_join退出线程 pthread_exit线程等待参数 retval 与 线程退出参数 retval 线程中断 pthread_cancel获取线程编号 pthread_self线程分离 pthread_detach 进程与线程 进程是资源…

史上最全,呕心沥血总结oracle推进SCN方法(八)

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享。前面介…

17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期

17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期 文章目录 17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期一、自动存储期示例 二、静态存储期2.1 示例 三、自定义存储期3.1 如何申请内存3.2 如何释放内存3.3 如何清空内存3.4 示例 概念…

salesforce保存记录后,根据条件弹出对话框提示

首先创建一个Visualforce页面并添加到页面布局。 Visualforce页面 条件语句&#xff1a; 在Visualforce页面的条件语句中&#xff0c;您需要使用正确的Visualforce表达式语法来插入JavaScript代码。此外&#xff0c;Visualforce的表达式语法不支持JavaScript直接调用&#xff…

Redis面试题(个人总结)

1、Redis特点 1、Redis是一个高性能且基于内存的数据库&#xff0c;所有的数据形式都是以键值对的方式来存储的 2、Redis支持丰富的数据类型&#xff0c;例如string,list,set,sorted set,hash&#xff0c;这些类型指的是键值对中的值的类型 3、Redis支持持久化 4、Redis单线程…

MQTT通讯协议接入

1.MQTT协议概述 MQTT是一种基于发布/订阅模式的轻量级消息传输协议&#xff0c;常用于低带宽、不可靠网络环境下传输消息&#xff0c;适用于物联网设备之间的通信。 1.1 MQTT协议的组件 客户端&#xff08;Client&#xff09;&#xff1a;连接到MQTT代理服务器的设备&#xff…

触摸芯片在物联网和人工智能上的应用

在科技更新换代频繁的时代&#xff0c;触摸芯片作为一种重要的人机交互技术&#xff0c;已经在逐渐融入我们的生活。为我们带来了更加便捷、直观的电子产品操作体验&#xff0c;让人与机器之间的沟通变得更加自然流畅。今天我们就来说一说触摸芯片。 触摸芯片的核心是电容感应…

dijkstra 算法为什么高效?

Dijkstra算法的高效性主要体现在其解决有权图中最短路径问题时所采用的方法和策略上。以下是对Dijkstra算法高效性的详细解释&#xff1a; 贪心策略&#xff1a; Dijkstra算法基于贪心原理&#xff0c;在每一步中总是选择具有最小暂定距离的节点。这种策略保证了算法首先探索一…

计算机组成原理(六)

0x12345678和12345678H都是指同一个十六进制,也就是12345678&#xff0c;不过是不同的编程语言的写法而已 具体来说&#xff0c;如果有 n 根地址线&#xff0c;计算机可以寻址的内存空间大小是 2^n 字节。 24根地址线&#xff1a; 如果一个系统有24根地址线&#xff0c;意味着它…

Codeforces Round 952 (Div. 4)

题解写到博客园了&#xff0c;懒得复制过来了了&#xff0c;放个链接 https://www.cnblogs.com/yxcblogs/p/18243276 推广一下自己记录的算法编程竞赛模板仓库 GitHub - yxc-s/programming-template: This repository contains C programming templates optimized for competi…

汇编程序设计之 位操作指令、顺序程序设计

文章目录 位操作类指令逻辑运算指令NOTORANDXORTEST 移位指令逻辑移位算数移位循环移位指令 处理机控制类指令顺序结构程序设计概念例子 位操作类指令 逻辑运算指令 NOT OR 对于每一个位&#xff0c;有1即为1 AND 同时为1才是1 XOR 不相同才为1 TEST 和and 一样的功能&…

postman接口测试工具详解

Postman是一款非常流行的API开发和测试工具&#xff0c;它不仅适用于测试人员&#xff0c;也广泛被开发者使用。Postman提供了全面的功能&#xff0c;能够帮助用户构建、测试、修改和监控API。以下是关于Postman接口测试工具的一些关键功能和使用步骤的详解&#xff1a; 功能概…

RK3568技术笔记六 新建 Ubuntu Linux 虚拟机

VMware 安装完成后&#xff0c;启动 VMware 软件。启动后在 VMware 主界面点击“创建新的虚拟机”。如下图所示&#xff1a; 开始对新建的虚拟机进行设置。选择“自定义”&#xff0c;然后点击“下一步”。如下图所示&#xff1a; 使用默认配置&#xff0c;单击“下一步”。如下…

PyTorch -- 最常见激活函数的选择

首先&#xff0c;简单复习下什么是梯度&#xff1a;梯度是偏微分的集合 举例说明&#xff1a;对于 z y 2 − x 2 : ∇ z ( ∂ z ∂ x , ∂ z ∂ y ) &#xff08; 2 x , 2 y &#xff09; z y^2-x^2: \nabla z (\frac{\partial z}{\partial x}, \frac{\partial z}{\partia…

夏日炎炎 水域守护:北斗守护安全防线——为生命撑起智能保护伞

随着夏季的来临&#xff0c;炎热的天气让许多人纷纷寻求水的清凉。清凉的河流与广阔的海域成为了不少人消暑降温的向往之地。然而&#xff0c;私自下河、下海的行为却暗藏着巨大的安全隐患&#xff0c;每年夏季溺水事故频发&#xff0c;给无数家庭带来不可挽回的悲痛。为有效遏…

规模弹性: 管理谷歌的TPUv4机器学习超级计算机

摘要 TPUv4&#xff08;张量处理单元&#xff09;是谷歌用于机器学习训练的第三代加速器&#xff0c;采用定制的三维环形互连&#xff0c;部署为 4096 节点的超级计算机。在本文中&#xff0c;我们将介绍设计和运行软件基础设施的经验&#xff0c;这些软件基础设施使 TPUv4 超…