深大计系1实验四--点格棋
实验报告一、实验目的与要求使用LC3汇编语言实现点格棋,根据英文指导文档实现各各模块之后再组合。
什么是点格棋?
Dots and Boxes is a two-player game played on a variable-size grid of dots. For this assignment, the playing board is a 4x4 grid of dots, and the two players are denoted by two symbols: 1 and 2
简单来说,就是使用连接点与点之间来实现圈地的游戏,谁最后将某个方块圈起来,那个方块就归谁,一个方块记一分,直到4x4下16个方块全都有所属时游戏结束。
二、实验步骤与过程主要函数罗列:大体在main函数里实现以下几个函数:
1、print_map():打印每次下棋后的地图
2、display_prompt():更新玩家控制权,控制棋子坐标输入和退出游戏
3、is_input_valid():检测坐标输入是否合法
4、is_occupied():检测输入的坐标是否已经被之前输入的占用
5、app ...
背包问题
01背包问题01背包问题是最经典的背包问题,给定几个物品的价值和体积,给定背包容量,求解背包价值最值。
基础思想是构造一个动态规划数组,下标 i 表示可容纳的体积,值代表剩余 i 体积时,最大可存储的物品价值。
1234567891011121314151617181920#include<iostream>#include<algorithm>int f[100] = {0}, v[100], w[100];int main(){ int m, n; std::cin >> n >> m; for(int i = 1; i <= n; i++){ std::cin >> v[i] >> w[i]; } for(int i = 1; i <= n; i++){ for(int j = m; j >= v[i]; j--){ f[j] = std::m ...
深大计系2实验三
一、 实验目标:
理解程序函数调用中参数传递机制;
掌握缓冲区溢出攻击方法;
进一步熟练掌握GDB调试工具和objdump反汇编工具。
二、实验环境:
计算机(Intel CPU)
Linux 64位操作系统
GDB调试工具
objdump反汇编工具
三、实验内容
本实验设计为一个黑客利用缓冲区溢出技术进行攻击的游戏。我们仅给黑客(同学)提供一个二进制可执行文件bufbomb和部分函数的C代码,不提供每个关卡的源代码。程序运行中有3个关卡,每个关卡需要用户输入正确的缓冲区内容,否则无法通过管卡!
要求同学查看各关卡的要求,运用\GDB调试工具和objdump反汇编工具**,通过分析汇编代码和相应的栈帧结构,通过缓冲区溢出办法在执行了getbuf()函数返回时作攻击,使之返回到各关卡要求的指定函数中。第一关只需要返回到指定函数,第二关不仅返回到指定函数还需要为该指定函数准备好参数,最后一关要求在返回到指定函数之前执行一段汇编代码完成全局变量的修改。
实验代码bufbomb和相关工具(sendstring/makecookie)的更详细内容请参考“实验四 缓冲区溢出攻击实验.ppt ...
IDA里反编译后出现的宏
0x01 不同编译器下数据类型宏GNU123456789defined(__GNUC__) typedef long long ll; typedef unsigned long long ull; #define __int64 long long #define __int32 int #define __int16 short #define __int8 char #define MAKELL(num) num ## LL #define FMT_64 "ll"
_MSC_VER12345defined(_MSC_VER) typedef __int64 ll; typedef unsigned __int64 ull; #define MAKELL(num) num ## i64 #define FMT_64 "I64"
BORLANDC 123456defined (__BORLANDC__) typedef __int64 ll; typedef ...
超级简单排序刷题
P1271 【深基9.例1】选举学生会12345678910111213141516171819#include<iostream>int m, n, temp;int vote[1000];int main(){ std::cin >> n >> m; for(int i = 0; i < m; i++){ std::cin >> temp; vote[temp]++; } for(int i = 1; i <= n; i++){ while(vote[i]--){ std::cout << i << " "; } } return 0;}
P1177 【模板】排序排序题,写一个快排练练手(填进去后超时了)
查了一下资料发现经典快排是会超时的(以第一个作为标签元素)
123456789101 ...
【buuctf】DontEatMe
0x01反调试拿到Ntdll的模块句柄,从句柄中查找ZwSetInformationThread的地址,然后调用这个函数去检查当前线程是否处于Debug模式下
1234ModuleHandleA = GetModuleHandleA("Ntdll"); ZwSetInformationThread = GetProcAddress(ModuleHandleA, "ZwSetInformationThread"); CurrentThread = GetCurrentThread(); ((void (__stdcall *)(HANDLE, _DWORD, _DWORD, _DWORD))ZwSetInformationThread)(CurrentThread, 17, 0, 0);
关于ZwSetInformationThread的类型:
123456typedef NTSTATUS(NTAPI* pZwSetInformationThread)( IN HANDLE ThreadHandle, ...