160 - 27 Cosh.1

环境
Windows XP sp3

工具
exeinfope
ollydbg

查壳
无壳的MFC程序

测试

弹出这个:

是一个CD-CHECK保护的程序。

字符串搜索,一下子就能来到这里:

0040121A   .  68 9C304000   push Cosh_1.0040309C                          ;  ASCII "C:\"
0040121F   .  8D4D A4       lea ecx,dword ptr ss:[ebp-0x5C]
00401222   .  E8 79040000   call <jmp.&MFC42.#CString::CString_537>
00401227   .  33DB          xor ebx,ebx
00401229   .  68 98304000   push Cosh_1.00403098                          ;  ASCII "D:\"
0040122E   .  8D4D A8       lea ecx,dword ptr ss:[ebp-0x58]
00401231   .  895D FC       mov dword ptr ss:[ebp-0x4],ebx
00401234   .  E8 67040000   call <jmp.&MFC42.#CString::CString_537>
00401239   .  68 94304000   push Cosh_1.00403094                          ;  ASCII "E:\"
0040123E   .  8D4D AC       lea ecx,dword ptr ss:[ebp-0x54]
00401241   .  C645 FC 01    mov byte ptr ss:[ebp-0x4],0x1
00401245   .  E8 56040000   call <jmp.&MFC42.#CString::CString_537>
0040124A   .  68 90304000   push Cosh_1.00403090                          ;  ASCII "F:\"
0040124F   .  8D4D B0       lea ecx,dword ptr ss:[ebp-0x50]
00401252   .  C645 FC 02    mov byte ptr ss:[ebp-0x4],0x2
00401256   .  E8 45040000   call <jmp.&MFC42.#CString::CString_537>
0040125B   .  68 8C304000   push Cosh_1.0040308C                          ;  ASCII "G:\"
00401260   .  8D4D B4       lea ecx,dword ptr ss:[ebp-0x4C]
00401263   .  C645 FC 03    mov byte ptr ss:[ebp-0x4],0x3
00401267   .  E8 34040000   call <jmp.&MFC42.#CString::CString_537>
0040126C   .  68 88304000   push Cosh_1.00403088                          ;  ASCII "H:\"
00401271   .  8D4D B8       lea ecx,dword ptr ss:[ebp-0x48]
00401274   .  C645 FC 04    mov byte ptr ss:[ebp-0x4],0x4
00401278   .  E8 23040000   call <jmp.&MFC42.#CString::CString_537>
0040127D   .  68 84304000   push Cosh_1.00403084                          ;  ASCII "I:\"
00401282   .  8D4D BC       lea ecx,dword ptr ss:[ebp-0x44]
00401285   .  C645 FC 05    mov byte ptr ss:[ebp-0x4],0x5
00401289   .  E8 12040000   call <jmp.&MFC42.#CString::CString_537>
0040128E   .  68 80304000   push Cosh_1.00403080                          ;  ASCII "J:\"
00401293   .  8D4D C0       lea ecx,dword ptr ss:[ebp-0x40]
00401296   .  C645 FC 06    mov byte ptr ss:[ebp-0x4],0x6
0040129A   .  E8 01040000   call <jmp.&MFC42.#CString::CString_537>
0040129F   .  68 7C304000   push Cosh_1.0040307C                          ;  ASCII "K:\"
004012A4   .  8D4D C4       lea ecx,dword ptr ss:[ebp-0x3C]
004012A7   .  C645 FC 07    mov byte ptr ss:[ebp-0x4],0x7
004012AB   .  E8 F0030000   call <jmp.&MFC42.#CString::CString_537>
004012B0   .  68 78304000   push Cosh_1.00403078                          ;  ASCII "L:\"
004012B5   .  8D4D C8       lea ecx,dword ptr ss:[ebp-0x38]
004012B8   .  C645 FC 08    mov byte ptr ss:[ebp-0x4],0x8
004012BC   .  E8 DF030000   call <jmp.&MFC42.#CString::CString_537>
004012C1   .  68 74304000   push Cosh_1.00403074                          ;  ASCII "M:\"
004012C6   .  8D4D CC       lea ecx,dword ptr ss:[ebp-0x34]
004012C9   .  C645 FC 09    mov byte ptr ss:[ebp-0x4],0x9
004012CD   .  E8 CE030000   call <jmp.&MFC42.#CString::CString_537>
004012D2   .  68 70304000   push Cosh_1.00403070                          ;  ASCII "N:\"
004012D7   .  8D4D D0       lea ecx,dword ptr ss:[ebp-0x30]
004012DA   .  C645 FC 0A    mov byte ptr ss:[ebp-0x4],0xA
004012DE   .  E8 BD030000   call <jmp.&MFC42.#CString::CString_537>
004012E3   .  68 6C304000   push Cosh_1.0040306C                          ;  ASCII "O:\"
004012E8   .  8D4D D4       lea ecx,dword ptr ss:[ebp-0x2C]
004012EB   .  C645 FC 0B    mov byte ptr ss:[ebp-0x4],0xB
004012EF   .  E8 AC030000   call <jmp.&MFC42.#CString::CString_537>
004012F4   .  68 68304000   push Cosh_1.00403068                          ;  ASCII "P:\"
004012F9   .  8D4D D8       lea ecx,dword ptr ss:[ebp-0x28]
004012FC   .  C645 FC 0C    mov byte ptr ss:[ebp-0x4],0xC
00401300   .  E8 9B030000   call <jmp.&MFC42.#CString::CString_537>
00401305   .  BE 9A164000   mov esi,<jmp.&MFC42.#CString::~CString_800>   ;  入口地址
0040130A   .  33C0          xor eax,eax
0040130C   .  8D7D DC       lea edi,dword ptr ss:[ebp-0x24]
0040130F   .  56            push esi
00401310   .  C645 FC 0D    mov byte ptr ss:[ebp-0x4],0xD
00401314   .  68 94164000   push <jmp.&MFC42.#CString::CString_540>       ;  入口地址
00401319   .  AB            stos dword ptr es:[edi]
0040131A   .  6A 01         push 0x1
0040131C   .  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
0040131F   .  6A 04         push 0x4
00401321   .  50            push eax
00401322   .  E8 C3040000   call Cosh_1.004017EA
00401327   .  8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
0040132A   .  C645 FC 0E    mov byte ptr ss:[ebp-0x4],0xE
0040132E   .  E8 61030000   call <jmp.&MFC42.#CString::CString_540>
00401333   .  C645 FC 0F    mov byte ptr ss:[ebp-0x4],0xF
00401337   .  895D EC       mov dword ptr ss:[ebp-0x14],ebx
0040133A   .  8D7D A4       lea edi,dword ptr ss:[ebp-0x5C]
0040133D   >  57            push edi
0040133E   .  8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
00401341   .  E8 48030000   call <jmp.&MFC42.#CString::operator=_858>
00401346   .  FF75 E8       push dword ptr ss:[ebp-0x18]                  ; /RootPathName
00401349   .  FF15 04204000 call dword ptr ds:[<&KERNEL32.GetDriveTypeA>] ; \GetDriveTypeA
0040134F      83F8 03       cmp eax,0x3
00401352   .  74 3E         je XCosh_1.00401392
00401354   .  8D45 E8       lea eax,dword ptr ss:[ebp-0x18]
00401357   .  68 58304000   push Cosh_1.00403058                          ;  ASCII "CD_CHECK.DAT"
0040135C   .  50            push eax
0040135D   .  8D45 E0       lea eax,dword ptr ss:[ebp-0x20]
00401360   .  50            push eax
00401361   .  E8 22030000   call <jmp.&MFC42.#operator+_924>
00401366   .  8B00          mov eax,dword ptr ds:[eax]
00401368   .  53            push ebx                                      ; /hTemplateFile
00401369   .  53            push ebx                                      ; |Attributes
0040136A   .  53            push ebx                                      ; |Mode
0040136B   .  53            push ebx                                      ; |pSecurity
0040136C   .  6A 01         push 0x1                                      ; |ShareMode = FILE_SHARE_READ
0040136E   .  68 00000080   push 0x80000000                               ; |Access = GENERIC_READ
00401373   .  50            push eax                                      ; |FileName
00401374   .  FF15 00204000 call dword ptr ds:[<&KERNEL32.CreateFileA>]   ; \CreateFileA
0040137A   .  83F8 FF       cmp eax,-0x1
0040137D   .  8D4D E0       lea ecx,dword ptr ss:[ebp-0x20]
00401380   .  0F9445 F3     sete byte ptr ss:[ebp-0xD]
00401384   .  E8 11030000   call <jmp.&MFC42.#CString::~CString_800>
00401389   .  385D F3       cmp byte ptr ss:[ebp-0xD],bl
0040138C   .  0F84 F3000000 je Cosh_1.00401485
00401392   >  FF45 EC       inc dword ptr ss:[ebp-0x14]
00401395   .  83C7 04       add edi,0x4
00401398   .  837D EC 07    cmp dword ptr ss:[ebp-0x14],0x7
0040139C   .^ 75 9F         jnz XCosh_1.0040133D
0040139E   .  53            push ebx
0040139F   .  68 4C304000   push Cosh_1.0040304C                          ;  ASCII "Try again"
004013A4   .  68 40304000   push Cosh_1.00403040                          ;  ASCII "You lost"
004013A9   >  8B4D E4       mov ecx,dword ptr ss:[ebp-0x1C]
004013AC   .  E8 D1020000   call <jmp.&MFC42.#CWnd::MessageBoxA_4224>00401485   >  53            push ebx
00401486   .  68 34304000   push Cosh_1.00403034                          ;  ASCII "You did it"
0040148B   .  68 20304000   push Cosh_1.00403020                          ;  ASCII "Well done, Cracker"
00401490   .^ E9 14FFFFFF   jmp Cosh_1.004013A9                           ;  跳回上面去

看看OD给的注释几乎就能猜到这个程序保护的思路了。
程序似乎是在检测每个磁盘分区里是否存在一个叫做“CD_CHECK.DAT”的文件。如果存在就显示正确,不然的话判断下一个分区是否存在该文件,总共判断7次。

00401392   >  FF45 EC       inc dword ptr ss:[ebp-0x14]
00401398   .  837D EC 07    cmp dword ptr ss:[ebp-0x14],0x7
0040139C   .^ 75 9F         jnz XCosh_1.0040133D

然后发现即使是创建了一个叫做“CD_CHECK.DAT”文件在C盘,在调用完CreateFileA后返回值仍然是-1,通过编写类似的程序,发现是参数错误,

    CreateFileA("c:\\CD_CHECK.DAT",GENERIC_READ,FILE_SHARE_READ,NULL,0,0,NULL);int d = GetLastError();printf("%d",d);

结果为:87
查看System Error Codes,得到:

ERROR_INVALID_PARAMETER87 (0x57)The parameter is incorrect.

改为:

    CreateFileA("c:\\CD_CHECK.DAT",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);int d = GetLastError();printf("%d",d);

结果为:0
再查一查CreateFileA函数,并没有发现dwCreationDisposition形参(即OD里的Mode)可以允许值为0

dwCreationDisposition [in]
An action to take on a file or device that exists or does not exist.
For devices other than files, this parameter is usually set to OPEN_EXISTING.
For more information, see the Remarks section.
This parameter must be one of the following values, which cannot be combined:

ValueMeaning
CREATE_ALWAYS 2Creates a new file, always.If the specified file exists and is writable, the function overwrites the file, the function succeeds, and last-error code is set to ERROR_ALREADY_EXISTS (183). If the specified file does not exist and is a valid path, a new file is created, the function succeeds, and the last-error code is set to zero.For more information, see the Remarks section of this topic.
CREATE_NEW 1Creates a new file, only if it does not already exist.If the specified file exists, the function fails and the last-error code is set to ERROR_FILE_EXISTS (80).If the specified file does not exist and is a valid path to a writable location, a new file is created.
OPEN_ALWAYS 4Opens a file, always.If the specified file exists, the function succeeds and the last-error code is set to ERROR_ALREADY_EXISTS (183).If the specified file does not exist and is a valid path to a writable location, the function creates a file and the last-error code is set to zero.
OPEN_EXISTING 3Opens a file or device, only if it exists.If the specified file or device does not exist, the function fails and the last-error code is set to ERROR_FILE_NOT_FOUND (2).For more information about devices, see the Remarks section.
TRUNCATE_EXISTING 5Opens a file and truncates it so that its size is zero bytes, only if it exists.If the specified file does not exist, the function fails and the last-error code is set to ERROR_FILE_NOT_FOUND (2).The calling process must open the file with the GENERIC_WRITE bit set as part of the dwDesiredAccess parameter.

所以可以认为这个CreaterFileA没有作用
于是可以在此处修改代码:

0040134F      83F8 03       cmp eax,0x3
00401352   .  74 3E         je XCosh_1.00401392

改为:

0040134F     /E9 31010000   jmp Cosh_1.00401485

出现结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

160 - 28 CoSH.2

环境 Windows xp sp3 工具 exeinfope ollydbg 查壳 无壳的MFC程序 测试 输入 Nmae:123456 Serial:12345 点击“CHECK”后弹出错误提示的消息框&#xff0c;然后程序自己结束掉 依然是字符串搜索&#xff1a; 004014DB . 8B1D FC214000 mov ebx,dword ptr ds…

ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework

文章来源&#xff1a; Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节&#xff1a;ASP.NET MVC 5 入门教程 (4) View和ViewBag 下一节&#xff1a;ASP.NET MVC5 EF6 入门教程 (6) View中的Razor使用 源码下载&#xff1a;点我下…

160 - 29 cosh.3

环境 Windows xp sp3 工具 exeinfope ollydbg 查壳 无壳的MFC程序 测试 字符串搜索&#xff1a; 004014F5 |. E8 AA030000 call <jmp.&MFC42.#CWnd::GetWindowTextLengthA_> 004014FA |. 8945 EC mov [local.5],eax 004014FD |. 837D EC 0…

hdu--4902--线段树

题意 前面一段废话 这题 最有意思的应该是出题人 是clj 这题的时限放的太宽了 给了15s 我也是醉了 区间更新。 1 #include <iostream>2 #include <algorithm>3 using namespace std;4 5 const int size 200010;6 int a[size];7 struct data8 {9 int L , R ,…

(五) 面向对象类设计原则

1. 开闭原则&#xff08;the Open Closed Principle OCP&#xff09; 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。因此在进行面向对象设计时要尽量考虑接口封装机制、抽象机制和多态技术。该原则同样适合于非面向对象设计的方法&#xff0c;是软件工程 设计…

160 - 30 cracking4all.1

环境 Windows XP sp3 工具 exeinfope ollydbg 查壳 无壳的VB程序 测试 这个serial藏得比较里面&#xff0c;多点几下才能看到 字符串搜索&#xff1a; 00403338 . 50 push eax ; /var18 00403339 . 51 …

MVC5 + EF6 入门完整教程

MVC5 EF6 入门完整教程 原文:MVC5 EF6 入门完整教程第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比&#xff0c;增加了很多"约定"。 直接讲这些 "约定" 会让人困惑&#xff0c;而且东西太多容易忘记。 和微软官方教程不同&#xff0c…

160 - 31 cracking4all.2

环境 Windows xp sp3 工具 exeinfope ollydbg 查壳 无壳VB程序 测试 输入1234567 OD载入字符串搜素&#xff0c;往上翻就看到这里&#xff0c;我截取部分片段&#xff1a; 00402C26 . 8D55 98 lea edx,dword ptr ss:[ebp-0x68] ; 取serial长度…

160 - 32 genocide1

环境 Windows xp sp3 工具 upx exeinfope ollydbg 查壳 发现是upx壳&#xff0c;手脱的话会不干净&#xff0c;影响OD分析。 所以就直接用 upx -d 脱了 手脱&#xff1a; upx -d: 用upx -d 脱的版本进行分析。 第一次运行时显示这个&#xff1a; 缺少Reg.dat…

160 - 33 Cruehead.1

环境 windows xp sp3 工具 exeinfo pe ollydbg 查壳 无壳的汇编程序&#xff08;OD载入的出来的&#xff09; 测试 当name输入为数字时&#xff0c;会弹出两次错误框。 OD载入搜字符串&#xff0c;发现有两个地方&#xff1a; 0040134D /$ 6A 30 push 0x…

英文系统上网页内容乱码的解决

今天随便写了一段html 代码示例&#xff0c;代码如下&#xff1a; <html lang"zh-cn"> <head> </head> <body> <h1>HTML 教程目录</h1> <ul> <li><a href"#C1">第一章</a></li> <li…

160 - 34 Cruehead.3

环境 windows xp sp3 工具 1.exeinfo pe 2.ollydbg 3.WinHex 查壳 和上一个一样&#xff0c;OD载入判断出 测试 运行后发现是没有任何提示&#xff0c;而且没有输入serial的窗口&#xff0c;通过任务管理器可以看出程序的名称写有“Uncracked”&#xff0c;可以猜测…

160 - 35 cupofcoffe.1

环境 Windows xp sp3 工具 1.exeinfo PE 2.ollydbg 查壳 OD载入后可以看出是VB程序 测试 输入&#xff1a;12345678 显示的内容发生了改变&#xff0c;也不影响查找字符串。 004FEC14 > \8B4D E8 mov ecx,dword ptr ss:[ebp-0x18] 004FEC17 . 51 …

ecshop后台增加模板页的方法

CShop的动态模板机制是一个非常灵活的系统,管理员可以在后台根据自己的要求调整模板模块的显示位置。本文详细讲解了如何修改ECSHOP内部结构使得用户可以添加自己的模板页从而方便灵活的使用系统自带的模板系统和广告位系统。 如下图所示 可以看到ECShop支持设置的模板一共如上…

160 - 36 cupofcoffe.2

环境 Winows xp sp3 工具 1.exeinfo PE 2.ollydbg 查壳 OD载入后看出是VB程序 测试 输入&#xff1a;12345678 继续OD搜字符串&#xff1a; 00521688 . 68 60054500 push cupofcof.00450560 ; UNICODE ".........." 0052168D …

160 - 37 CyberBlade.1

环境 Windows xp sp3 工具 1.exeinfo PE 2.ollydbg 查壳 OD载入是VB程序。 测试 OD载入直接搜字符串。 这个是当输入为空时会弹出消息框告诉你要输入9个字符。 0040E005 > \8B4D E4 mov ecx,dword ptr ss:[ebp-0x1C] 0040E008 . 51 push…

160 - 38 CyberBlade.2

环境 Windows xp sp3 工具 1.VBExplorer 2.ollydbg 查壳 OD载入往上翻可以看出是vb程序&#xff0c;看到 00401042 .- FF25 60104100 jmp dword ptr ds:[<&MSVBVM50.MethCallEngine>] ; MSVBVM50.MethCallEngine 可以知道是p-code的了 测试…

160 - 39 damn

环境 Windows xp sp3 工具 1.exeinfo PE 2.ollydbg 查壳 OD加载就知道有壳了&#xff0c;可以esp定律直接脱掉 exeinfoPE查壳&#xff1a; 测试 点击LOCKED图片会弹出消息框&#xff0c;Register注册按钮无法点击&#xff01; 猜测Register按钮会在输入正确的nam…

160 - 40 DaNiEl-RJ.1

环境 Windows xp sp3 工具 1.exeinfo PE 2.ollydbg 查壳 无壳Delphi程序 测试&#xff1a; 按照说明点到这个注册窗口。 OD载入搜字符串&#xff0c;直接可以定位到这里 0042D4A8 /. 55 push ebp 0042D4A9 |. 8BEC mov ebp,esp 0042D4…

IOS详解TableView——选项抽屉(天猫商品列表)

在之前的有篇文章讲述了利用HeaderView来写类似QQ好友列表的表视图。 这里写的天猫抽屉其实也可以用该方法实现&#xff0c;具体到细节每个人也有所不同。这里采用的是点击cell对cell进行运动处理以展开“抽屉”。 最后完成的效果大概是这个样子。 主要的环节&#xff1a; 点击…