吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6278|回复: 6
收起左侧

[原创] [反汇编练习] 160个CrackMe之044

  [复制链接]
china豪 发表于 2015-3-22 15:13
[反汇编练习] 160CrackMe044
首先声明一下,可能很多新手说为什么我发的帖子会跳过好多CM,原因很简单,要么就是CM跟之前的破解方法一样,没有什么新东西,发帖子没什么意义,还有的就是我的能力不够,例如:CM39(好像加了asp壳,我通过打补丁可以爆破按钮,但是还有一个图片按钮验证,感觉好乱。。。)CM41(修补程序。为程序添加代码。。。其实也不是很难,但是懒得做。。。)
那给大家带来CM44的教程,那就意味着肯定会教给大家一些新东西(对于新手来说是新东西!!大牛勿较真啊!)。
那教程开始!
1.   首先明确破解目的。打开程序,什么都不输入,点击REG..,下面的提示“Der Name muss min. 6 Zeichen lang sein”(名称必须为6个字符。德语)。查一下壳,无壳delphi写的。
1.png
2.   DeDe神器打开CM试试。发现无法反汇编。。。。。。
3.   今天用一种新方法试试:用另一款神器WinHex。。。打开CMctrl+f 搜索Button,如图所示:
2.png
F3向下搜索,直到找到向上图所示ButtonClick字符串,在这里解释一下为什么搜索“Button”关键字,原因其实很简单,就是经常编程的人都知道,习惯给各个组件命名的时候都会加上组件类型的名字:例如Button1 EditText_name 。。。
4.   找到上图所示字符串后请看下图图解:
3.png
5.   找到按钮点击的事件地址了!那么OD载入CM,ctrl+g跳到00421b84中,看OD代码
4.png
5.png
6.png
6.   保存程序。运行试试吧。
7.png
7.教程结束,谢谢大家!(温馨提示:评分不扣分哦!每天都有免费的评分次数,人人献出一点评分,楼主才会更有动力。。^_^


点评

算法注册机在5-6楼,就不发贴了。  发表于 2017-12-14 20:12

免费评分

参与人数 1热心值 +1 收起 理由
無涯 + 1 加油加油~~~

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pk8900 发表于 2017-12-14 19:28
本帖最后由 pk8900 于 2017-12-14 20:17 编辑

算法部分:
[Asm] 纯文本查看 复制代码
00421BCF | E8 90 17 FE FF            | call <dope21.sub_403364>                    |
00421BD4 | 88 45 EF                  | mov byte ptr ss:[ebp-0x11], al              |
00421BD7 | 80 7D EF 06               | cmp byte ptr ss:[ebp-0x11], 0x6             |
00421BDB | 73 15                     | jae dope21.421BF2                           | 用户名必须6位以上
00421BDD | 8B 86 C0 01 00 00         | mov eax, dword ptr ds:[esi+0x1C0]           |
00421BE3 | BA A8 1D 42 00            | mov edx, <dope21.sub_421DA8>                | 421DA8:"Der Name muss min. 6 Zeichen lang sein"
00421BE8 | E8 3B FC FE FF            | call dope21.411828                          |
00421BED | E9 72 01 00 00            | jmp dope21.421D64                           |
00421BF2 | 33 C0                     | xor eax, eax                                |
00421BF4 | 33 D2                     | xor edx, edx                                | EDX逐个取字符
00421BF6 | 8A D0                     | mov dl, al                                  | EBX:累加字节运算
00421BF8 | 8B 4D FC                  | mov ecx, dword ptr ss:[ebp-0x4]             | ecx:用户名指针
00421BFB | 0F B6 54 11 FF            | movzx edx, byte ptr ds:[ecx+edx-0x1]        | 从用户名前一个字符开始:一般为\0空字符
00421C00 | 83 C2 9F                  | add edx, 0xFFFFFF9F                         | edx=edx + 0xFFFFFF9F(-97)
00421C03 | 83 FA 19                  | cmp edx, 0x19                               |
00421C06 | 0F 87 D7 00 00 00         | ja dope21.421CE3                            | 大于0x19则跳至最后一个
00421C0C | FF 24 95 13 1C 42 00      | jmp dword ptr ds:[edx*4+0x421C13]           | 根据跳转表进行选择跳转
00421C13 | 7B 1C 42 00               | dd 421C7B                                   |
00421C17 | 7F 1C 42 00               | dd 421C7F                                   |
00421C1B | 83 1C 42 00               | dd 421C83                                   |
00421C1F | 87 1C 42 00               | dd 421C87                                   |
00421C23 | 8B 1C 42 00               | dd 421C8B                                   |
00421C27 | 8F 1C 42 00               | dd 421C8F                                   |
00421C2B | 93 1C 42 00               | dd 421C93                                   |
00421C2F | 97 1C 42 00               | dd 421C97                                   |
00421C33 | 9B 1C 42 00               | dd 421C9B                                   |
00421C37 | 9F 1C 42 00               | dd 421C9F                                   |
00421C3B | A3 1C 42 00               | dd 421CA3                                   |
00421C3F | A7 1C 42 00               | dd 421CA7                                   |
00421C43 | AB 1C 42 00               | dd 421CAB                                   |
00421C47 | AF 1C 42 00               | dd 421CAF                                   |
00421C4B | B3 1C 42 00               | dd 421CB3                                   |
00421C4F | B7 1C 42 00               | dd 421CB7                                   |
00421C53 | BB 1C 42 00               | dd 421CBB                                   |
00421C57 | BF 1C 42 00               | dd 421CBF                                   |
00421C5B | C3 1C 42 00               | dd 421CC3                                   |
00421C5F | C7 1C 42 00               | dd 421CC7                                   |
00421C63 | CB 1C 42 00               | dd 421CCB                                   |
00421C67 | CF 1C 42 00               | dd 421CCF                                   |
00421C6B | D3 1C 42 00               | dd 421CD3                                   |
00421C6F | D7 1C 42 00               | dd 421CD7                                   |
00421C73 | DB 1C 42 00               | dd 421CDB                                   |
00421C77 | DF 1C 42 00               | dd 421CDF                                   |
00421C7B | B2 18                     | mov dl, 0x18                                | 将这些数据保存可用于做出注册机
00421C7D | EB 66                     | jmp dope21.421CE5                           |
00421C7F | B2 25                     | mov dl, 0x25                                | 25:'%'
00421C81 | EB 62                     | jmp dope21.421CE5                           |
00421C83 | B2 42                     | mov dl, 0x42                                | 42:'B'
00421C85 | EB 5E                     | jmp dope21.421CE5                           |
00421C87 | B2 0C                     | mov dl, 0xC                                 | C:'\f'
00421C89 | EB 5A                     | jmp dope21.421CE5                           |
00421C8B | B2 0D                     | mov dl, 0xD                                 | D:'\r'
00421C8D | EB 56                     | jmp dope21.421CE5                           |
00421C8F | B2 06                     | mov dl, 0x6                                 |
00421C91 | EB 52                     | jmp dope21.421CE5                           |
00421C93 | B2 36                     | mov dl, 0x36                                | 36:'6'
00421C95 | EB 4E                     | jmp dope21.421CE5                           |
00421C97 | B2 2B                     | mov dl, 0x2B                                | 2B:'+'
00421C99 | EB 4A                     | jmp dope21.421CE5                           |
00421C9B | B2 17                     | mov dl, 0x17                                |
00421C9D | EB 46                     | jmp dope21.421CE5                           |
00421C9F | B2 2F                     | mov dl, 0x2F                                | 2F:'/'
00421CA1 | EB 42                     | jmp dope21.421CE5                           |
00421CA3 | B2 13                     | mov dl, 0x13                                |
00421CA5 | EB 3E                     | jmp dope21.421CE5                           |
00421CA7 | B2 82                     | mov dl, 0x82                                |
00421CA9 | EB 3A                     | jmp dope21.421CE5                           |
00421CAB | B2 9B                     | mov dl, 0x9B                                |
00421CAD | EB 36                     | jmp dope21.421CE5                           |
00421CAF | B2 92                     | mov dl, 0x92                                |
00421CB1 | EB 32                     | jmp dope21.421CE5                           |
00421CB3 | B2 03                     | mov dl, 0x3                                 |
00421CB5 | EB 2E                     | jmp dope21.421CE5                           |
00421CB7 | B2 63                     | mov dl, 0x63                                | 63:'c'
00421CB9 | EB 2A                     | jmp dope21.421CE5                           |
00421CBB | B2 21                     | mov dl, 0x21                                | 21:'!'
00421CBD | EB 26                     | jmp dope21.421CE5                           |
00421CBF | B2 42                     | mov dl, 0x42                                | 42:'B'
00421CC1 | EB 22                     | jmp dope21.421CE5                           |
00421CC3 | B2 5C                     | mov dl, 0x5C                                | 5C:'\\'
00421CC5 | EB 1E                     | jmp dope21.421CE5                           |
00421CC7 | B2 29                     | mov dl, 0x29                                | 29:')'
00421CC9 | EB 1A                     | jmp dope21.421CE5                           |
00421CCB | B2 C7                     | mov dl, 0xC7                                |
00421CCD | EB 16                     | jmp dope21.421CE5                           |
00421CCF | B2 66                     | mov dl, 0x66                                | 66:'f'
00421CD1 | EB 12                     | jmp dope21.421CE5                           |
00421CD3 | B2 58                     | mov dl, 0x58                                | 58:'X'
00421CD5 | EB 0E                     | jmp dope21.421CE5                           |
00421CD7 | B2 0A                     | mov dl, 0xA                                 | A:'\n'
00421CD9 | EB 0A                     | jmp dope21.421CE5                           |
00421CDB | B2 28                     | mov dl, 0x28                                | 28:'('
00421CDD | EB 06                     | jmp dope21.421CE5                           |
00421CDF | B2 50                     | mov dl, 0x50                                | 50:'P'
00421CE1 | EB 02                     | jmp dope21.421CE5                           |
00421CE3 | B2 5D                     | mov dl, 0x5D                                | 5D:']'
00421CE5 | 02 DA                     | add bl, dl                                  | BL累加
00421CE7 | 40                        | inc eax                                     |
00421CE8 | 3C 06                     | cmp al, 0x6                                 | 用户名前5个字符
00421CEA | 0F 85 04 FF FF FF         | jne dope21.421BF4                           |
00421CF0 | 8D 55 F0                  | lea edx, dword ptr ss:[ebp-0x10]            |
00421CF3 | 33 C0                     | xor eax, eax                                |
00421CF5 | 8A 45 EF                  | mov al, byte ptr ss:[ebp-0x11]              | ebp-11 位数
00421CF8 | 69 C0 7E 4A 00 00         | imul eax, eax, 0x4A7E                       | 位数*0x4A7E转十进制字符
00421CFE | E8 71 36 FE FF            | call <dope21.sub_405374>                    |
00421D03 | 8D 55 E4                  | lea edx, dword ptr ss:[ebp-0x1C]            |
00421D06 | 33 C0                     | xor eax, eax                                |
00421D08 | 8A C3                     | mov al, bl                                  |
00421D0A | E8 65 36 FE FF            | call <dope21.sub_405374>                    | BL累加值转十进制字符
00421D0F | FF 75 E4                  | push dword ptr ss:[ebp-0x1C]                | [ebp-1C]:"245"
00421D12 | 68 D8 1D 42 00            | push dope21.421DD8                          | 421DD8:L"-"
00421D17 | FF 75 F0                  | push dword ptr ss:[ebp-0x10]                |
00421D1A | 8D 45 F4                  | lea eax, dword ptr ss:[ebp-0xC]             |
00421D1D | BA 03 00 00 00            | mov edx, 0x3                                |
00421D22 | E8 FD 16 FE FF            | call <dope21.sub_403424>                    | 用 - 连起来
00421D27 | 8D 55 E8                  | lea edx, dword ptr ss:[ebp-0x18]            |
00421D2A | 8B 86 B0 01 00 00         | mov eax, dword ptr ds:[esi+0x1B0]           |
00421D30 | E8 C3 FA FE FF            | call <dope21.sub_4117F8>                    |

取用户名(存储位置)前一个字符(大多为\0,空字符)开始,+0x97,若大于0x19则跳到最尾,+0x5D,就这样一直累加用户名前5个字符,比如最后为0xAA,转为10进制字符为:170,然后是位数乘0x4A7E,再转为十进制字符,比如为123456,则注册码为170-123456
不是道作者是不是故意写错代码的。
pk8900 发表于 2017-12-14 20:08
C++注册机代码:
[C++] 纯文本查看 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
void main()
{
	unsigned char base[] = {
		0x70, 0x18, 0xEB, 0x66, 0xB2, 0x25, 0xEB, 0x62, 0xB2, 0x42, 0xEB, 0x5E, 0xB2, 0x0C, 0xEB, 0x5A,
		0xB2, 0x0D, 0xEB, 0x56, 0xB2, 0x06, 0xEB, 0x52, 0xB2, 0x36, 0xEB, 0x4E, 0xB2, 0x2B, 0xEB, 0x4A,
		0xB2, 0x17, 0xEB, 0x46, 0xB2, 0x2F, 0xEB, 0x42, 0xB2, 0x13, 0xEB, 0x3E, 0xB2, 0x82, 0xEB, 0x3A,
		0xB2, 0x9B, 0xEB, 0x36, 0xB2, 0x92, 0xEB, 0x32, 0xB2, 0x03, 0xEB, 0x2E, 0xB2, 0x63, 0xEB, 0x2A,
		0xB2, 0x21, 0xEB, 0x26, 0xB2, 0x42, 0xEB, 0x22, 0xB2, 0x5C, 0xEB, 0x1E, 0xB2, 0x29, 0xEB, 0x1A,
		0xB2, 0xC7, 0xEB, 0x16, 0xB2, 0x66, 0xEB, 0x12, 0xB2, 0x58, 0xEB, 0x0E, 0xB2, 0x0A, 0xEB, 0x0A,
		0xB2, 0x28, 0xEB, 0x06, 0xB2, 0x50, 0xEB, 0x02, 0xB2, 0x5D};
	unsigned char key1 = 0x5D;
	unsigned char tmp;
	char * yourName;
	yourName = new char[260];
	memset(yourName, 0, 260);
	cout << "Enter your name:";
	gets(yourName);
	if (strlen(yourName) < 6)
	{
		cout << "your name less then 6!" << endl;
		system("pause");
		return;
	}
	for (int x = 0; x < 5; x++)
	{
		tmp = yourName[x] - 97;
		if (tmp> 0x19)
			key1 += 0x5D;
		else
			key1 += base[tmp * 4 +1];
	}
		
	cout << "serial is:" << 0 + key1 << "-" << strlen(yourName) * 0x4A7E << endl;
system("pause");
}
 楼主| china豪 发表于 2015-3-22 15:43
灵魂深处 发表于 2015-3-22 15:17
留名学习一下  不过这些cm好多都是英文的  不懂啊...

呵呵  百度翻译时刻准备着
灵魂深处 发表于 2015-3-22 15:17
留名学习一下  不过这些cm好多都是英文的  不懂啊...
tony2526 发表于 2015-5-11 16:48
还是直接搜索字符串进去方便点,一下搞定,不过楼主说的这个软件可以尝试,算是新学习了
注册码可以追出来“46-114420,是固定的
QQ截图20150511094416.jpg
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 04:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表