最近学习破解,暴力破解固然很爽,但有时候不得不写出注册机才行,但是算法的分析有多时候会比整体程序的分析更麻烦更耗时间,所以我就想了一些方法可以避免对汇编算法的细致分析,和大家分享下。
注册机偷懒写法1、之直接扣代码
注册机偷懒写法2、之直接调用源程序的函数
注册机偷懒写法3、内联Hook让程序自己弹出注册码
注册机偷懒写法4、调试模式下获取
如果不涉及到函数的调用,以及一些前置的动态变量,可以直接从源程序中勾出关键算法的汇编代码稍作修改就可以做注册机了。
#include
/*
如果不涉及到函数的调用,以及一些前置的动态变量,可以直接从源程序中勾出关键算法的汇编代码稍作修改就可以做注册机了
*/
int main()
{
char name[20] = { 0 };
scanf_s("%s", name, sizeof(name));
int len = strlen(name);
if (len < 6)
{
printf("Der Name muss min. 6 Zeichen lang sein\n");
}
else
{
int num1, num2;
__asm
{
xor eax, eax
dope2112_1_421bf4:
xor edx, edx
mov dl, al
lea ecx,[name]
movzx edx, byte ptr ds : [ecx + edx - 1]
add edx, 0xffffff9f
cmp edx, 0x19
ja dope2112_1_421ce3
jmp dword ptr ds : [edx * 4 + 421c13h]
//莫名数据开始
jnp dope2112_1_421c31
inc edx
add byte ptr ds : [edi + 0x1c], bh
inc edx
add byte ptr ds : [ebx - 0x78ffbde4], al
sbb al, 0x42
add byte ptr ds : [ebx - 0x70ffbde4], cl
dope2112_1_421c31:
sbb al, 0x42
add byte ptr ds : [ebx - 0x68ffbde4], dl
sbb al, 0x42
add byte ptr ds : [ebx - 0x60ffbde4], bl
sbb al, 0x42
add byte ptr ds : [ebx - 0x58ffbde4], ah
sbb al, 0x42
add byte ptr ds : [ebx - 0x50ffbde4], ch
sbb al, 0x42
add byte ptr ds : [ebx - 0x48ffbde4], dh
sbb al, 0x42
add byte ptr ds : [ebx - 40ffbde4h], bh
sbb al, 0x42
add bl, al
sbb al, 0x42
add bh, al
sbb al, 0x42
add bl, cl
sbb al, 0x42
add bh, cl
sbb al, 0x42
add bl, dl
sbb al, 0x42
add bh, dl
sbb al, 0x42
add bl, bl
sbb al, 0x42
add bh, bl
sbb al, 0x42
add byte ptr ds : [edx - 0x4d9914e8], dh
and eax, 0x42b262eb
//莫名数据结束
jmp dope2112_1_421ce5
mov dl, 0xc
jmp dope2112_1_421ce5
mov dl, 0xd
jmp dope2112_1_421ce5
mov dl, 0x6
jmp dope2112_1_421ce5
mov dl, 0x36
jmp dope2112_1_421ce5
mov dl, 0x2b
jmp dope2112_1_421ce5
mov dl, 0x17
jmp dope2112_1_421ce5
mov dl, 0x2f
jmp dope2112_1_421ce5
mov dl, 0x13
jmp dope2112_1_421ce5
mov dl, 0x82
jmp dope2112_1_421ce5
mov dl, 0x9b
jmp dope2112_1_421ce5
mov dl, 0x92
jmp dope2112_1_421ce5
mov dl, 0x3
jmp dope2112_1_421ce5
mov dl, 0x63
jmp dope2112_1_421ce5
mov dl, 0x21
jmp dope2112_1_421ce5
mov dl, 0x42
jmp dope2112_1_421ce5
mov dl, 0x5c
jmp dope2112_1_421ce5
mov dl, 0x29
jmp dope2112_1_421ce5
mov dl, 0xc7
jmp dope2112_1_421ce5
mov dl, 0x66
jmp dope2112_1_421ce5
mov dl, 0x58
jmp dope2112_1_421ce5
mov dl, 0xa
jmp dope2112_1_421ce5
mov dl, 0x28
jmp dope2112_1_421ce5
mov dl, 0x50
jmp dope2112_1_421ce5
dope2112_1_421ce3:
mov dl, 5dh
dope2112_1_421ce5 :
add bl, dl
inc eax
cmp al, 0x6
jne dope2112_1_421bf4
//lea edx, [ebp - 0x10]
xor eax, eax
mov al, byte ptr ss : [len]
imul eax, eax, 0x4A7E
mov num1, eax
//lea edx, dword ptr ss : [ebp - 0x1C]
xor eax, eax
mov al, bl
mov num2,eax
}
printf("%d-%d", num2, num1);
}
return 0;
}
源码
https://download.csdn.net/download/u012332009/11122063
源程序的分析请看
[反汇编练习] 160个CrackMe之044
(出处: 吾爱破解论坛)