笔记
傲娇追猎者i
我一定会成为你困难生活中的一点光亮✨
展开
-
BUUCTF刮开有奖wp
文件拖入IDA查看WinMain发现DialogFunc函数,跟进,F5查看伪C代码可以看到当输入的String是8位时会对String进行修改。继续向下会发现执行sub_4010F0函数,跟进。可以发现是一个修改String的函数,直接复制到C代码中并简单修改。由于转换后也要输出字符串,所以应使用char型数组来进行计算。运行得到转换后的结果。继续向下分析伪C代码。可以看到v4和v5在进行了sub_401000函数后,v4=’ak1w‘,v5=’V1Ax‘。跟进sub_401000函原创 2021-04-09 00:20:50 · 144 阅读 · 0 评论 -
BUUCTF-Reverse ex07 wp
将文件拖入ida,F5查看伪代码分析代码可知,输入的数据经过处理后与global值相等就是我们要求的flag,跟进flag可以看到一个偏移地址再跟进这个aFKWOXZUPFVMDGH可以得到一串字符串因为异或两次得原值,所以我们将global的值异或一次就可以得到我们需要输入的值,也就是要求的flag。根据之前的代码写出脚本。str1 = ['f' , 0x0A , 'k' , 0x0C , 'w' , '&' , 'O' , '.' , '@' , 0x11 , 'x' , 0x0D原创 2021-03-29 21:38:09 · 240 阅读 · 0 评论 -
upx命令行版本脱壳全过程
这是一个需要脱壳的文件,可以看到是加了upx壳的。首先打开cmd命令行。然后进入upx.exe所在的目录。代码如下:dir查看upx文件夹可以看到upx.exe,启动它。出现这样的界面就可以开始脱壳了。将需要脱壳的文件也放在upx文件夹内,我这里的样例是ceshi.exe使用代码upx -d 文件名这时候就脱壳成功了,把它再放进exeinfope看一下可以看到已经 提示Not packed。...原创 2021-03-28 15:51:09 · 7419 阅读 · 0 评论 -
AcWing 777.字符串乘方
for(int i=1;i<=len;i++){ flag=0; if(len%i!=0) continue; for(int j=0;j<len;j++){ if(s[j]!=s[j%i]){ flag=1; break; } } if(!flag){ cout<<len/i<<endl; break; } }根据题意可以判断通过字符串周期的方法来求解。原创 2021-03-10 23:24:34 · 168 阅读 · 0 评论 -
AcWing 774.最长单词
while(cin>>s[counter]) { counter++; x=getchar(); if(x=='\n') break; }cin不会读取空格,将输入的字符串依次存入字符数组中,回车结束输入。for(int i=0; i<counter; i++) { if(s[max].size()<s[i].size()) { if(i==counter-1) { if(s[max].size()<s[i].size()-1)原创 2021-03-10 21:38:51 · 78 阅读 · 0 评论 -
单链表求和
在学习单链表的过程中,同过使用单链表求和,可以加深我们对于单链表和结构体的理解。代码及分析:#include <stdio.h>#include <stdlib.h>struct node{ int data; struct node *next;};typedef struct node linknode;typedef linknode *linklist;linklist creatlink(){ linklist head,tail,原创 2021-03-08 23:26:57 · 1202 阅读 · 0 评论 -
AcWing 756.蛇形矩阵(模拟法)
代码:#include <iostream>using namespace std;const int N = 110;int a[N][N];int main() { int m,n; int left=0,top=0; cin>>n>>m; int right=m-1,bottom=n-1; int k=1; while(left<=right||top<=bottom) { for(int i=left; i<=right原创 2021-03-08 22:30:07 · 103 阅读 · 0 评论 -
C++ 字符串读入方式
第一种(常用):#include <iostream>#include <cstring>using namespace std;int main(){ string a; getline(cin,a); cout<<a.size()<<endl; return 0;}第二种:#include <iostream>#include <cstring>using namespace s原创 2021-03-08 22:14:01 · 2681 阅读 · 0 评论 -
AcWing 753.平方矩阵 C++
题目描述:样例:根据上面的描述,我们可以知道一个全为1的矩阵从外圈到内圈不断缩小范围并且+1 就可以得到我们要的结果。例如1 1 1 1 11 2 2 2 11 2 3 2 11 2 2 2 11 1 1 1 1这个矩阵可以看做一个行和列均为5,值为1的矩阵由内到外不断+1而得到的。那么接下来我们就需要考虑 ,对于不同的行和列,我们一共需要加几次。由于我们初始已经为矩阵赋初值1,分析样例,在行和列为3和5(奇数)时,我们需要加上1次和2次(3/2,5/2次) 在行和列为4和6(偶数)时原创 2021-03-07 16:58:05 · 208 阅读 · 0 评论 -
C++求完全数
AcWing725.求完全数完全数定义:一个数除它本身以外的所有约数之和等于它本身。要求一个数是不是完全数首先要求出所给数的所有约数。 for(int i=2; i<X; i++) { if(X%i==0) sum=sum+i; //X是要求的数,sum是约数之和这段代码可以求出一个数的所有约数,但缺陷在于我们需要从1到这个数本身依次做一遍X%i的操作,在所给数过大时会超时,比如求666666是不是一个完全数。 for(int i=2; i<sqrt(X)原创 2021-03-05 22:55:37 · 4859 阅读 · 0 评论