BMZCTF-RE-Simulator_ctf simulator-程序员宅基地

技术标签: RE  CTF  逆向  

BMZCTF-RE-Simulator

发现程序有那么点陌生.obj文件,没见过。。。。。

在这里插入图片描述
查了一下资料发现,这是L3C,而且题目也给了Hint(Study 《Introduction to Computer System》 carefully,the format of flag is xmctf{})
查了下这本书的资料,发现要下载 LC3Edit
用来编写LC3的软件

工具的介绍

在这里插入图片描述
在这里插入图片描述

关键代码

ps:程序中有几条指令要注意
BRZ 是跳转,类似汇编中的j…(z)
BR也会判断几个标志位分别是Z,N,P。
条件变化方式与普通汇编基本相同
BRNZP是无条件跳转类似jmp

其实代码很少 意思就是 每次取两个字符进行异或,然后跟内存里面的数据进行比较,正确就进行下一次的比较,错误就跳出

但是可以整理下执行流程

data=[19, 1, 0, 20, 0, 0, 19, 2, 1, 20, 1, 1, 19, 3, 2, 20, 2, 2, 19, 4, 3, 20, 3, 3, 19, 5, 4, 20, 4, 4, 19, 6, 5, 20, 5, 5, 19, 7, 6, 20, 6, 6, 19, 8, 7, 20, 7, 7, 19, 9, 8, 20, 8, 8, 19, 10, 9, 20, 9, 9, 19, 11, 10, 20, 10, 10, 19, 12, 11, 20, 11, 11, 19, 13, 12, 20, 12, 12, 19, 14, 13, 20, 13, 13, 19, 15, 14, 20, 14, 14, 19, 16, 15, 20, 15, 15, 19, 17, 16, 20, 16, 16, 19, 18, 17, 20, 17, 17, 19, 19, 18, 20, 18, 18, 19, 20, 19, 20, 19, 19, 19, 21, 20, 20, 20, 20, 19, 22, 21, 20, 21, 21, 19, 23, 22, 20, 22, 22, 19, 24, 23, 20, 23, 23, 20, 24, 24]
res=[108, 15, 80, 108, 110, 66, 44, 44, 30, 12, 13, 0, 51, 61, 23, 1, 43, 60, 12, 2, 29, 28, 9, 17, 17]
print(len(data))
input=list(map(ord,"7654321987654321987654321"))
i=0
while i<147:
    if data[3*i]==19:
        R1=data[3*i+1]
        R6=input[R1]
        R1=data[3*i+2]
        R5=R1
        R7=input[R1]
        print(hex(R6),hex(R7))
        R0=(~R6)&R7
        R1=(~R7)&R6
        R0=R0+R1
        # print(R0)
        input[R5]=R0
        i+=3
        continue
    if data[3*i]==20:
        R1=data[3*i+1]
        R6=R1
        R1=data[3*i+2]
        R5=0x18-R1
        R0=input[R6]
        R1=res[R5]
        if R0==R1: 
            print("okkk")
        else:
            print("error")
        i+=3
        continue

res 是储存结果集的地方

那么我们就可编写flag

res=[108, 15, 80, 108, 110, 66, 44, 44, 30, 12, 13, 0, 51, 61, 23, 1, 43, 60, 12, 2, 29, 28, 9, 17, 17]
i=1
flag=[108]
print(chr(108),end='')

for i in range(1,len(res)):
    str = res[i] ^ flag[i-1]
    flag.append(str)
    print(chr(flag[i]),end="")

get flag

xmctf{lc3_1s_small_but_complete}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Henlenl/article/details/116190735

智能推荐

云服务器 ECS 建站教程:Drupal建站教程(CentOS7)-程序员宅基地

文章浏览阅读301次。Drupal建站教程(CentOS7)Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。它用于构造提供多种功能和服务的动态网站,能支持从个人博客到大型社区等各种不同应用的网站项目。本文主要说明如何在阿里云ECS上搭建Drupal电子商务网站。适用对象适用于熟..._drupal centos stream

libsvm svm-scale的学习和使用_svm-scale 对预测数据-程序员宅基地

文章浏览阅读4.3k次。在libsvm中svm-train和svm-predict使用最多,它们分别用来训练和预测,在以前的文章中我们有说明在此就不再多写,本文主要介绍svm-scale工具。 svm-scale主要用于对数据集进行缩放,对于很多训练数据,数据太分散,使用svm-scale处理之后数据相对集中一些。svm-scale有5个命令行参数:Usage: svm-scale [options] data_f_svm-scale 对预测数据

linux 运行python 看不到异常信息_解决 代码在本地pycharm可以正常运行,但是在linux服务器上找不到文件...-程序员宅基地

文章浏览阅读475次。在linux里与windows里可能是不同的,在linux里执行python命令 python main.py,这样在linux里当前执行路径是这个py文件所在的路径,即它只可以引用搜索在这个路径内的其他文件。我从github下载别人的一个代码,在自己的电脑上通过pycharm run的方式和通过terminal的方式都可以运行,由于在本地运行太慢,遂迁移到远程服务器上,但是发现再次python ..._linux服务器 python脚本 找不到文件 完美解决办法

python终端会话是指什么_进程组、会话、控制终端的概念及程序-程序员宅基地

文章浏览阅读1.1k次。将阐述Linux内核中的如下几个概念1) 进程组2) 会话3) 控制终端1.概念:a)进程组Shell 上的一条命令行形成一个进程组每个进程属于一个进程组每个进程组有一个领头进程进程组的生命周期到组中最后一个进程终止, 或加入其他进程组为止getpgrp: 获得进程组 id, 即领头进程的 pidsetpgid: 加入进程组和建立新的进程组前台进程组和后台进程组view plaincopy to ..._终端会话

JADE学习笔记2 :Agent的创建和运行_jade使用教程agent-程序员宅基地

文章浏览阅读4.9k次,点赞3次,收藏23次。运行第一个Agent程序_jade使用教程agent

【NPDP】大师级管理人物盘点:现代营销学之父-菲利普·科特勒_著名管理学者菲利普 科提勒在他的著作《内部市场化》-程序员宅基地

文章浏览阅读988次。现代营销学之父:菲利普·科特勒(Philip Kotler)菲利普·科特勒(1931年-)生于美国,是现代营销集大成者,被誉为“现代营销学之父”,任美国西北大学凯洛格管理学院终身教授,美国西北大学凯洛格管理学院国际市场学S·C·强生荣誉教授。美国管理科学联合市场营销学会主席,美国市场营销协会理事,营销科学学会托管人,管理分析中心主任,杨克罗维奇咨询委员会成员,哥白尼咨询委员会成员,中国GMC制造商联盟国际营销专家顾问。【生平经历】:菲利普·科特勒作为现代营销学之父,具有芝加哥大学经济学硕士和麻省理工_著名管理学者菲利普 科提勒在他的著作《内部市场化》

随便推点

QGIS:让数据随时间动起来_qgis 图追随更新-程序员宅基地

文章浏览阅读1.8k次。摘要时间是空间数据集的重要组成部分。比如在国土空间规划编制中历年的土地利用变迁,人口迁徙等。除位置信息外,时间可以使用另一个维度来分析和可视化数据。通过时间序列化的动态展示,呈现出来的数据肯定要比静态的更加直观,更加高大上。如果你有包含时间的数据集或者有多份和时间相关的数据,可以使用QGIS中的TimeManager插件轻松地将其可视化。 通过TimeManager,可以查看和导出..._qgis 图追随更新

运算符_faker运算符-程序员宅基地

文章浏览阅读125次。运算符运算符: 进行特定操作的符号 例如+表达式:用运算符连起来的式子叫做表达式 例如20+5,a+b四则运算 + - * /注意:对于整数表达式 除法用的是整除,整数除以整数,结果还是整数 只看商 ,不看余数。对于整数的除法来说 只有取模(%)才有余数的意义。一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的。加法对于数值 就是加法对于字符char 计算之前 char被提升为int 然后计算 详情查询前面的ASCII表和Unicode表字符串Stri_faker运算符

直挂云帆济沧海_怎样实现直挂云帆-程序员宅基地

文章浏览阅读732次。晚上看到新东方一篇:直挂云帆济沧海;不知何时才能实现。转眼来华为快一年了;部门最近搞一个“我来公司一年了”征文活动;确实有些感慨;上午晓元让我准备月报,我感觉是个机会。好好准备一下;还有和陈杰的沟通需要继续。下午杜渐的信又来了,搞了大半个下午,总算提交了。_怎样实现直挂云帆

git每个开发人员一个分支_每个开发人员都应该知道的10个Git命令-程序员宅基地

文章浏览阅读580次。git每个开发人员一个分支Git is an important part of daily programming (especially if you're working with a team) and is widely used in the software industry. Git是日常编程的重要组成部分(尤其是与团队合作时),并且在软件行业中得到广泛使用。 Since the..._git每人都创建一个分支

Xcode_7 iOS_9 集合视图_CollectionViewController Objective-C (9)_xcode collection viewcontroller 使用-程序员宅基地

文章浏览阅读682次。Xcode_7 iOS_9 集合视图_CollectionViewController Objective-C (9)_xcode collection viewcontroller 使用

博文尚美 轮播图小圆点的位置变化_轮播图下边的小圆点怎么移动位置-程序员宅基地

文章浏览阅读438次。小圆点css代码}.banner .banner-list{position: absolute;bottom: 20px ;left: 50%;transform: translateX(-50%);}如果将小圆点置于右上角则将名为.banner.-list的.banner .banner-list{position: absolute;top: 0 ;: 0;transform: translateX(-50%);..._轮播图下边的小圆点怎么移动位置

推荐文章

热门文章

相关标签