4 160Crackme第四个之ajj.1 和 自动注册程序

2024-01-25 06:20

本文主要是介绍4 160Crackme第四个之ajj.1 和 自动注册程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 打开软件熟悉

在这里插入图片描述

发现没有提示
看下介绍信息

在这里插入图片描述

2 找到切入

发现是Delphi编写
没有 接触过 搜索下Delphi反汇编
发现有个工具叫DeDeDark 中文的 下载然后分析

在这里插入图片描述

发现有点击的事件 是0x457E7C 和 0x457FB8 其中叫chkcode 是0x457C40 有点可疑
打开x96dbg看下 在单击的地方下个断点 然后稍微看下

3 具体分析

名称注册码使用 12345678 987654321

在这里插入图片描述

然后 Enter 确定
在这里插入图片描述

发现出来一串奇怪字符串
黑头Sun Bird14dseloffc-012-OK123456789 输入注册码

在这里插入图片描述

发现出现了图片
好的我们重新回去尝试破解

4 开始破解

1 直接在这个函数的入口下断点

在这里插入图片描述

发现自己出现的我们的注册码 我们思考 这个教chkcode 应该是检测通过一些手段返回 成功是否
我们找到会传递我们的注册码的
在这里插入图片描述

这个明显可以猜想是比较的 先nop下 证明是的 所以我们需要研究
“黑头Sun Bird14dseloffc-012-OK123456789” 是怎样来的
重新回到开头

在这里插入图片描述

我们在这就可以看出 不对劲 它先是分开 这个注册码的 中间的14 和后面的123456789都没有
这不就是说明那个是根据名称得到的吗
我们看验证下 就可以知道 14是名称的长度 后面是名称
先往下看
在这里插入图片描述

这先把14转位字符串 如果不确定据把这个改掉(前面数据)

在这里插入图片描述

又单独来个 名称 然后拼接 就不难知道注册码的规律

5 加密总结

注册码=黑头+ Sun Bird+(长度+5)+dseloffc-012-OK名称

6 编写程序(获得类名和窗口名称 可以使用spy++开源项目)

在这里插入图片描述

#include <Windows.h>
#include <iostream>
#include <atlstr.h>
using namespace std;
int main()
{srand(time(NULL));HWND Handle = FindWindowW(L"TForm1", L"快想办法注册呀!  Ver: 1.0版");HWND HandleRegistration = FindWindowExW(Handle, NULL, L"TEdit", NULL);HWND HandleName = FindWindowExW(Handle, HandleRegistration, L"TEdit", NULL);HWND HandleCliek = FindWindowExW(Handle, NULL, L"TPanel",NULL);CString str = L"天晨";int Name = rand();CString str2;str2.Format(L"%d", Name*1000);CString str3;//注册码=黑头+ Sun Bird+(长度+5)+dseloffc-012-OK名称str3.Format(L"黑头Sun Bird%ddseloffc-012-OK%s", str2.GetLength()+5, str2.GetBuffer());//SendMessageW(Handle, WM_SETTEXT, 0, (LPARAM)str.GetBuffer());SendMessageW(HandleName, WM_SETTEXT, 0, (LPARAM)str2.GetBuffer());SendMessageW(HandleRegistration, WM_SETTEXT, 0, (LPARAM)str3.GetBuffer());//那个照片的响应好像多时候点不出.....//SendMessageW(HandleCliek, WM_LBUTTONDBLCLK, 0, NULL);//Sleep(10);//SendMessageW(HandleCliek, WM_LBUTTONDBLCLK, 0, NULL);
}

需要自己点 …我有时自己点都没有用 不太明白
在这里插入图片描述

7 其他

1 其实可以自己查找字符串 一样的 有个注册成功

这篇关于4 160Crackme第四个之ajj.1 和 自动注册程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642355

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机