首页
社区
课程
招聘
[旧帖] [原创]第一次crack 0.00雪花
2009-6-17 23:45 3199

[旧帖] [原创]第一次crack 0.00雪花

2009-6-17 23:45
3199
工具:W32dsm8.93+,UltraEdit-32(或者hiew)
对象:小榕的黑客字典II(该黑客软件部分高级功能须注册才能使用)

1.尝试注册
运行此软件,点注册,输入你的注册名和任意注册码,按注册
出现错误提示信息"注册名或注册码不正确!",将错误提示信息记下来

2.备份
将UltraDict.exe复制两份,分别命名为UltraDict.exe(作为备份)和U.exe

3.反汇编
运行W32dsm8.93+将U.exe反汇编

4.查找
选择串式参考(String Data References),在窗口中找刚才的错误提示信息或可能是注册正确的提示信息:

......
"必须指定一个文件名!"
"不大写"
"错误!在高级选项中没有选中任何一项."
"大写"
"当前磁盘空间剩余:%ld KBytes"
......
"非常感谢您的支持,注册成功!"         ;注意
"黑客字典 II(限制版) (PID:9948)"
"黑客字典 II(注册给:%s) (PID:9948)"
......
"未指定数字范围,默认由'0'到'9'."
"未指定字母范围,默认由'a'到'z'."
"文件C:\CustBanyet.Def没有找到."
"文件创建失败!"
"无辅音字母"
"婱魦E_^d?"
"億$"
"用LF和CR间隔"
"有辅音字母"
"韫?3烂婰$′tC"
"注册名或注册码不正确!"         ;注意
"字典成功生成!"
"字典设置"
"字母在前面"
......

注意到一句:"非常感谢你的支持,注册成功!",怀疑可能是正确的提示信息
在该处双击鼠标左键,反复双击,发现只有一处调用,
回到主窗口停在下面的(#########所标的地方)

5.分析

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401CF7(U)
|
:00401CFE 3BC3                    cmp eax, ebx
:00401D00 0F85DF000000            jne 00401DE5         ;关键跳转
:00401D06 6801100000              push 00001001

;中间省略------------------------------------------------------

* Possible StringData Ref from Data Obj ->"C:\regbanyet.dat"         ;@@@@@@@@@
                                  |
:00401DA5 68F4704300              push 004370F4

* Reference To: KERNEL32.SetFileAttributesA, Ord:0268h
                                  |
:00401DAA FF158CB24200            Call dword ptr [0042B28C]

* Possible StringData Ref from Data Obj ->"非常感谢您的支持,注册成功!"         ;#########注册成功提示
                                  |
:00401DB0 68D8704300              push 004370D8
:00401DB5 8D8C24EC000000          lea ecx, dword ptr [esp+000000EC]
:00401DBC E8AF010000              call 00401F70
:00401DC1 8D4C2410                lea ecx, dword ptr [esp+10]
:00401DC5 889C24B4010000          mov byte ptr [esp+000001B4], bl
:00401DCC E877EF0100              call 00420D48
:00401DD1 8BCD                    mov ecx, ebp
:00401DD3 E844B50100              call 0041D31C
:00401DD8 C78424B401000003000000  mov dword ptr [esp+000001B4], 00000003
:00401DE3 EB1C                    jmp 00401E01

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401D00(C)
|

* Possible StringData Ref from Data Obj ->"注册名或注册码不正确!"         ;*********注册失败提示
                                  |
:00401DE5 68C0704300              push 004370C0
:00401DEA 8D8C24EC000000          lea ecx, dword ptr [esp+000000EC]
:00401DF1 E87A010000              call 00401F70
:00401DF6 C78424B401000002000000  mov dword ptr [esp+000001B4], 00000002

从#########所标的地方开始向上找,一直找到有如下命令时为止:cmp,jne,je等等,找到
:00401D00 0F85DF000000            jne 00401DE5
程序之所以没有来到注册成功的地方主要就是这个跳转,
跳到了错误的地方(*********所标的地方)
00401D00处的跳转称为关键跳转

6.Crack
把绿色光条停在关键跳转,即
:00401D00 0F85DF000000            jne 00401DE5
在主窗口的状态栏找到关键跳转的偏移地址(实际修改地址)
@:00401D00 @Offset 00001D00h (h表示十六进制)
实际修改地址是01D00

用UltraEdit-32打开UltraDict.exe,Ctrl-G,键入0x01D00(0x表示十六进制)
查找到00001d00h,把85DF改为84DF,保存
再次运行UltraDict.exe输入你的注册名和任意注册码注册,
提示"非常感谢你的支持,注册成功!"
大功告成,哈哈
总结:此方法属于暴力爆破工程!

7.原理
修改前:输入的注册码不对时跳到出错的地方,正确时来到对的地方
修改后:输入的注册码不对时来到对的地方,正确时跳到出错的地方

8.后记
注册后发现黑客字典II没有在她的主文件夹生成任何保存注册信息的文件
开始怀疑可能是把注册信息保存在注册表
用Vmware虚拟的系统再次破解注册,
同时用软件扫描注册前后注册表的变化
也没有发现有保存注册信息的相关记录
难道是保存在UltraDict.exe里面,这是不可能的!
因为重新解压出来的UltraDict.exe也是显示注册的!
后来无意打开C盘根目录,发现多了一个隐藏的regbanyet.dat文件
用记事本打开一看,哈哈,里面就是刚刚注册的注册名和注册码
删除这个文件,运行UltraDict.exe,果然显示没有注册
好奇心驱使再次运行W32dsm8.93+将UltraDict.exe反汇编
仔细查看发现(@@@@@@@@@所标的地方):
* Possible StringData Ref from Data Obj ->"C:\regbanyet.dat"
正是提示注册成功后在C盘根目录创建了regbanyet.dat文件
手动在C盘根目录创建regbanyet.dat,不输入任何信息
再次运行UltraDict.exe,显示已经注册(原来注册名和注册码可以为空字符)
哈哈,这也算是第二种Crack方法了
总结:Crack的确需要运气+细心

;That's all.

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞7
打赏
分享
最新回复 (15)
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
龙弈 2009-6-28 18:49
2
0
好好学习 天天向上
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chchbb 2009-6-28 19:27
3
0
值得学习,很好的帖子
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
唯我天海 2009-6-28 21:03
4
0
不错,呵呵!!
雪    币: 69
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ydzydz 2009-6-29 03:24
5
0
谢谢 下了学习学习
雪    币: 67
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小龙程序 2009-6-29 12:55
6
0
学习了/!不错的贴子
雪    币: 106
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gzsangel 2009-6-29 12:56
7
0
恩,下载下来,自己试试看
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guoyufeng 2009-6-30 16:53
8
0
好好学习下,不错的贴子
雪    币: 68
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
blackgrape 2009-7-13 21:30
9
0
弱弱的问一下:
:00401D00 0F85DF000000     jne 00401DE5  ; 是不相等跳转,按楼主的意思是改成了 je 吗?
你将 85DF改为84DF也就是这个意思吗?如果要我在OD里修改还是比较容易实现,如果用UltraEdit-32就对应不起来
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
晴枫 2009-7-14 11:54
10
0
我总是找错关键跳转,还得练练
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
学习耐心 2009-7-14 14:21
11
0
看了受益匪浅。接着学习
雪    币: 153
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
tscc 1 2009-7-14 14:47
12
0
跟着步骤同样破解成功
一起学习哈
雪    币: 82
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
TearingYou 2009-7-14 16:24
13
0
厉害,学习先
雪    币: 162
活跃值: (15)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
karas 2 2009-7-15 20:49
14
0
哈哈,其实第一次crack成功运气成分居多
当时修改就恰巧能够通过,虽然有想过是否合理的问题
但是因为汇编一点也不了解,所以没有深究

最近比较忙,很少来论坛了
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tellet 2009-7-15 23:19
15
0
跟着步骤同样破解成功
有一个问题, 那个offset 是怎么找到的? 我用OLLYDBG, 程序起始地址是00401000, 关键跳地址是00401D00 0F85DF000000     jne 00401DE5, 那offset 是不是应该 00401D00 - 00401000 = 00000D00?

还有DF 是哪一个register? 我改成了 JE 05 也可以工作。
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ycjmail 2009-7-16 08:49
16
0
进来看看
游客
登录 | 注册 方可回帖
返回