- 博客(394)
- 收藏
- 关注
原创 042-crackme
6个字节的情况是这样,超过6个字节的话第3步经历循环1,每个ASCII xor 字符串长度2,前三个字节与 T(54) M(4D) G(47) 分别xor3,后三个的ASCII与前三个ASCII分别xor放到后三个字节中4,xor后的前三个字节必须是 0x4b 0x34 0x4e5,xor后三个字节中必须有一个是0x20 0x20后面的就是你显示到exe上的名字。
2023-06-27 08:55:06
119
原创 041-genocide1
这个算法就是取name字符串的ascii码值,除以0xA,如果得到的结果大于0xA,再除以0xA,就是每一个文本框里的值。
2023-06-26 09:15:40
112
原创 036-Andrnalin.2
算法:取name的每一个字符ascii进行相加,之后再与1234567890相乘,将其转为字符串,并将第4和第9个字符转为“-”。这题看了解析,好多函数不认识。
2023-06-24 22:07:43
103
原创 030-Acid_Bytes.4
先使用Exeinfo查壳,发现是UPX壳我们先使用ESP定律脱壳,得到脱壳后的程序利用OD附加该程序,字符串搜索关键引擎,找到关键位置,分析上下逻辑代码。这2段代码就是name,serial字符串,并且name字符串的长度不能小于6。继续分析,接下来的代码就是计算name字符串每一位的ascii码2之和。最后把上面计算出来的和+name字符串长度之和2 转化成字符串,再和serial字符串进行比较。
2023-06-23 15:38:59
60
原创 012-ACG-crcme1
用IDE查壳,发现没有壳,是Delphi程序字符串搜索关键位置,分析上下的逻辑代码显示获取用户名和密码字符串,计算用户名字符串每一位的ascii码和,但是每一位的ascii码不能小于0x20,之后再把和右移三位,异或0x515A5,入栈。分析第二段关键代码,发下就是判断密码字符串是不是[‘0’,‘9’]这个范围内,其实这段代码就是把密码字符串转化为数字保存在edi中,之后再异或0x87CA。
2023-06-22 08:53:42
70
原创 009-Boonz-KeygenMe#1
这个算法其实就是计算出来三个数字字符串,拼接成"Bon-%s-%s-%s"这种形式。第一个算法:i < nLen;i++)第二个算法:第三个算法:(是一个固定值)取每轮算法的计算结果值,进行上述拼接就是答案。0 };printf("字符串长度不对\n");return 0;i < nLen;i ++) {0 };//计算第二个字符串 int nEax = nEbx * nEbx;0 };
2023-06-21 19:45:50
99
原创 159-CRC32crackme
Exeinfo查壳,发现没有壳,是Delphi程序字符串搜索关键位置,分析上下的逻辑分析那个关键的call,是一个crc32算法。这题看了解析,给出KeyGen程序。
2023-06-21 08:48:28
76
原创 162-moons_kgme_1
首先使用Exeinfo查壳,发现是UPX壳我们使用OD附加程序,使用esp定律脱壳。得到脱壳后的程序。是Delphi程序。字符串搜索关键位置,分析上下代码。这个也比较简单,不给出总结,直接写出注册机。
2023-06-20 15:42:05
41
原创 147-Prolixe-KeygenMe#1
Exeinfo查壳,发现没有壳,是Delphi程序OD字符串搜索,找到关键位置,发现一个关键的call,和一个strcmp比较函数。进入关键call进行分析,结合IDA。分析这个call,发现输入的name字符串长度必须是偶数,否则最后构造的字符串会出现乱码,这里类似构造了一个汉字。但是当输入的字符串长度是奇数时。会出现乱码。我们根据关键call的逻辑,编写注册机程序。
2023-06-20 09:19:53
134
原创 148-Crackme#0704
我们使用DIE工具,发现程序是加了壳的。先进行脱壳操作,我们使用OD附加进程。使用ESP定律进行脱壳。F9执行,发现断在ntdll系统领空里。继续执行。多次执行之后。到达OEP处。之后,我们使用OllyDump脱壳工具,进行脱壳。脱壳成功,程序正常运行。我们字符串搜索搜到关键位置,往上分析。观察必须是local.6这个局部变量不能为0,程序才可以通过验证。而local.6是什么值由这个关键call决定。
2023-06-19 21:25:19
89
1
原创 145-CrackMe_5__by_thechaos
Exeinfo查壳,发现有.BJFnt壳。我们先进行脱壳,OD附加这个程序发现,代码段进行一些加密,字符串搜索也搜索不到关键字符串。我们单步调试这个壳,发现运行到一个位置,下面的代码发生了变化,猜测这个就是OEP。我们使用OllyDump脱壳,发现程序无法运行,之后再用lordPE进行查看,发现LordPe自动对它进行简单的修复,程序可以运行。继续使用OD附加程序。分析这段逻辑代码,我们可以知道把三个部分的数字部分总和加起来等于4078就可以通过验证。
2023-06-19 20:30:23
51
原创 139-crackme_n.3_by_COSTY
首先Exeinfo查看有没有壳,发现是VC++程序。首先我们字符串搜索,找到一些关键位置,往上分析。这段代码是判断我们输入的数字不能小于10000000。小于就会直接弹出错误框。继续往下分析。我们综合分析两段代码,发现我们必须让[ebp-0x10]一直为初始值0,所以分析第一段算法逻辑,我们可以知道这是一个判断程序是否是质数的逻辑,如果是质数,则只有1和数字本身这两个因子,不会转到给[ebp-0x10]赋值为1的操作,程序即可通过操作。我们编写注册机。
2023-06-18 21:56:37
83
原创 136-nago
这个算法就是把name字符串小于0x39的减去0x30,再放到另一个缓冲区地址里。当然如果一个都没有,转化后的字符串长度为0,直接无法通过验证。之后再把转换字符串每一位的ascii码取出来,经过一个计算的算法。我们可以设计一个随机的字符串,为了方便通过验证计算,字符串的所有字符都小于0x39,大于0,通过程序的单步调试发现,name字符串并不会太长,我们随机一个字符串长度,为10以内,通过逆向的思维,我们构造一个结果字符串,并且回推回去。
2023-06-18 09:28:07
204
原创 134-KGNME2-KiTo
这题其实也比较简单,就是把name字符串的每一位ascii码求和,转化位10进制数字字符串。注意name字符串的长度必须大于3。
2023-06-17 13:27:02
41
原创 121-bRaINbuSY-crackme1
这个算法就是把name字符串每一位的ascii码左移3位的和计算出来,再加上name字符串长度左移三位的值,最后再乘以4,这个数字就是serial字符串。
2023-06-17 09:14:14
44
原创 117-delphi-crackme
很简单的逻辑,取出字符串第一个字节的ascii码异或0xE,再取字符串的长度,把他们转化成十进制数字字符串,再进行拼接,就可以得到serial字符串。
2023-06-16 18:42:19
88
原创 070-CodeFantasy-crackme
这个crackme最好动静态结合,有些关键库函数需要IDA去识别。其实关键算法就是把输入的用户名字符串每一个位的ascii码加上(1+2+3+4)的和,然后然后转化为16进制数字字符串,就是密码字符串。
2023-06-16 09:37:12
76
原创 092-FaNtOm-crackme6
首先Exeinfo查壳,发现没有壳,观察是汇编语言程序字符串搜索,找到关键逻辑,其实是很简单的逻辑根据红框处构建key文件,就可以通过验证。
2023-06-16 09:23:02
49
原创 054-vcrkme01
综合分析上述代码,添加了很多冗余指令。核心算法就是:1.基于name字符串取第一个字节和最后一个字节 比如wanao构造成 w-O2.计算每个name字符串数组的字符的ascii总和+0x6064,转化为字符串添加到字符串末尾 w-O252103.再把25210这个计算出来的数+0x6064,转化为字符串添加到字符串末尾w-O25210-49886。
2023-06-16 09:05:21
64
原创 093-kesan
其实就是通过反编译工具和IDA,可以帮助我们更快的找到关键call和关键算法逻辑。算法其实就是把name字符串的每一个ascii异或和加上一个固定数字,最后再与一个数字进行异或。0 };printf("name字符串长度不对\n");return 0;i < nLen;i ++) {0 };return 0;
2023-06-16 08:52:45
48
原创 109-Jony-crackme
我们分析得到,有一个关键算法call,应该是根据name计算出serial字符串的算法,下方有一个数字转10进制字符串的过程。就是取出每次nEsi^2和nEsi ^2 -1的下标的字符串ascii码,进行按位或操作,再把结果和字符串长度相加。找到这个函数地址之后,我们配合IDA的静态分析,F5功能生成C语言代码,我们提前用Shift+F5添加Delphi函数的库函数识别,帮助我们更快的分析。我们OD附加这个程序,字符串搜索,找到关键的位置,分析附近的逻辑代码。结合OD,我们分析。
2023-06-16 08:16:56
70
原创 C. New Year and Curling
题意:已知一些圆在(xi,10100)(xi,10100)处,然后依次落下,下落时只要碰到某个圆,就会停止,求这些圆的最后的y值,也即是水平高度 参考大神的 代码:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>...
2018-06-21 21:49:25
196
原创 B. New Year and Buggy Bot(全排列)
题意:Bob设置了一个机器人,你可以给他下指令,机器人可以上下左右移动,但是Bob忘记了每个人指令所代表的含义,现在给出一串只有0,1,2,3的指令,让你求出在不同情况下,机器人可以从起点到达终点的方法的数量 基本思路:就是给每个数字分配不同的含义,比如说1是up,2是down,3是left,4是right,然后总共有24种情况,也就是4的全排列个数代码:#...
2018-06-21 13:25:02
236
原创 B. Nastya Studies Informatics
题解:有几个trick点 当我们暴力枚举x的因子时,最多枚举到1e5即可。 枚举一半即可 当另一个因子小于i时 退回循环即可。 注意(a,b)当a=b时相等。代码:#include <bits/stdc++.h>using namespace std;typedef long long LL;int main(){ LL l,r,x,...
2018-06-20 10:04:32
226
原创 B. Knights of a Polygonal Table multiset
题解:将骑士按力量从小到大排序,到第i个骑士的时候,前面的i-1个骑士他都可以击败,找出金币最多的k个。用multiset存金币最多的k个骑士的金币数,如果多余k个,则删除金币数最小的,直到只有k个数字。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;int ...
2018-06-19 09:20:06
171
原创 B. Substrings Sort STL
B. Substrings Sort time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output You are given n n strings. Each string consists of lowercase English...
2018-06-09 19:35:18
204
原创 B. Bus of Characters
题意:introvert 内向的 extrovert外向的 一辆公交有n排座位,每排座位有两个椅子。接着给出每排座位的宽度。这时有2*n个人要上车,这群人有两种类型。1、内向的人:会优先选择座位宽度最小的那排就坐,最好旁边是没人的。2、外向的人:会优先选择座位旁边有人(内向的人)的那排就坐,在此基础上座位选择越大越好。题解:对weight数组进行排序。 ...
2018-05-30 18:45:26
400
原创 B. Christmas Spruce
Consider a rooted tree. A rooted tree has one special vertex called the root. All edges are directed from the root. Vertex u is called a child of vertex v and vertex v is called a parent of vertex u i...
2018-05-18 19:57:40
166
转载 【整理】C++中的unique函数
之前总结了一下我觉得有用的erase,lower_bound,upper_bound。现在总结一下unique,unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址,下面举个例子。由于返回的是容器末尾,所以如果想得到去重后的size,需要减去初始地址,lower_bound是得到地址,稍微不...
2018-05-03 11:19:54
614
原创 51nod 拼成最小的数 STL技巧
1097 拼成最小的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 设有n个正整数,将它们联接成一排,组成一个最小的多位整数。例如: n=2时,2个整数32,321连接成的最小整数为:32132, n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355 Input 第1行:1个数N。(2 <= N <=
2018-04-08 10:06:35
167
原创 51nod 1060 求n以内的因子最多的数(不止一个则取最小)
1060 最复杂的数基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 把一个数的约数个数定义为该数的复杂程度,给出一个n,求1-n中复杂程度最高的那个数。 例如:12的约数为:1 2 3 4 6 12,共6个数,所以12的复杂程度是6。如果有多个数复杂度相等,输出最小的。 Input 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <=
2018-04-07 10:28:26
612
原创 hdu 1829 种类并查集
Problem Description Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different genders and that they only interact with bugs
2018-03-29 11:22:53
169
原创 hdu 1728 bfs变形
Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程中,不
2018-03-27 10:38:38
222
原创 51nod 1065 最小正子段和
1065 最小正子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 N个整数组成的序列a[1],a[2],a[3],…,a[n],从中选出一个子序列(a[i],a[i+1],…a[j]),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的。 例如:4,-1,5,-2,-1,2,6,-2。-1,5,-2,-1,序列和为1,是最小的。
2018-03-18 20:41:12
159
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人