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

分析链接

这次是逆向的使用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. 微信小程序之底部弹框预约插件

    代码地址如下:http://www.demodashi.com/demo/13982.html 一.前期准备工作: 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.c ...

  2. 基于skitter的轮播图炫酷效果,幻灯片的体验

    概述 包含各种炫酷的轮播切换效果,插件小巧,与其他插件无冲突,可用于移动端和PC端 详细 代码下载:http://www.demodashi.com/demo/11939.html 你还在用原生的js ...

  3. [Python]网络爬虫(四):Opener与Handler的介绍和实例应用(转)

    在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info and geturl urlopen返回的应答对象response(或者HTTPError实例)有两个很有用的方法info() ...

  4. 执行 maven 命令 报错Unable to add module to the current project as it is not of packaging type 'pom'[转]

    今天学习在本地搭建Maven工程时,执行了mvn archetype:generate 命令,报错. Unable to create project from archetype [org.apac ...

  5. Mysql 的位运算符详解,mysql的优先级

    位运算是将给定的操作数转化为二进制后,对各个操作数每一位都进行指定的逻辑运算,得到的二进制结果转换为十进制数后就是位运算的结果.MySQL 5.0 支持6 种位运算符,如表4-4 所示. 可以发现,位 ...

  6. spring in action 9.1 spring security

    spring security是基于spring AOP 和 Servlet 规范中的Filter 实现的安全框架. Spring Security 是为基于 Spring 的应用程序提供声明式安全保 ...

  7. Eclipse的vim插件viPlugin的安装

    1.viPlugin是什么?   viPlugin是一个eclipse 针对vi的插件,使用此插件可以让你在使用eclipse进行编码时使用几乎所有vi命令,可以极大的提高开发编码效率. 2.viPl ...

  8. MySql图解给表添加外键

    关于外键约束的几种方式,请移步鄙人的另外一个博客中的博文  http://blog.csdn.net/hadues/article/details/52558184

  9. Atitit.分布式远程调用  rpc  rmi  CORBA的关系

    Atitit.分布式远程调用  rpc  rmi  CORBA的关系 1. 远程调用(包括rpc,rmi,rest)1 2. 分布式调用大体上就分为两类,RPC式的,REST式的1 3. RPC(远程 ...

  10. IOS委托,实现两个UIView相互传值

    转自:http://my.oschina.net/wbei/blog/89325 detegate委托在IOS中是一种随处可见的模式,通俗的说,就是我把想做的某件事委托给其他人去做,就好像Java中的 ...