crakeme ----- figue3b writeup

首先运行小程序,观察下有什么可以利用的特征。

crakeme ----- figue3b writeup_第1张图片

很显然是一个典型的crakeme.下面拖进OD

由于有输入框,一般在函数getdlgtextA下断,如下

crakeme ----- figue3b writeup_第2张图片分析知道,name长度最小8,而serial的长度一直是8

继续跟踪,找到关键算法段

crakeme ----- figue3b writeup_第3张图片

 尤其注意到在ds:[0x402038]位置是一个常量串(可以多尝试),算法比较简单,直接给出破解源码

#include
using namespace std;
char find_s[]="figugegl";
int main()
{
    string name;
    cout<<"Enter your name(at least 8 bytes): ";
    cin>>name;

    int len=8;
    int k=7;
    int index;
    char serial[20];
    char temp;
    for(int i=0;i

python 脚本

name = input("Enter your name: ")
base_find = "figugegl"
serial = ''

for i in range(0, 8):
    temp = ord(name[i])
    temp ^= ord(base_find[7 - i])
    serial += base_find[temp % 8]
print(serial)

就这样咯.....继续干........加油

你可能感兴趣的:(CTF)