brainfuck

/阅读这样的代码就像在强奸你的大脑

#include

#include

#include

char br[10000];

int main()

{

char *eip = br;

printf("请输入想解密的brainfuck代码\n");

scanf("%s",br);

printf("\n解密得到的flag\n\n");

char *mem = (char*)malloc(100);

char *ptr = mem;

bool isright = true;

while(*eip != 0)

{

if(*eip == ‘[‘)

{

while(*eip!=0 && *eip!=‘]‘)

++eip;

if(*eip == 0)

isright = false;

}

else if(*eip == ‘]‘)

isright = false;

if(!isright)

{

printf("The brainfuck code has some wrong!\n");

return 0;

}

++eip;

}

memset(ptr,0,100);

eip = br;

do

{

switch(*eip)

{

case ‘>‘:

++ptr;

break;

case ‘<‘:

--ptr;

break;

case ‘+‘:

++*ptr;

break;

case ‘-‘:

--*ptr;

break;

case ‘.‘:

putchar(*ptr);

break;

case ‘,‘:

*ptr = getchar();

break;

case ‘[‘:

if(*ptr == 0)

{

do

{

++eip;

}while(*eip!=‘]‘);

}

break;

case ‘]‘:

if(*ptr != 0)

{

do

{

--eip;

}while(*eip!=‘[‘);

}

break;

}

if( (ptr-mem)>100)

{

printf("Stack overflow!\n");

break;

}

++eip;

}while(*eip!=0);

free(mem);

return 0;

}

时间: 2024-08-02 23:10:28

brainfuck的相关文章

Brainfuck解释器(C#)

根据维基百科上的内容随手写的一个BF解释器,输入有两个参数——程序代码.输入流,返回内容为输出流.输入.输出均为字符串. 字符 含义 C语言替换 > 指针加一 ++ptr; < 指针减一 --ptr; + 指针指向的字节的值加一 ++*ptr; - 指针指向的字节的值减一 --*ptr; . 输出指针指向的单元内容(字符内码) putchar(*ptr); , 输入内容到指针指向的单元(字符内码) *ptr=getchar(); [ 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处

Brainfuck——BT的程序语言

        Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的.由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF. 这种语言由八种运算符构成,就象它的名字所暗示的,brainfuck程序很难读懂.虽然brainfuck的计算方式如此与众不同,但它确实能够正确运行.这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位.被初始化为零的数组.一个指向该数组的指针(初始时指向数组的

Brainfuck 编程语言

很偶然的机会认识到这个语言,当时在纸上对着它的 "hello world" 程序一个字符一个字符的解释了一遍,惊讶于它的设计思想.到网上查了下,记录下来. 以下是正文 : -------------------------------- Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的.由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF. Müller的目标是创建一种简单的.可以用最小的编

实验吧 BrainFuck

题目链接 下下来是一张图片,放到虚拟机里binwalk好像并没有什么东西,用winhex等工具打开也没有发现什么 再回到题目名称 BrainFuck 这个时候就要想到我们的bftools工具了 把下下来的图片放到bftools工具目录下,在当前目录进入cmd,键入如下命令 即可以得到一串base64 行吧,接下来就是你们想要问的bftools的下载链接咯~ 下载链接:https:pan.baidu.com/s/1Mo0FS_DVVXbcOgUtEQfclg   密码:i6xb 原文地址:http

Brain-Fuck编译器

用法详见这里 ___ 为了防止注释中出现关键字,添加了用一对大括号表示注释的功能(注意!这不是BrainFuck语言标准所定义的!),注释范围从{开始到第一个}结尾(注释中有右大括号请用\}) 如这个程序就是输入一行小写字母,并转化为大写字母输出: ,----------{判断是否为换行}[----------------------{转化成大写}.,----------] ,{延迟退出} 这个程序也是合法的: ,----------{判断是否为换行{1,2,3\}}[-------------

brainfuck 解释器

#include <cstdio>#include <cmath>#include <cstring>#include <ctime>#include <iostream>#include <algorithm>#include <set>#include <vector>#include <sstream>#include <queue>#include <typeinfo>

Brainfuck解析器(Python)

global cs global ip global ss #global sp global ds global bp global tab global out cs='++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.' ip = 0

Brainfuck反汇编(Pythone)

global cs global ip global ss #global sp global ds global bp global tab global out #cs='++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.' ip = 0

Brainfuck反汇编-高级版(Python)

import re def sym2cal(s): if '>' in s: return len(s) else: return -len(s) def cal(s): if '+' in s: return '+= %d'%len(s) else: return '-= %d'%len(s) def bf2asm(s,ptr,tab): p = 0 l = len(s) while(p<l): pattern = re.compile(r'([><]*)\[-([><