360破解大赛crackme分析--之3DES解密附加数据
来源:互联网 发布:c语言入门的书 编辑:程序博客网 时间:2024/04/30 23:01
详细的分析这里有,本人只是对这里面有趣的算法进行了一些学习
分析链接
这次是逆向的使用3DES解密的过程中的内容:
使用微软的crypt库 使用3DES解密程序中的附加数据
代码:
VOID encryptData(){TCHAR szModuleFile[MAX_PATH] = "C:\\Users\\Administrator\\Desktop\\破解技术考题 360\\破解考题.over";HANDLE hFile = ::CreateFile(szModuleFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);if (!hFile){AfxMessageBox("createfile error");return;}DWORD dwFileSize = 0;dwFileSize = ::GetFileSize(hFile, NULL);DWORD dwError = ::GetLastError();TCHAR *pBuffer = new TCHAR[dwFileSize*2];memset(pBuffer, 0, sizeof(pBuffer));DWORD dwReaded = 0;::ReadFile(hFile, pBuffer, dwFileSize, &dwReaded, NULL);TCHAR pText[] = "dfe963a6"; //创建/获取一个密码容器CSPHCRYPTPROV hProv;TCHAR pszContentName[] = "Microsoft Enhanced RSA and AES Cryptographic Provider";if (!::CryptAcquireContext(&hProv, NULL, pszContentName, 0x18, 0)){DWORD dwError = ::GetLastError();AfxMessageBox("cryptAcquireContext error");return ;}//创建/获取/导入一个密钥HCRYPTHASH hHash;if (!CryptCreateHash(hProv, 0x8003, 0, 0, &hHash)){AfxMessageBox("cryptcreateHash error");return ;}//使用密钥进行加密/解密::CryptHashData(hHash, (BYTE*)pText, strlen(pText), NULL);HCRYPTKEY hKey;::CryptDeriveKey(hProv, 0x660E, hHash, 0x800000, &hKey); //CALG_AES_128 0x660E 0x800000::CryptDecrypt(hKey, 0, TRUE, 0, (BYTE*)pBuffer, &dwFileSize); //0::CryptDestroyKey(hKey);::CryptDestroyHash(hHash);::free(pBuffer);::CloseHandle(hFile);}
测试环境:
1. 使用ffi将crackme中的附加数据导出来,当做这个程序的输入数据使用
2.使用微软的加密库时的设置
在stdafx.h中加入这么几行代码:
#ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0400 #endif3. 最后程序中的pBuffer中就是解密出来的数据
附件下载
http://download.csdn.net/detail/xiaocaiju/7417093
0 0
- 360破解大赛crackme分析--之3DES解密附加数据
- CrackMe 之Afkayas 破解
- php解密之DES/3DES
- CrackMe 之 Acid Burn 破解
- CrackMe破解【3】- 简单级别
- JAVA加密解密之3DES(TripleDES)
- java加解密之3重DES
- Java学习之3DES加解密
- 趣味CRACKME破解分析(发散思维)
- DES/3DES加密,解密
- 160个破解练习之CrackMe 006
- 160个破解练习之CrackMe 007
- 160个破解练习之CrackMe 008
- 文本数据进行DES解密
- 3DES 加密解密
- 3des加密解密
- 3-DES加密解密
- 3DES加密解密
- IOS模拟器怎么安装应用程序
- c中回调函数 c++类回调函数详解
- nand flash 扇区的管理以及初始化
- hadoop全局变量问题
- 改列类型
- 360破解大赛crackme分析--之3DES解密附加数据
- Python中strip方法的妙用
- ios7中使用ScrollView上方留空白
- 省赛小结
- ARMv7处理器各个模式之间是如何切换的?模式切换时上下文的保存哪些是硬件在做?哪些是操作系统在做?
- IOS-应用之间调用
- 如何开启win7端口的图文教程
- 排序算法之选择排序
- ffmpeg中G726解码器用法 编码器用法