吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8414|回复: 39
上一主题 下一主题
收起左侧

[原创] Quick_Any2Ico 3.5 AES 分析解密加注册机编写 图片转ICO、EXE图标提取、窗口图标提取

  [复制链接]
跳转到指定楼层
楼主
qqycra 发表于 2025-4-17 11:22 回帖奖励
本帖最后由 qqycra 于 2025-4-19 08:22 编辑

1、简介

AES加密中,密钥(KEY)、初始化向量(IV)、加密模式(MODE)、填充模式(PADDING)是核心参数,
逆向分析AES就是要找到这几个参数。
此次以分析 Quick_Any2Ico(图标提取与格式转换软件) 这个小软件为例,
向大家展示具体分析过程。

2、使用的工具

序号 工具 作用
1 DIE 查壳
2 IDA 静态分析
3 x32dbg 动态分析
4 Delphi 注册机编写

3、具体分析过程

3.1查壳

经过检测,此软件无壳,我们继续下一步。

3.2注册信息顺藤摸瓜

注册相关的任一信息都是我们能利用的屠龙刀倚天剑。
打开Quick_Any2Ico,点击Activation界面,点击Install license,标题是Browse and select license file,就用这个。

打开IDA,查找字符串Browse and select license file,找到调用地址,点进去。

发现注册成功字符串 The selected license was successfully activated,sub_41E290返回值决定了是否注册成功。

sub_41E290具体内容

3.3初步确定验证流程

下面几个是主要函数:

使用x32dbg动态调试后,初步确定验证流程:

3.4分析AES加密

IDA 反汇编 sub_404FB0 函数,我们发现1个字符串 1234567890123456,该数字常作为AES加密的密钥或初始化向量(IV)。

那么sub_4052F0函数就是我们的目标函数了,函数里出现了CryptDecrypt函数。
CryptDecrypt是微软CryptoAPI(Cryptography API)中的核心函数,用于对使用CryptEncrypt加密的数据进行解密。其核心作用包括:
数据解密:支持对称加密算法(如AES、DES)和非对称加密算法(如RSA)的解密操作。
哈希验证:可同时解密数据并验证哈希值(如验证数字签名)

经过动态调试,总结了下 windows 系统调用 CryptDecrypt 的解密流程。

对上个流程图里的几个api下断点,查找附近汇编语句和堆栈,就能确定其他参数。

序号 参数 参数值
1 key 9F15E8B42592E073F0A14AFF69039F7D
2 iv 1234567890123456
3 加密模式 CBC
4 填充模式 PKCS#7

3.5 AES解密后的再校验

下图的5/6/7语句需要继续分析。

sub_4033E0(v4, L"|||", 1);函数是按照“|||”分割AES解密后的原文到数组。

数组元素数量不能小于 4

数组第 1 项必须等于 "QA2IKey"

数组第 4 项必须等于 机器码

总结下格式:
QA2IKey|||用户名|||12345|||机器码
使用 https://www.toolhelper.cn/SymmetricEncryption/AES 测试,
把得出的字符串保存到Quick_Any2Ico.qa2ikey测试显示已注册。

3.6 注册机的编写

主要代码如下

4、总结

4.1 AES 相关

key相关
AES-128:16字节
AES-192:24字节
AES-256:32字节
IV相关
通常16字节
CBC模式​:必须随机且每次加密更换。
​GCM模式​(Nonce):通常12字节,需唯一(可计数器递增)
加密模式
一般 CBC
填充模式(Padding)
当明文长度不是16字节的倍数时,填充至完整块。
​常用 PKCS#7 填充字节的值等于填充长度
NoPadding:明文必须已是块大小的倍数(否则报错)。

4.2 AES解密 windows api 调用链条

初始化CSP提供程序
关键API:CryptAcquireContext
导入AES密钥
关键API:CryptImportKey
设置初始化向量(IV)
关键API:CryptSetKeyParam
执行AES解密
关键API:CryptDecrypt

4.3 AES 安全核心要点

使用 AES-256(或至少 AES-128) + GCM 模式。
确保每次加密使用随机/唯一的 IV/Nonce。
通过 HMAC 或认证加密保护完整性。
密钥管理严格(使用 HSM/KMS,定期轮换)。
依赖权威加密库,避免自行实现。

免费评分

参与人数 24吾爱币 +27 热心值 +23 收起 理由
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
soojing + 1 + 1 用心讨论,共获提升!
zeknight + 2 + 1 用心讨论,共获提升!
bullshit + 1 + 1 谢谢@Thanks!
BayMax2911 + 1 666,学习!!
zwc123xyz + 1 + 1 用心讨论,共获提升!
soyiC + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
V1O + 1 + 1 谢谢@Thanks!
xiaomr1990 + 1 + 1 谢谢@Thanks!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
alucard0992 + 1 我很赞同!
xiaolutongxue + 1 + 1 我很赞同!HENBANG
qqcs6 + 1 + 1 谢谢@Thanks!
laotun + 1 + 1 我很赞同!
Patches + 1 + 1 用心讨论,共获提升!
3yu3 + 1 + 1 用心讨论,共获提升!
AnDawn + 1 + 1 鼓励转贴优秀软件安全工具和文档!
jk998 + 1 + 1 热心回复!
yp17792351859 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
青衫沾雨露 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yuangao + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Q85998318 + 1 + 1 用心讨论,共获提升!
wgz001 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
kwan8888 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

推荐
shieep 发表于 2025-4-18 14:54
软件启动时会联网验证,生成个wininet.dll禁止软件联网
[C] 纯文本查看 复制代码
#include <windows.h>

// InternetCloseHandle 函数
__declspec(dllexport) BOOL WINAPI InternetCloseHandle(HINTERNET hInternet) {
    return TRUE;
}

// InternetGetConnectedState 函数
__declspec(dllexport) BOOL WINAPI InternetGetConnectedState(LPDWORD lpdwFlags, DWORD dwReserved) {
    return TRUE;
}

// InternetOpenW 函数
__declspec(dllexport) HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType, LPCWSTR lpszProxyName, LPCWSTR lpszProxyBypass, DWORD dwFlags) {
    return NULL;
}

// InternetSetOptionW 函数
__declspec(dllexport) BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength) {
    return TRUE;
}

// InternetOpenUrlW 函数
__declspec(dllexport) HINTERNET WINAPI InternetOpenUrlW(HINTERNET hInternet, LPCWSTR lpszUrl, LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD dwContext) {
    return NULL;
}

// HttpQueryInfoW 函数
__declspec(dllexport) BOOL WINAPI HttpQueryInfoW(HINTERNET hRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex) {
    return TRUE;
}

// InternetConnectW 函数
__declspec(dllexport) HINTERNET WINAPI InternetConnectW(HINTERNET hInternet, LPCWSTR lpszServerName, INTERNET_PORT nServerPort, LPCWSTR lpszUsername, LPCWSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD dwContext) {
    return NULL;
}

// FtpOpenFileW 函数
__declspec(dllexport) HINTERNET WINAPI FtpOpenFileW(HINTERNET hConnect, LPCWSTR lpszFileName, DWORD dwAccess, DWORD dwFlagsAndAttributes, DWORD dwContext) {
    return NULL;
}

// FtpGetFileSize 函数
__declspec(dllexport) DWORD WINAPI FtpGetFileSize(HINTERNET hFile, LPDWORD lpdwFileSizeHigh) {
    return 0;
}

// InternetQueryDataAvailable 函数
__declspec(dllexport) BOOL WINAPI InternetQueryDataAvailable(HINTERNET hFile, LPDWORD lpdwNumberOfBytesAvailable, DWORD dwFlags, DWORD dwContext) {
    return TRUE;
}

// InternetReadFile 函数
__declspec(dllexport) BOOL WINAPI InternetReadFile(HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead) {
    *lpdwNumberOfBytesRead = 0;
    return TRUE;
}

// InternetCrackUrlW 函数
__declspec(dllexport) BOOL WINAPI InternetCrackUrlW(LPCWSTR lpszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTSW lpUrlComponents) {
    return TRUE;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
    switch (ul_reason_for_call) {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
    
推荐
3yu3 发表于 2025-4-17 16:42
本帖最后由 3yu3 于 2025-4-18 13:08 编辑

感谢楼主分享过程,借楼主之光KG了一下。。。




推荐
yuangao 发表于 2025-4-17 16:12
本帖最后由 yuangao 于 2025-4-17 18:20 编辑



感谢大佬,已撸。。。。
推荐
吾爱破解啦 发表于 2025-4-17 12:59
感谢分享  学习了 但是不会用
3#
Zien0103 发表于 2025-4-17 11:51
感谢发布原创作品,吾爱破解论坛因你更精彩!
4#
hengheng013 发表于 2025-4-17 13:11
在学习,想请问下大佬,搜字符串出来两个地址,大佬是怎样确认是第二个地址的,然后往下分析的,我看不出两个地址的差别!
5#
 楼主| qqycra 发表于 2025-4-17 13:17 |楼主
hengheng013 发表于 2025-4-17 13:11
在学习,想请问下大佬,搜字符串出来两个地址,大佬是怎样确认是第二个地址的,然后往下分析的,我看不出两 ...

哪个地址都行,附近都会有校验函数
6#
hengheng013 发表于 2025-4-17 13:21
qqycra 发表于 2025-4-17 13:17
哪个地址都行,附近都会有校验函数

好的,初学者,正对着你的步骤在一步步学习
7#
hengheng013 发表于 2025-4-17 13:34
大佬 ,我这边IDA打开软件,反编译的代码显示和你不一样,是你的安装了插件还是版本不一样吗,我是在论坛下载的IDA8.3版本

22222.png (251.89 KB, 下载次数: 3)

22222.png
8#
 楼主| qqycra 发表于 2025-4-17 13:47 |楼主
hengheng013 发表于 2025-4-17 13:34
大佬 ,我这边IDA打开软件,反编译的代码显示和你不一样,是你的安装了插件还是版本不一样吗,我是在论坛下 ...

很多是我自己改的,还有些是IDA 在分析时会自动从服务器下载并应用符号(需联网)。
9#
 楼主| qqycra 发表于 2025-4-17 13:50 |楼主
hengheng013 发表于 2025-4-17 13:34
大佬 ,我这边IDA打开软件,反编译的代码显示和你不一样,是你的安装了插件还是版本不一样吗,我是在论坛下 ...

你还可以问ai分析,然后再改。
还可以安装IDA mcp插件分析,不过那个很费token
头像被屏蔽
10#
kenxy 发表于 2025-4-17 14:54
提示: 该帖被管理员或版主屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-4-15 01:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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