160 - 33 Cruehead.1

环境
windows xp sp3

工具
exeinfo pe ollydbg

查壳
无壳的汇编程序(OD载入的出来的)

测试

当name输入为数字时,会弹出两次错误框。

OD载入搜字符串,发现有两个地方:

0040134D  /$  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0040134F  |.  68 29214000   push Cruehead.00402129                   ; |Title = "Good work!"
00401354  |.  68 34214000   push Cruehead.00402134                   ; |Text = "Great work, mate!
Now try the next CrackMe!"
00401359  |.  FF75 08       push [arg.1]                             ; |hOwner
0040135C  |.  E8 D9000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
00401361  \.  C3            retn
00401362  /$  6A 00         push 0x0                                 ; /BeepType = MB_OK
00401364  |.  E8 AD000000   call <jmp.&USER32.MessageBeep>           ; \MessageBeep
00401369  |.  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0040136B  |.  68 60214000   push Cruehead.00402160                   ; |Title = "No luck!"
00401370  |.  68 69214000   push Cruehead.00402169                   ; |Text = "No luck there, mate!"
00401375  |.  FF75 08       push [arg.1]                             ; |hOwner
00401378  |.  E8 BD000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
0040137D  \.  C3            retn
0040137E  /$  8B7424 04     mov esi,dword ptr ss:[esp+0x4]
00401382  |.  56            push esi
00401383  |>  8A06          /mov al,byte ptr ds:[esi]
00401385  |.  84C0          |test al,al
00401387  |.  74 13         |je XCruehead.0040139C
00401389  |.  3C 41         |cmp al,0x41
0040138B  |.  72 1F         |jb XCruehead.004013AC
0040138D  |.  3C 5A         |cmp al,0x5A
0040138F  |.  73 03         |jnb XCruehead.00401394
00401391  |.  46            |inc esi
00401392  |.^ EB EF         |jmp XCruehead.00401383
00401394  |>  E8 39000000   |call Cruehead.004013D2
00401399  |.  46            |inc esi
0040139A  |.^ EB E7         \jmp XCruehead.00401383
0040139C  |>  5E            pop esi
0040139D  |.  E8 20000000   call Cruehead.004013C2
004013A2  |.  81F7 78560000 xor edi,0x5678
004013A8  |.  8BC7          mov eax,edi
004013AA  |.  EB 15         jmp XCruehead.004013C1
004013AC  |>  5E            pop esi
004013AD  |.  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
004013AF  |.  68 60214000   push Cruehead.00402160                   ; |Title = "No luck!"
004013B4  |.  68 69214000   push Cruehead.00402169                   ; |Text = "No luck there, mate!"
004013B9  |.  FF75 08       push [arg.1]                             ; |hOwner
004013BC  |.  E8 79000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
004013C1  \>  C3            retn

可以猜测出会有两次判断,当第一次错误时,弹出的错误消息框是[004013BC]的,然后再会弹出[00401378]的消息框。于是可以下断点,看看第一次显示错误消息框的函数是在哪里调用的。

004011E6   >  5B            pop ebx
004011E7   . |5F            pop edi
004011E8   . |5E            pop esi
004011E9   . |C9            leave
004011EA   . |C2 1000       retn 0x10
004011ED   > |6A 00         push 0x0                                 ; /lParam = NULL
004011EF   . |68 0A134000   push Cruehead.0040130A                   ; |DlgProc = Cruehead.0040130A
004011F4   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hOwner
004011F7   . |68 1F214000   push Cruehead.0040211F                   ; |pTemplate = "DLG_ABOUT"
004011FC   . |FF35 CA204000 push dword ptr ds:[0x4020CA]             ; |hInst = 00400000
00401202   . |E8 99020000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401207   .^ EB DD         jmp XCruehead.004011E6
00401209   > |6A 00         push 0x0                                 ; /lParam = NULL
0040120B   . |68 53124000   push Cruehead.00401253                   ; |DlgProc = Cruehead.00401253
00401210   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hOwner
00401213   . |68 15214000   push Cruehead.00402115                   ; |pTemplate = "DLG_REGIS"
00401218   . |FF35 CA204000 push dword ptr ds:[0x4020CA]             ; |hInst = 00400000
0040121E   . |E8 7D020000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401223   . |83F8 00       cmp eax,0x0
00401226   .^ 74 BE         je XCruehead.004011E6
00401228   . |68 8E214000   push Cruehead.0040218E                   ;  ASCII "123456",这是输入的name
0040122D   . |E8 4C010000   call Cruehead.0040137E                   ;  第一个错误消息框弹出位置
00401232   . |50            push eax
00401233   . |68 7E214000   push Cruehead.0040217E                   ;  ASCII "12345",这是输入的serial
00401238   . |E8 9B010000   call Cruehead.004013D8                   ;  第二个比较点
0040123D   . |83C4 04       add esp,0x4
00401240   . |58            pop eax
00401241   . |3BC3          cmp eax,ebx
00401243   . |74 07         je XCruehead.0040124C
00401245   . |E8 18010000   call Cruehead.00401362                   ;  第二次消息框弹出位置
0040124A   .^ EB 9A         jmp XCruehead.004011E6
0040124C   > |E8 FC000000   call Cruehead.0040134D                   ;  正确消息框弹出
00401251   .^\EB 93         jmp XCruehead.004011E6

这样就可以在两个关键call的位置下断点分析了。
第一个call的分析:

0040137E  /$  8B7424 04     mov esi,dword ptr ss:[esp+0x4]
00401382  |.  56            push esi
00401383  |>  8A06          /mov al,byte ptr ds:[esi]
00401385  |.  84C0          |test al,al
00401387  |.  74 13         |je XCruehead.0040139C
00401389  |.  3C 41         |cmp al,0x41
0040138B  |.  72 1F         |jb XCruehead.004013AC                   ;  如果有比'A'小的就跳出循环,弹出错误
0040138D  |.  3C 5A         |cmp al,0x5A
0040138F  |.  73 03         |jnb XCruehead.00401394                  ;  如果有比'Z'大的就减0x20
00401391  |.  46            |inc esi
00401392  |.^ EB EF         |jmp XCruehead.00401383
00401394  |>  E8 39000000   |call Cruehead.004013D2                  ;  这里就是减0x20
00401399  |.  46            |inc esi
0040139A  |.^ EB E7         \jmp XCruehead.00401383
0040139C  |>  5E            pop esi
0040139D  |.  E8 20000000   call Cruehead.004013C2                   ;  这里是将字符串的每个字符的ascii值加起来
004013A2  |.  81F7 78560000 xor edi,0x5678
004013A8  |.  8BC7          mov eax,edi
004013AA  |.  EB 15         jmp XCruehead.004013C1
004013AC  |>  5E            pop esi
004013AD  |.  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
004013AF  |.  68 60214000   push Cruehead.00402160                   ; |Title = "No luck!"
004013B4  |.  68 69214000   push Cruehead.00402169                   ; |Text = "No luck there, mate!"
004013B9  |.  FF75 08       push [arg.1]                             ; |hOwner
004013BC  |.  E8 79000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
004013C1  \>  C3            retn
004013C2  /$  33FF          xor edi,edi
004013C4  |.  33DB          xor ebx,ebx
004013C6  |>  8A1E          /mov bl,byte ptr ds:[esi]
004013C8  |.  84DB          |test bl,bl
004013CA  |.  74 05         |je XCruehead.004013D1
004013CC  |.  03FB          |add edi,ebx
004013CE  |.  46            |inc esi
004013CF  |.^ EB F5         \jmp XCruehead.004013C6
004013D1  \>  C3            retn

其实就是按一定要求处理name然后再将name中每个字符加起来后异或0x5678

第二个call的分析:

004013D8  /$  33C0          xor eax,eax
004013DA  |.  33FF          xor edi,edi
004013DC  |.  33DB          xor ebx,ebx
004013DE  |.  8B7424 04     mov esi,dword ptr ss:[esp+0x4]
004013E2  |>  B0 0A         /mov al,0xA
004013E4  |.  8A1E          |mov bl,byte ptr ds:[esi]
004013E6  |.  84DB          |test bl,bl
004013E8  |.  74 0B         |je XCruehead.004013F5
004013EA  |.  80EB 30       |sub bl,0x30
004013ED  |.  0FAFF8        |imul edi,eax
004013F0  |.  03FB          |add edi,ebx
004013F2  |.  46            |inc esi
004013F3  |.^ EB ED         \jmp XCruehead.004013E2
004013F5  |>  81F7 34120000 xor edi,0x1234
004013FB  |.  8BDF          mov ebx,edi
004013FD  \.  C3            retn

这里是将serial的内容转成16进制后与0x1234进行异或运算。

最后比较两个call的返回值是否相同,不同的话会弹出第二个错误消息框。如果相同的话会弹出正确的消息框。

如:
name:1
serial:4661

就会弹出两个消息框,一个错误的,一个正确的。

name:gnubd
serial:17724

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

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

相关文章

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

今天随便写了一段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; 点击…

Unicode与JavaScript详解 [很好的文章转]

上个月&#xff0c;我做了一次分享&#xff0c;详细介绍了Unicode字符集&#xff0c;以及JavaScript语言对它的支持。下面就是这次分享的讲稿。 一、Unicode是什么&#xff1f; Unicode源于一个很简单的想法&#xff1a;将全世界所有的字符包含在一个集合里&#xff0c;计算机只…

编辑器使用说明

欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来&#xff0c;用它写博客&#xff0c;将会带来全新的体验哦&#xff1a; Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰…

Python3.6 IDLE 使用 multiprocessing.Process 不显示执行函数的打印

要运行的程序&#xff1a; import os from multiprocessing import Process import timedef run_proc(name):print(Child process %s (%s) Running...%(name,os.getpid()))# time.sleep(5)if __name__ __main__:print("Show Start:")print(Parent process %s. % os…

python Requests登录GitHub

工具&#xff1a; python 3.6 Fiddler4 所需要的库&#xff1a; requests BeautifulSoup 首先抓包&#xff0c;观察登录时需要什么&#xff1a; 这个authenticity_token的值是访问/login后可以获取&#xff0c;值是随机生成的&#xff0c;所以登录前要获取一下。 注…

windows下Java 用idea连接MySQL数据库

Java用idea连接数据库特别简单。 首先就是下载好MySQL数据库的驱动程序。 链接&#xff1a;https://dev.mysql.com/downloads/connector/j/ 然后就是选下载版本了&#xff1a; 选个zip格式的嘛。。 下载完后就解压。打开idea&#xff0c;建立个简单的项目 找到这个: …

7-2

#include<stdio.h> int main(void) {int i;int fib[10]{1,1};for(i2;i<10;i)fib[i]fib[i-1]fib[i-2];for(i0;i<10;i){printf("%6d",fib[i]);if((i1)%50)printf("\n");}return 0; } 转载于:https://www.cnblogs.com/liruijia199531/p/3357481.h…

160 - 41 defiler.1.exe

环境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg stud_PE LoadPE 先分析一下。 这次的程序要求更改了&#xff0c;变成了这个&#xff1a; defilers reversme no.1 -----------------------The task of this little, lame reverseme is to add some code to…

160 - 44 defiler.1.exe

环境&#xff1a; Windows xp sp3 工具&#xff1a; 1.ollydbg 2.exeinfope 0x00 查壳 无壳就下一步 0x01 分析 随便输入个错的&#xff0c;出现了不知道哪国的语言。有个6&#xff0c;应该就是name的长度要大于6吧 OD载入&#xff0c;搜字符串。 00421BD7 |. 807D…

时间与日期处理

主要有以下类&#xff1a; NSDate -- 表示一个绝对的时间点NSTimeZone -- 时区信息NSLocale -- 本地化信息NSDateComponents -- 一个封装了具体年月日、时秒分、周、季度等的类NSCalendar -- 日历类&#xff0c;它提供了大部分的日期计算接口&#xff0c;并且允许您在NSDate和N…

160 - 45 Dope2112.2

环境&#xff1a; Windows xp sp3 工具 1.ollydbg 2.exeinfope 0x00 查壳 还是无壳的Delphi程序 0x01 分析 这次继续OD载入搜字符串&#xff0c;但是没找到错误信息的字符串。 又因为是Delphi程序&#xff0c;所以可以试一下这样&#xff1a; OD载入后还是搜字符串&…