吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3248|回复: 13
收起左侧

[原创] 160个Crackme之049学习笔记

[复制链接]
海天一色001 发表于 2021-1-21 13:54
本帖最后由 海天一色001 于 2021-1-21 13:57 编辑

第49个CM,先打开,是Name/Serial模式,先输入“52pojie/1234567890”,点击Check按钮,弹出错误信息框,内容翻译过来是“你的注册信息是无效的... 注意大多数特殊字符可能会引起注册问题!”
001.png
一、查壳:
002.png
ASM编程,无壳。
二、爆破:
将CM程序导入OD中,ASM程序,从00401000开头向下查看,代码很简洁清晰,标准的windows程序。
到004010D5处,一个跳转命令,跳过了注册成功的信息框,那么就是关键跳了,nop一下,
003.png
保存为DueList.4.nop.exe,双击运行,弹出注册成功信息框,但标题栏为空。
点击“确定”按钮,又见一个注册成功信息框,此时标题栏中有“Duelist's Crackme #4”的字样。点掉,再点掉,就在标题栏有无字符之间不断重复,说明爆破不完全成功,此处nop掉可能使程序正常运行的参数丢了,造成死循环了。只好用Ctrl+Alt+Del键来强行关闭了。
回到OD,在004010D7处下断,F9运行,F8单步:
004.png
运行完004010E8代码,听到“叮咚”一声,看到当前代码又回到了004010D7处!
继续F8单步,再次、3次、4次。。。N次代码回到004010D7处,程序进入了死循环?所以会不断弹出正确信息框吗?
又按了N次F9,程序竟然向下走到了004010ED处!
再F8单步在0040111D处返回到系统空间 77D18734 (user32.77D18734)后,Alt+F9,又又又返回到004010D7处!
继续F8,又是回到004010D7处。又是N多次后,终于确认,这个程序在004010D5处nop不是好的选择。
所以DueList.4.nop.exe是一个不怎么成功的爆破程序。
转换一下思路,正确提示这里不行,再看看错误提示处:
005.png
向下到0040121A至0040122B处是弹出错误提示的代码段,点击0040121A行,信息栏中显示“跳转来自 0040113F, 00401148, 00401163, 0040116B, 004011B1, 004011B6, 004011F9”。
干脆将这6个来源的跳转全部nop掉,再保存为DueList.4.nop1.exe,运行一下,不用输入任何Name/Serial,点击Check按钮,弹出正确提示窗口,说明这次爆破成功了,只是nop的地方多了点。
三、追码:
撤消刚才所有的修改,继续观察代码:
爆破时已知修改正确提示窗口前的跳转命令不可取,而nop掉跳转到错误窗口的指令可行,那就从“0040113F, 00401148, 00401163, 0040116B, 004011B1, 004011B6, 004011F9”这6个跳转地址入手来查看:
先来到第1个地址0040113F处,指令是je DueList_.0040121A,相等则跳,再上下查看:
006.png
在00401127处下断,F9运行,输入Name/Serial为“52pojie/1234567890”,点击Check按钮,程序中断,F8单步,动静结合分析:
00401127至00401132处,00401150至0040115B处分别得到用户名“52pojie”和注册码“1234567890”的字符串长度为0x7和0xA;
0040113C至00401148处,对用户名进行限制,0<用户名长度<8;
00401160至0040116B处,对注册码进行限制,不能为空,且注册码长度必须等于用户名长度。
单步至00401169处,因为两个字符串长度不等,下一句会跳走,所以在单步至0040116B处时,双击寄存器窗口的Z标志位上的“0”,使之改为“1”,程序不跳走,继续单步向下:
007.png
00401171至00401192处,得到用户名和输入的注册码,可以看到内存地址中将用户名存入00402160处,注册码存入00402179处。
继续单步向下,00401197到004011D9之间根据输入的用户名生成真正的注册码:
008.png
先判断用户名字符,不能小于0x41,不能大于0x7A,即所有的大小字母和[ \ ] ^ — 、这六个特殊符号:
字符值大于0x5A时,减去0x20,即小写转成小写:
所以原来输入的“52pojie/1234567890”就不对了,Ctrl+F2 再F9重新运行,输入“wapojie/1234567”,点击Check按钮,程序中断于00401127处,再F8单步向下:
利用004011C0至004011CA的循环,在ds:[esi+0x402017]中字符串“A1LSK2DJF4HGP3QWO5EIR6UTYZ8MXN7CBV9” 查找上面输入用户名运算后生成的字符位置;
将ds:[esi+0x40203C]中字符串“SU7CSJKF09NCSDO9SDF09SDRLVK7809S4NF”相同位置的字符取出存入ds:[ecx+0x402194]中,循环结束后生成了真正的注册码“9SSSF0F”:
009.png
004011DB至004011F9处,前3行指令作为参数,进入第四行的00401244的call中进行判断,正确则eax=1,跳到正确提示004010D7处,否则失败。
这样就可以编写注册机了。
本想用刚刚开始学习的C语言来编程,却发现VB中有的字符串处理函数在C语言中竟然没有!!!需要用到指针等让我还没弄明白的东西去自己编写函数,未经系统学习,确实太难了点!
所以这次的注册机仍然先以Vb来编写。

[Visual Basic] 纯文本查看 复制代码
Option Explicit
Private Sub Command1_Click()
Dim i As Integer
Dim NString: NString = "A1LSK2DJF4HGP3QWO5EIR6UTYZ8MXN7CBV9"
Dim CString: CString = "SU7CSJKF09NCSDO9SDF09SDRLVK7809S4NF"
Dim Name: Name = Text1.Text
Dim msg1
Dim NChar, CChar
Dim Nnum
If Len(Name) < 1 Or Len(Name) > 7 Then
msg1 = MsgBox("必须输入1至7个英文字符!点击确定按钮重新输入,点击取消则默认用户名为“wapojie”,注册码为“9SSSF0F”!", 1, "注意")
If msg1 = 1 Then
Text1.SetFocus
Text1.Text = ""
End If
If msg1 = 2 Then
Text1.Text = "wapojie"
Text2.Text = "9SSSF0F"
Exit Sub
End If
End If
For i = 1 To Len(Name)
NChar = Mid(Name, i, 1)
If Asc(NChar) > 90 Then NChar = Chr(Asc(NChar) - 32)
Nnum = InStr(1, NString, NChar)
CChar = CChar & Mid(CString, Nnum, 1)
Next i
Text2.Text = Trim(CChar)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Or KeyAscii = 127 Then Exit Sub '如果输入退格键和删除键则退出过程
If KeyAscii < 65 Or KeyAscii > 122 Then KeyAscii = 0 '如果超出范围则无效,需重新输入新的字符
End Sub

附件 049.rar (173.45 KB, 下载次数: 0) ,含CM原程序、爆破后的程序、注册机及源码、OD的调试文件,等等。
百度链接:https://pan.baidu.com/s/1NEpyyUefbKcoJvMGG_9OmQ
提取码:p8dk。

免费评分

参与人数 3威望 +1 吾爱币 +22 热心值 +2 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ls990928 + 1 + 1 热心回复!
霏映 + 1 谢谢@Thanks!

查看全部评分

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

约定的童话 发表于 2021-1-21 15:46
VM壳玩的转不?
13169456869 发表于 2021-1-21 16:54
lwedwin 发表于 2021-1-21 19:25
哥比彩砖还炫 发表于 2021-1-21 20:05
为什么有的明明有壳,但是我用peid查不出来呢?
pojie6033 发表于 2021-1-21 20:57
先收藏了,还没学习到那一步
sunpeng0320 发表于 2021-1-21 21:56

先收藏了,正挺好
还没学习到那一步
PrincessSnow 发表于 2021-1-22 02:42
谢谢大佬的分享!~
mllaopang 发表于 2021-1-22 09:09
感谢分享
silent小泷 发表于 2021-1-22 10:36
厉害。感谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-26 13:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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