注册机偷懒写法1、之直接扣代码

最近学习破解,暴力破解固然很爽,但有时候不得不写出注册机才行,但是算法的分析有多时候会比整体程序的分析更麻烦更耗时间,所以我就想了一些方法可以避免对汇编算法的细致分析,和大家分享下。

注册机偷懒写法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
(出处: 吾爱破解论坛)
 

你可能感兴趣的:(注册机偷懒写法1、之直接扣代码)