吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3524|回复: 16
收起左侧

[CrackMe] 无花无壳可爆破!简单if比较密码是否正确的小CM

  [复制链接]
qzhsjz 发表于 2020-7-29 17:09
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 qzhsjz 于 2020-7-31 08:54 编辑


一个简单验证密码是否正确的小程序,无花无壳,就是库比较大。VS直出,可以爆破。
唯一不好的地方大概就是没什么特征可以直接用了

为了证明这个程序确实很简单,我将在近期把本程序的源代码(抹去密码)贴出来,这样或许也可降低难度,可以根据源代码得出可用的特征。
但是需要注意,在我贴出源代码以后,请完成任务的大哥们不要只贴截图,至少简述一下思路。
源代码:https://www.52pojie.cn/thread-1234859-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 13吾爱币 +11 热心值 +12 收起 理由
月六点年一倍 + 1 鼓励转贴优秀软件安全工具和文档!
tiangaoyang + 1 我很赞同!
linrunqing521 + 1 我很赞同!
CrazyNut + 6 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Fast7482977 + 1 谢谢@Thanks!
当尔康来敲门 + 1 我很赞同!
love100 + 1 + 1 用心讨论,共获提升!
i66235 + 1 热心回复!
smallchop + 1 + 1 我很赞同!
a414301344 + 1 + 1 我很赞同!
13081616965 + 1 谢谢@Thanks!
hzz137 + 1 我很赞同!
wang15353335589 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wangyujie96 发表于 2020-7-31 12:37
本帖最后由 wangyujie96 于 2020-7-31 12:38 编辑





密码已出,SimpleCrackMe.exe+37C6下个断点,rcx即是密码。哈哈哈,感谢楼主没有给字符串加密

CE搜索编辑框内存然后单步跟踪得出的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
CrazyNut + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

wangyujie96 发表于 2020-7-31 12:41
ps:没有看源代码,只是从那个帖子过来的。既然说无花无壳而且是if简单判断,小白应该能解,CE大-法好呀
solly 发表于 2020-8-1 02:01
本帖最后由 solly 于 2020-8-1 02:06 编辑

通过在 DefWindowProcW 下断点,可以找到消息循环处理函数,WndProc :
[Asm] 纯文本查看 复制代码
000000014099EF60 | 40:53                  | push rbx                                      |
000000014099EF62 | 55                     | push rbp                                      |
000000014099EF63 | 56                     | push rsi                                      |
000000014099EF64 | 57                     | push rdi                                      |
000000014099EF65 | 48:83EC 48             | sub rsp,48                                    | 条件断点:rdx == WM_LBUTTONUP
000000014099EF69 | 48:8B05 A0E06900       | mov rax,qword ptr ds:[14103D010]              |
000000014099EF70 | 48:33C4                | xor rax,rsp                                   |
000000014099EF73 | 48:894424 38           | mov qword ptr ss:[rsp+38],rax                 |
000000014099EF78 | 49:8BE9                | mov rbp,r9                                    |
000000014099EF7B | C74424 20 00000000     | mov dword ptr ss:[rsp+20],0                   |
000000014099EF83 | 49:8BF0                | mov rsi,r8                                    |
000000014099EF86 | 4C:8D0D 13D78200       | lea r9,qword ptr ds:[1411CC6A0]               |
000000014099EF8D | 8BFA                   | mov edi,edx                                   |
000000014099EF8F | 4C:8D05 5AAD7400       | lea r8,qword ptr ds:[1410E9CF0]               |
000000014099EF96 | 48:8BD9                | mov rbx,rcx                                   |
000000014099EF99 | 33D2                   | xor edx,edx                                   |
000000014099EF9B | 48:8B0D BE468700       | mov rcx,qword ptr ds:[141213660]              |
000000014099EFA2 | E8 B1BF1200            | call simplecrackme.140ACAF58                  |
000000014099EFA7 | 48:85C0                | test rax,rax                                  | rax == 0 未处理
000000014099EFAA | 74 34                  | je simplecrackme.14099EFE0                    |
000000014099EFAC | 48:8D4C24 30           | lea rcx,qword ptr ss:[rsp+30]                 |
000000014099EFB1 | 48:C74424 30 00000000  | mov qword ptr ss:[rsp+30],0                   |
000000014099EFBA | 48:894C24 28           | mov qword ptr ss:[rsp+28],rcx                 |
000000014099EFBF | 4C:8BCE                | mov r9,rsi                                    |
000000014099EFC2 | 48:8BC8                | mov rcx,rax                                   |
000000014099EFC5 | 48:896C24 20           | mov qword ptr ss:[rsp+20],rbp                 |
000000014099EFCA | 44:8BC7                | mov r8d,edi                                   |
000000014099EFCD | 48:8BD3                | mov rdx,rbx                                   |
000000014099EFD0 | E8 5BEBFFFF            | call simplecrackme.14099DB30                  |
000000014099EFD5 | 84C0                   | test al,al                                    | al == 0 未处理
000000014099EFD7 | 74 07                  | je simplecrackme.14099EFE0                    |
000000014099EFD9 | 48:8B4424 30           | mov rax,qword ptr ss:[rsp+30]                 |
000000014099EFDE | EB 11                  | jmp simplecrackme.14099EFF1                   |
000000014099EFE0 | 4C:8BCD                | mov r9,rbp                                    |
000000014099EFE3 | 4C:8BC6                | mov r8,rsi                                    |
000000014099EFE6 | 8BD7                   | mov edx,edi                                   |
000000014099EFE8 | 48:8BCB                | mov rcx,rbx                                   |
000000014099EFEB | FF15 A7D41B00          | call qword ptr ds:[<&NtdllDefWindowProc_W>]   |
000000014099EFF1 | 48:8B4C24 38           | mov rcx,qword ptr ss:[rsp+38]                 |
000000014099EFF6 | 48:33CC                | xor rcx,rsp                                   |
000000014099EFF9 | E8 621F1100            | call simplecrackme.140AB0F60                  |
000000014099EFFE | 48:83C4 48             | add rsp,48                                    |
000000014099F002 | 5F                     | pop rdi                                       |
000000014099F003 | 5E                     | pop rsi                                       |
000000014099F004 | 5D                     | pop rbp                                       |
000000014099F005 | 5B                     | pop rbx                                       |
000000014099F006 | C3                     | ret                                           |

如上所示,下一个 rdx == WM_LBUTTONUP 的条件断点,然后输入一长串字符,点按钮就会中断,然后切换到 x64dbg的内存布局界面,依次在显示信息为空,PRV 类型的内存段中搜索刚才输入的 Unicode 字符串,就会在某个内存段中找到两条保存该字符串的地址,对两个地址都下硬件断点,就可以找到操作字符串的代码(这里要有耐心,要搜好多个段才能搜到):
[Asm] 纯文本查看 复制代码
0000000140AB5D70 | 0F100411               | movups xmm0,xmmword ptr ds:[rcx+rdx]          | rcx+rdx*1:L"234568889994545435999999998666"
0000000140AB5D74 | 48:83C1 10             | add rcx,10                                    |
0000000140AB5D78 | 49:83E8 10             | sub r8,10                                     |
0000000140AB5D7C | 4D:8BC8                | mov r9,r8                                     |
0000000140AB5D7F | 49:C1E9 04             | shr r9,4                                      |
0000000140AB5D83 | 74 1C                  | je simplecrackme.140AB5DA1                    |
0000000140AB5D85 | 666666:0F1F8400 000000 | nop word ptr ds:[rax+rax],ax                  |
0000000140AB5D90 | 0F1141 F0              | movups xmmword ptr ds:[rcx-10],xmm0           |
0000000140AB5D94 | 0F100411               | movups xmm0,xmmword ptr ds:[rcx+rdx]          | rcx+rdx*1:L"234568889994545435999999998666"

这是在一个字符串复制函数内,然后几个ret返回就到了这里,可以看到密码了:
[Asm] 纯文本查看 复制代码
000000014000378D | 48:8B09                | mov rcx,qword ptr ds:[rcx]          | rcx:L"AngeloTheCat-52Pojie-SimpleCrackMe"
0000000140003790 | 48:8B01                | mov rax,qword ptr ds:[rcx]          | rcx:L"AngeloTheCat-52Pojie-SimpleCrackMe"
0000000140003793 | 48:8B80 B8000000       | mov rax,qword ptr ds:[rax+B8]       |
000000014000379A | FF15 488FB500          | call qword ptr ds:[140B5C6E8]       |
00000001400037A0 | 48:8D4D D7             | lea rcx,qword ptr ss:[rbp-29]       |
00000001400037A4 | 4C:8B50 20             | mov r10,qword ptr ds:[rax+20]       |
00000001400037A8 | 4D:8BC2                | mov r8,r10                          |
00000001400037AB | 4D:85D2                | test r10,r10                        |
00000001400037AE | 74 31                  | je simplecrackme.1400037E1          |
00000001400037B0 | 48:8B50 18             | mov rdx,qword ptr ds:[rax+18]       |
00000001400037B4 | 48:8B40 08             | mov rax,qword ptr ds:[rax+8]        | [rax+8]:L"234568889994545435999999998666"
00000001400037B8 | 4C:8D0C50              | lea r9,qword ptr ds:[rax+rdx*2]     |
00000001400037BC | 48:8D45 D7             | lea rax,qword ptr ss:[rbp-29]       |
00000001400037C0 | 4C:2BC8                | sub r9,rax                          |
00000001400037C3 | 49:FFC8                | dec r8                              |
00000001400037C6 | 0FB711                 | movzx edx,word ptr ds:[rcx]         | rcx:L"AngeloTheCat-52Pojie-SimpleCrackMe"
00000001400037C9 | 66:85D2                | test dx,dx                          |
00000001400037CC | 74 13                  | je simplecrackme.1400037E1          |




免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
CrazyNut + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

月六点年一倍 发表于 2020-7-30 17:49
谢谢楼主分享,学习了
llj5935 发表于 2020-7-29 22:35
解开了,挺有意思的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x
alicc 发表于 2020-7-29 19:16
这CM UI 不错 是DIY皮肤还是ec
 楼主| qzhsjz 发表于 2020-7-29 19:18
本帖最后由 qzhsjz 于 2020-7-29 19:19 编辑
alicc 发表于 2020-7-29 19:16
这CM UI 不错 是DIY皮肤还是ec

是某知乎大V的看家作品:
http://www.gaclib.net/
C++写出WPF的感觉,可能也就仅此一家了
lsword2000 发表于 2020-7-30 09:34
说的挺简单,我这样的菜鸟也试一下!
 楼主| qzhsjz 发表于 2020-7-30 13:05
llj5935 发表于 2020-7-29 22:35
解开了,挺有意思的

大神,目前为止只有您一个人做出来,能说明一下思路吗?
suchuan4562 发表于 2020-7-30 14:33
感谢楼主 学习到了
GUIJINLIN 发表于 2020-7-30 14:36
感谢分享
ashuolalala 发表于 2020-7-30 15:00

说的挺简单,我这样的菜鸟也试一下!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表