新手破解练习Crackme160之054 - eKH.1

  1. 暴力破解, OD加载搜索关键字定位到00427BAC, 找到入口第一个关键跳00427B73, 改为jmp 00427BC3直接跳到成功分支, 保存, 搞定~

  2. 正常破解, 按钮入口处00427B44下断点, 输入用户名abcde注册码12345开始单步分析算法,
    1). 用户名每一位值加起来左移8,
    2). 从固定串"LANNYDIBANDINGINANAKEKHYANGNGENTOT" 按位取出与用户名每一位异或
    3). 小于0就乘以-1转为正数, 大于等于0就继续下一位
    4). 循环完与0x12345678异或
    5). 结果转10进制并计算长度
    6). ecx = 0xA
    7). eax /= ecx
    8). 从固定串"LANNY5646521"中(从10进制数的低位到高位取一位当位置值)取一位数
    9). 取出值存起来
    10). eax /=ecx, 循环6).~10).
    11). 得到与10位数一样位数的字符串, (调试时我已经迫不急待的把这个当系列号输入测试了, 结果是喜人的)
    12). 与系列号对比
    13). ebx = 0x12D691(失败) / 0xBC614E(成功)
    到此, 算法分析完了, 开始写注册机了: keygen.c

#include <stdio.h>
#include "string.h"

int main() {
	char *str1 = "LANNYDIBANDINGINANAKEKHYANGNGENTOT";
	char *str2 = "LANNY5646521";
	char user[20] = {0};
	printf("请输入用户名: ");
	scanf("%s", user);
	int len = strlen(user);
	int eax = 1, ebx = 0;
	char s;
	for(int i=0; i<len; i++){
		ebx += user[i];
		if(ebx < 0) { ebx *= -1; }
		ebx = ebx << 0x8;
		s = *(str1+i);
		ebx = ebx | s;
		if(ebx < 0) { ebx *= -1; }
	}
	ebx ^= 0x12345678;
	char rlt[20];
	sprintf(rlt, "%d", ebx);
	len = strlen(rlt);
	for(int i=len-1; i>=0; i--){
		user[len-1-i] = *(str2 + rlt[i] - '0');
	}
	user[len] = 0;
 	printf("系列号为: %s\n\n按任意键继续~", user);
 	getchar();getchar();
    return 0;
}

这是160个软件part1
这是160个软件part2

1~160每个破解过程,在吾爱破解论坛都有高手破解过了,也有整理好现成的, 我这边主要就是自己动手操作的过程,与他们的不太一样
附上高手们的连接: 点击前往查看
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载

新人入门教程"玩玩破解,写给新人看" 点击前往查看
我就是从这里开始的,对我这样的小白感觉超级友好~

下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~
OD界面布局

posted @ 2024-05-16 14:09  hankerstudio  阅读(8)  评论(0)    收藏  举报