系统 : Windows xp

程序 : noodles-crackme2

程序下载地址 :http://pan.baidu.com/s/1mhJ4Ems

要求 : 编写KeyFile

使用工具 : OD

可在看雪论坛中查找关于此程序的破文:传送门

废话不多说,直接下断点

CreateFileA

断在系统函数中,然后ctrl+k查看调用栈,回溯到文件处理代码:

   > \6A          push 0x0                                 ; /hTemplateFile = NULL
0040149B . push 0x80 ; |Attributes = NORMAL
004014A0 . 6A push 0x3 ; |Mode = OPEN_EXISTING
004014A2 . 6A push 0x0 ; |pSecurity = NULL
004014A4 . 6A push 0x0 ; |ShareMode = 0
004014A6 . push 0x80000000 ; |Access = GENERIC_READ
004014AB . F1354000 push noodles-.004035F1 ; |FileName = "spook.key"
004014B0 . E8 6F010000 call <jmp.&KERNEL32.CreateFileA> ; \CreateFileA
004014B5 . 83F8 FF cmp eax,-0x1
004014B8 . 0F84 je noodles-.
004014BE . A3 E9354000 mov dword ptr ds:[0x4035E9],eax
004014C3 . FF35 E9354000 push dword ptr ds:[0x4035E9] ; /hFile = NULL
004014C9 . E8 call <jmp.&KERNEL32.GetFileType> ; \GetFileType
004014CE . FB354000 push noodles-.004035FB ; /pFileSizeHigh = noodles-.004035FB
004014D3 . FF35 E9354000 push dword ptr ds:[0x4035E9] ; |hFile = NULL
004014D9 . E8 1C010000 call <jmp.&KERNEL32.GetFileSize> ; \GetFileSize
004014DE . A3 ED354000 mov dword ptr ds:[0x4035ED],eax
004014E3 . 83F8 cmp eax,0x8 ; 大小是否等于8?
004014E6 . 6F jnz Xnoodles-.
004014E8 . 6A push 0x0 ; /pOverlapped = NULL
004014EA . FB354000 push noodles-.004035FB ; |pBytesRead = noodles-.004035FB
004014EF . push eax ; |BytesToRead
004014F0 . FF354000 push noodles-.004035FF ; |Buffer = noodles-.004035FF
004014F5 . FF35 E9354000 push dword ptr ds:[0x4035E9] ; |hFile = NULL
004014FB . E8 BE000000 call <jmp.&KERNEL32.ReadFile> ; \ReadFile
. 85C0 test eax,eax
. je Xnoodles-.
. 33C0 xor eax,eax
. FF35 E9354000 push dword ptr ds:[0x4035E9] ; /hObject = NULL
0040150C . E8 A7000000 call <jmp.&KERNEL32.CloseHandle> ; \CloseHandle
. B8 FF354000 mov eax,noodles-.004035FF
. C100 rol dword ptr ds:[eax],0x5
. 0F add dword ptr ds:[eax],0xF
0040151C . C148 ror dword ptr ds:[eax+0x4],0x7
. sub dword ptr ds:[eax+0x4],0x5
. BDD84>cmp dword ptr ds:[eax+0x4],0xC642D8BD
0040152B . 2A jnz Xnoodles-.
0040152D . FC098E2E cmp dword ptr ds:[eax],0x2E8E09FC
. jnz Xnoodles-.
. push 0x1388
0040153A . push noodles-. ; /Text = "Your keyfile is fine happy happy joy joy"
0040153F . 8B130000 push 0x138B ; |ControlID = 138B (5003.)
. FF75 push dword ptr ss:[ebp+0x8] ; |hWnd
. E8 call <jmp.&USER32.SetDlgItemTextA> ; \SetDlgItemTextA
0040154C . 8B25 BD334000 mov esp,dword ptr ds:[0x4033BD]
.^ E9 CBFDFFFF jmp noodles-.
> 6A push 0x0 ; /Style = MB_OK|MB_APPLMODAL
. push noodles-. ; |Title = "Error!"
0040155E . 6A364000 push noodles-.0040366A ; |Text = "Ketfile not present or incorrect"
00401563 . 6A 00 push 0x0 ; |hOwner = NULL
00401565 . E8 4A010000 call <jmp.&USER32.MessageBoxA> ; \MessageBoxA
0040156A . 6A 01 push 0x1 ; /ExitCode = 1
0040156C . E8 5F000000 call <jmp.&KERNEL32.ExitProcess> ; \ExitProcess

可以看出这是一个很简单的数据运算过程,只要反推四步即可得到keyfile的内容。

以下上生成keyfile的c++代码:

#include <iostream>
#include <fstream> using namespace std; int main( void )
{
unsigned int v1 = 0x2E8E09FC,v2 = 0xC642D8BD; __asm{
push eax
push ebx mov eax,v1
mov ebx,v2 sub eax,0xF
ror eax,0x5 add ebx,0x5
rol ebx,0x7 mov v1,eax
mov v2,ebx pop ebx
pop eax
} ofstream out( "spook.key",ios::out | ios::binary | ios::trunc );
if ( out.is_open() ){
out.write( (const char *)&v1, );
out.write( (const char *)&v2, );
}
else
cout << "Open file failed." << endl; out.close(); return ;
}

给出可用的KeyFIle内容:

4F 70 74 69 63 61 6C 21 

keyFile 巩固练习的更多相关文章

  1. 拆解cytom!c's 的keyFile保护

    系统 : Windows xp 程序 : cytom!c's 程序下载地址 :http://pan.baidu.com/s/1nulAYBv 要求 : 伪造KeyFile 使用工具 :IDA & ...

  2. 拆解一个简单的KeyFile保护

    系统 : Windows xp 程序 : abexcrackme3 程序下载地址 :http://pan.baidu.com/s/1mh3TiqO 要求 : 伪造Keyfile 使用工具 :IDA 可 ...

  3. linux上安装MongoDB副本集(带keyfile安全认证以及用户权限)

    搭建前准备 MongoDB版本:4.0 主要参考搭建MongoDB副本集网站:https://www.jianshu.com/p/f021f1f3c60b 安装之前最好先确定一下几点: 防火墙关闭 M ...

  4. mongodb.副本集配置方法(使用keyfile认证部署)

    前提条件: - 已安装MongoDB, 版本以3.6为例 - 系统: Debian9 - 建议做副本集的话, 以3台以上为宜, 本文以1台主机2个服务为例 1.创建数据存放的目录, 并授权 sudo ...

  5. 生产环境部署MongoDB副本集(带keyfile安全认证以及用户权限)

    本文同步于个人Github博客:https://github.com/johnnian/Blog/issues/8,欢迎留言. 安装软件包:mongodb-linux-x86_64-3.4.1.tgz ...

  6. Mongodb 集群加keyFile认证

    介绍 自从远古计绳结开始,数据库的存储就注定了今天的地位和多样性,Nosql的出现更是解决了现有的关系型数据库无法解决的一些难题,对高性能,灵活度,扩展性,海量数据的问题.随之而出现的高速内存索引数据 ...

  7. ermissions on /usr/local/mongodb/conf/keyFile are too open

    ermissions on /usr/local/mongodb/conf/keyFile are too open > rs.initiate(cfg); { "ok" : ...

  8. 关于KeyFile的破解,含注册机源代码

    程序来自于<加密与解密3>的第五章的PacMe.exe.书中并没有给出C语言实现的加密与解密代码,自己花了一些时间,把代码还原了,并且写了一个C语言的注册机. 加密原理:正如书中所说,此程 ...

  9. [自翻]fasthttp中文文档(持续更新)

    fasthttp是由valyala编写的声称快于Go官方标准库net/http包十倍的快速HTTP实现.从各方的性能测试结果来看(评测一.评测二),fasthttp作为当下最快的http Go语言包当 ...

随机推荐

  1. web工程关于500错误

    昨天一直被一个诡异问题困扰,解决了之后开心得的我连玩了一下午,哈哈哈哈哈哈哈哈-- 具体问题是这样的额,本地跑的贼正常,一发到测试服务器就报500错误,具体错误信息是.  HTTP Status 50 ...

  2. qt 设置

    右击不同类型的文件,点属性,可以选择处理文件的工具,比如自动生成uic qrc右击工程属性,然后可以转换成QT工程翻译文件如果只读的话,可以右击换一个编辑器打开 如果翻译文件只读的话,必须直接使用字符 ...

  3. WinForm 公共控件

    一.窗体属性: 1.AcceptButton - 窗体的“接受”按钮.如果设置该属性,每次用户按“Enter”键都相当于“单击”了该按钮. 需要设置哪个键,就在后面选择. 2.CancelButton ...

  4. Linux安装脚本需要交互之如何实现自动安装

    Linux中shell脚本运行时经常需要进行交互,比如安装软件的过程中对license声明的确认,需要输入yes,回车之类的确认信息.这个在自动化安装的时候就会是个问题. 通常对于这个问题比较灵活的解 ...

  5. SQL指定字段指定顺序排序

    SELECT * FROM [ProjectInfo]ORDER BY (CASE DepartmentName WHEN 'AAA' THEN 1 WHEN 'BBB' THEN 2 WHEN 'C ...

  6. Bitmap 的几种压缩方式

    微信的缩略图要求是不大于32k,这就需要对我的图片进行压缩.试了几种方法,一一道来. 代码如下 ByteArrayOutputStream baos =  new  ByteArrayOutputSt ...

  7. 驱动插ring3线程执行代码

    近日有在写一个小东西 需要在内核态中运行一个WIN32程序 之前提到的插入APC可以满足部分要求 但是一到WIN7 x86平台下就崩溃了WIN7下只能插入第三方的进程 一插入系统进程就崩溃,但是这样满 ...

  8. HTML 中级2

    <colgroup> 标签用于对表格中的列进行组合,以便对其进行格式化. 通过使用 <colgroup> 标签,可以向整个列应用样式,而不需要重复为每个单元格或每一行设置样式. ...

  9. sql 2008 修改链接服务器 Rpc &Rpc Out

    From: http://blog.csdn.net/gnolhh168/article/details/41725873 USE [master] GO EXEC master.dbo.sp_ser ...

  10. DataSet集合直接根据传入的类转List<T>集合

    最近比较忙,好久没写博客了.个人感觉最好的进步就是写东西.哈哈. 一般我们使用ADO.net从数据库中读取数据返回的集合是DataSet类型的.有时候我们需要进行转换成List<T>集合. ...