具体的分析这里有。本人仅仅是对这里面有趣的算法进行了一些学习

分析链接

这次是逆向的使用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";
//创建/获取一个password容器CSP
HCRYPTPROV 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
#endif

3. 最后程序中的pBuffer中就是解密出来的数据

附件下载

http://download.csdn.net/detail/xiaocaiju/7417093

360破解大赛crackme分析--之3DES解密附加数据的更多相关文章

  1. 某虚拟定位APP从破解到原理分析

    工具环境ida7.0iphone 6ios 10.2 0x00:基本情况 1. 该app可以修改模拟手机地理位置(gps.基站.WIFI),拥有全局定位.指定应用定位.模拟扫街等功能,只能在已越狱的I ...

  2. iOS 3DES加密 和 java 3DES 解密

    首先进入头文件: #import <CommonCrypto/CommonDigest.h> #import <CommonCrypto/CommonCryptor.h> #i ...

  3. 插件开发之360 DroidPlugin源码分析(五)Service预注册占坑

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52264977 在了解系统的activity,service,broa ...

  4. 插件开发之360 DroidPlugin源码分析(四)Activity预注册占坑

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52258434 在了解系统的activity,service,broa ...

  5. JVM源码分析之Metaspace解密

        概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所 ...

  6. PE文件附加数据感染之Worm.Win32.Agent.ayd病毒分析

    一.基本信息 样本名称:1q8JRgwDeGMofs.exe 病毒名称:Worm.Win32.Agent.ayd 文件大小:165384 字节 文件MD5:7EF5D0028997CB7DD3484A ...

  7. 为什么Wireshark无法解密HTTPS数据

    为什么Wireshark无法解密HTTPS数据 导读 由于需要定位一个问题,在服务器上tcpdump抓取https数据包,然后下载到本地打开wireshark分析.然后我们下载域名私钥配置到wires ...

  8. 以Crypto++实现RSA加解密二进制数据

    网上一大片讲怎么加解密字符串的,找了大半天也没找到讲加解密二进制数据的,于是自己研究了下,分享给大家. 加解密函数: #include <rsa.h> #include <randp ...

  9. 网易郑栋:数据采集与分析的那些事——从数据埋点到AB测试

    本文由  网易云发布. 4月8日晚,DTalk邀请到了网易互联网分析产品.可视化 BI 产品的负责人—郑栋老师,进行了一次关于<网易郑栋:数据采集与分析的那些事第一弹: 数据篇>的主题分享 ...

随机推荐

  1. ReadOnly field saved with NULL value

    On CRM opportunity form view, i added readonly="1" for probability field. When i saved, wh ...

  2. 18-spring学习-AOP深入操作

    范例:定义一个参数拦截 package com.Spring.aop; import org.springframework.stereotype.Component; @Component publ ...

  3. 用python实现的的手写数字识别器

    概述 带GUI界面的,基于python sklearn knn算法的手写数字识别器,可用于识别手写数字,训练数据集为mnist. 详细 代码下载:http://www.demodashi.com/de ...

  4. 新浪微博XSS攻击事件

    http://blog.csdn.net/terryzero/article/details/6575078 6月28日20时14分左右开始,新浪微博出现了一次比较大的XSS攻击事件.大量用户自动发送 ...

  5. Linux-软件包管理-yum在线安装rz、sz工具

    yum search lrzsz yum方式查询 rpm -q lrzsz rpm方式查询 yum -y install lrzsz 安装 rpm -q lrzsz rpm方式查询 sz下载 rz上传

  6. Linux命令-目录处理命令:rmdir

    rmdir /tmp/shijiazhuang/yuhuaqu 删除一个子目录(必须是空目录) rmdir /tmp/shijiazhuang 删除一个不为空的目录会失败

  7. python笔记-列表和元组

    列表和元组: -可以将列表和元组当成普通的数组 -列表和元组可以保存任意类型的python对象 -通过从0开始的数字索引访问元素 -列表和元组可以存储不同类型的对象 列表和元组的区别: -列表元素使用 ...

  8. Oracle XE安装具体解释

    一.原数据库的卸载       数据库的卸载就不多说了,讲一下过程:       1.运行Oracle Uninstall,卸载Oracle产品     2.删除regedit下的全部Oracle相关 ...

  9. create table like 和create table select 比较

    语法: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name     [(create_definition,...)]     [table_optio ...

  10. Atitit. 最佳实践 QA----降低cpu占有率--cpu占用太高怎么办

    Atitit. 最佳实践 QA----降低cpu占有率--cpu占用太高怎么办 跟个磁盘队列长度雅十,一到李80%走不行兰.... 1. 寻找线程too 多的.关闭... Taskman>> ...