Crackme7-笔记

大神的链接:https://www.52pojie.cn/thread-613691-1-1.html
太难了….搞不定…..看了答案都搞不定…..注册机写不出来…..
一、爆破
找到关键函数和关键跳转即可爆破,简单略
二、破解算法
这里写图片描述
1、进入点击注册键的程序入口点,进入关键函数
这里写图片描述
进入0x442FB9处的关键函数,查看算法

004429A8  /$  55               push ebp
004429A9  |.  8BEC             mov ebp,esp
004429AB  |.  83C4 F4          add esp,-0xC
004429AE  |.  53               push ebx
004429AF  |.  56               push esi
004429B0  |.  57               push edi
004429B1  |.  894D F8          mov [local.2],ecx                        ;  [local.2] = 用户名
004429B4  |.  8955 FC          mov [local.1],edx                        ;  edx = [local.1]
004429B7  |.  8BF8             mov edi,eax                              ;  edi = eax = 182a
004429B9  |.  8B45 F8          mov eax,[local.2]
004429BC  |.  E8 2712FCFF      call aLoNg3x_.00403BE8
004429C1  |.  33C0             xor eax,eax
004429C3  |.  55               push ebp
004429C4  |.  68 7A2A4400      push aLoNg3x_.00442A7A
004429C9  |.  64:FF30          push dword ptr fs:[eax]
004429CC  |.  64:8920          mov dword ptr fs:[eax],esp
004429CF  |.  8B45 F8          mov eax,[local.2]
004429D2  |.  E8 5D10FCFF      call aLoNg3x_.00403A34
004429D7  |.  83F8 04          cmp eax,0x4
004429DA  |.  0F8E 82000000    jle aLoNg3x_.00442A62
004429E0  |.  33DB             xor ebx,ebx                              ;  ebx清零
004429E2  |.  8B45 F8          mov eax,[local.2]
004429E5  |.  E8 4A10FCFF      call aLoNg3x_.00403A34
004429EA  |.  85C0             test eax,eax
004429EC  |.  7E 38            jle short aLoNg3x_.00442A26
004429EE  |.  8945 F4          mov [local.3],eax                        ;  [local.3] = 长度
004429F1  |.  BE 01000000      mov esi,0x1                              ;  esi = 1
004429F6  |>  8B45 F8          /mov eax,[local.2]                       ;  eax = 用户名
004429F9  |.  E8 3610FCFF      |call aLoNg3x_.00403A34
004429FE  |.  83F8 01          |cmp eax,0x1                             ;  eax = 长度
00442A01  |.  7C 1D            |jl short aLoNg3x_.00442A20
00442A03  |>  8B55 F8          |/mov edx,[local.2]                      ;  edx = 用户名
00442A06  |.  0FB65432 FF      ||movzx edx,byte ptr ds:[edx+esi-0x1]    ;  取第一个字母“5”
00442A0B  |.  8B4D F8          ||mov ecx,[local.2]
00442A0E  |.  0FB64C01 FF      ||movzx ecx,byte ptr ds:[ecx+eax-0x1]    ;  取最后一个字母“n"
00442A13  |.  0FAFD1           ||imul edx,ecx                           ;  edx * ecx = 16c6
00442A16  |.  0FAFD7           ||imul edx,edi                           ;  edx = edx * edi
00442A19  |.  03DA             ||add ebx,edx                            ;  ebx = 0
00442A1B  |.  48               ||dec eax                                ;  长度-1
00442A1C  |.  85C0             ||test eax,eax
00442A1E  |.^ 75 E3            |\jnz short aLoNg3x_.00442A03
00442A20  |>  46               |inc esi                                 ;  esi + 1
00442A21  |.  FF4D F4          |dec [local.3]                           ;  长度-1
00442A24  |.^ 75 D0            \jnz short aLoNg3x_.004429F6
00442A26  |>  8BC3             mov eax,ebx                              ;  eax = 0
00442A28  |.  99               cdq
00442A29  |.  33C2             xor eax,edx
00442A2B  |.  2BC2             sub eax,edx                              ;  eax = 0
00442A2D  |.  B9 2A2C0A00      mov ecx,0xA2C2A                          ;  ecx = 0xA2CAA
00442A32  |.  99               cdq
00442A33  |.  F7F9             idiv ecx                                 ;  eax/ecx = eax ...edx
00442A35  |.  8BDA             mov ebx,edx
00442A37  |.  8B45 FC          mov eax,[local.1]                        ;  算法
00442A3A  |.  B9 59000000      mov ecx,0x59
00442A3F  |.  99               cdq
00442A40  |.  F7F9             idiv ecx                                 ;  [local.1]/59取整
00442A42  |.  8BC8             mov ecx,eax
00442A44  |.  8B45 FC          mov eax,[local.1]
00442A47  |.  BE 50000000      mov esi,0x50
00442A4C  |.  99               cdq
00442A4D  |.  F7FE             idiv esi                                 ;  [local.1]/50取余
00442A4F  |.  03CA             add ecx,edx                              ;  加上刚[local.1]/59取整的结果
00442A51  |.  41               inc ecx                                  ;  +1= A4
00442A52  |.  894D FC          mov [local.1],ecx
00442A55  |.  3B5D FC          cmp ebx,[local.1]                        ;  结果与ebx作比较
00442A58  |.  75 04            jnz short aLoNg3x_.00442A5E              ;  关键跳转
00442A5A  |.  B3 01            mov bl,0x1
00442A5C  |.  EB 06            jmp short aLoNg3x_.00442A64
00442A5E  |>  33DB             xor ebx,ebx
00442A60  |.  EB 02            jmp short aLoNg3x_.00442A64

发现程序是,对用户名进行一定的运算后,与[local.1]/0x59取整 + [local.1]/0x50取余 + 1的结果进行比较,如果相同则隐藏按钮,否则不隐藏。
但是算法写不出来…..巨麻烦……日后再写吧…..

2、先直接爆破,将0x442a58处代码nop掉,运行,则成功隐藏register按钮,同时出现again按钮,保存文件。
这里写图片描述
对again按钮点击事件下断,发现关键函数和register按钮的关键函数相同,那就不用对他研究了。

3、仔细研究register关键函数的代码发现,最后算法实现时发现
(edi 老是为0,导致后面的eax老是为0,然后后面整个算法都不懂了,看了大神写的才发现自己太急躁啦,就不能耐心点好好追溯吗??)
这里写图片描述
而edi是由eax赋值而来:
这里写图片描述
而eax是在函数外被ds:[0x445838]赋值:
这里写图片描述
找ds:[0x445838]的来源,发现上次被赋值竟然是在输入注册码不正确时,被跳过了!所以……..考虑是不是得输入错误一次注册码(太难想了吧!!膜拜大神!!服气服气!!)
经过测试果然如此,先输入错误一次注册码(不是全数字即可),程序进入
这里写图片描述

4、那么,对于0x442F86处 mov ds:[0x445838],eax 中的eax是多少呢?所以进入0x442F81函数查看
这里写图片描述
python实现这个算法:

# -*- coding:utf-8 -*-
# 1、根据注册码(字符串)计算eax的值
string = raw_input("请输入注册码:")# 例如:abc123
i = 1
sum = 891 # 0x37B
while i < len(string):
    a = ord(string[i]) % 17 + 1
    b = ord(string[i-1]) * a
    sum =  sum + b
    #print sum
    i += 1
print sum # 6186=0x182a

然后运行,输入正确形式的注册码,则再次断在register入口处,但是这次跳过了非正确输入的代码段,进入关键函数,但是太复杂,搞不懂…..
python实现一点点:

name = raw_input("请输入用户名:")
i = 0
temp = 0
while i < len(name):
    j = len(name) - 1
    while j >= 0:
        temp = temp + ord(name[i]) * ord(name[j]) * sum
        j -= 1
    #print temp
    i += 1
print temp
智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的时机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游时代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的时机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游时代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值