首页
社区
课程
招聘
[求助]眼睁睁看着错误提示框往外窜,能想得到的招都用上了,还是没辙!
发表于: 2006-3-3 15:19 4906

[求助]眼睁睁看着错误提示框往外窜,能想得到的招都用上了,还是没辙!

2006-3-3 15:19
4906
前两天在《看雪精华7》里面看lee大侠的《PC定时执行专家 1.3.3.破解过程》的时候,在网上顺手下载了“PC定时执行专家(PCTimerExpert) V1.9.18.18”,想着有样学样,应该没什么问题吧,正偷着乐的时候,郁闷了,用PEiD查是Microsoft Visual C++ 6.0,有注册错误提示,OD加载,字符串参考,超级字符串参考,都没有看到提示字符串,在命令行学着lee大侠用“bp GetWindowTextA”,拦不住,我急了,把什么GetDlgItemInt、GetDlgItemText、MessageBox、MessageBoxIndirect、MessageBoxEx还有OD插件里面自带的其它函数,甚至是万能断点都用上了,居然还是只能眼睁睁看着错误提示框往外窜,我可是菜鸟啊,能想得到的招都用上了,还是没辙!<有个什么词来着?对了,就是那个-黔驴技穷啊!!>望各位大侠答疑解惑,指点迷津。。。最好能写篇深入浅出的破解过程(把作者的注册验证思路解释一下,爆破就行――算法写了我也看不大明白啊!)

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 216
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是不是加壳了?
2006-3-3 17:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
上面这位大哥,首先很激你能看我的求助帖,并热心回答,我前面已经提到,用PEiD查是Microsoft Visual C++ 6.0――所以――没壳!:)
2006-3-3 18:30
0
雪    币: 151
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
你在MessageBoxW的入口断看看,这个是unicode版本的
2006-3-3 19:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
用“请哥慢捂”大哥的办法,断了下来,找到了关键跳转00404ABD,修改后注册成功,无二次验证。
听大哥提起说起那个带“W”尾巴的命令,我才记起前些阵子迷迷糊糊地看过,当时也没多想,因为那篇文章里面说那种情况很少见,大多是带“A”尾巴的,这次居然因为“W”尾巴碰了壁,小弟一定汲取教训。。。:)
                     
                       ――感谢上面两位大哥,感谢大家对我的求助帖的关注,再次感谢“请哥慢捂”大哥
2006-3-3 20:13
0
雪    币: 151
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
别叫什么大哥的,我也是蒙的拉,一般什么A的W的都不放过,总能撞到
2006-3-3 22:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
郁闷,菜鸟的悲哀啊!那个。。。那个。。。那个程序重启以后还是“未注册”,郁闷,于是没办法,厚着脸皮继续,发现注册码十六进制值保存在:HKEY_LOCAL_MACHINE\SOFTWARE\BoomWorks\PCTimerExpert\Registration\REGCODE
下断bp RegQueryValueExW以后,断下返回到00407406,下面一长串跳转,根据那点微不足道的经验,关键跳转应该就在下面这些个跳转中,于是把那5个跳转一一检验,(问为什么把那些跳转一一检验?哎,菜鸟有菜鸟的苦衷,不会分析算法呗!先这样凑合,没准儿能成,这招儿可是经过实践检验的,蒙对好几次呢!窃喜!)没想到,真的没想到啊,眼瞅者都试过了,就是没找到关键那一个!我被逼得没办法了啊,只有再次求助各位大侠!(新)心的呼唤――大哥,教教我吧!!
2006-3-3 22:13
0
雪    币: 1334
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这些跳转的最后应该有一个比较, 你看看两个寄存器中的数值,有一个是你的假码,另一个就是真码了,这个比较下面的跳转你改掉就可以了

最后,用16位编辑器固定成果
2006-3-3 22:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
Ivanov大哥哥,在读完注册表之后的地方,我找不着你说的真码啊!连假码都没看到!哎,看来是我太笨了。后来我又试着在点完注册按钮之后的地方找,只有假码,再就是找着了一个逐个读假码的call和一个读机器码的call,可是跟着跟着又迷迷糊糊到"7xxxxxxx"的地方了,愣是没看出来它怎么生成真码的。。。!
2006-3-4 13:20
0
雪    币: 1334
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
呵呵,你已经进入了系统部分, 再往下走就等于分析操作系统了
2006-3-4 13:31
0
雪    币: 216
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 晴空 发布
Ivanov大哥哥,在读完注册表之后的地方,我找不着你说的真码啊!连假码都没看到!哎,看来是我太笨了。后来我又试着在点完注册按钮之后的地方找,只有假码,再就是找着了一个逐个读假码的call和一个读机器码的call,可是跟着跟着又迷迷糊糊到"7xxxxxxx"的地方了,愣是没看出来它怎么生成真码的。。。!

读机器码的会不会最终是要生成真码的?!
这两个码应该会比较的吧?!
跟我一样
汇编不行吧
――――――――――――
跟着国防部长干
准没错
2006-3-4 13:38
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不用想了 新手都是遇到这个问题就崩溃了(我也是新手),如果那么直接比对那不是傻子写的程序吗?
2006-3-4 13:53
0
雪    币: 151
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
13
说点提示哦,既然你知道它的注册码保存在注册表里面,那么可以看看调用‘REGCODE’的地方,有2处,一个是写入的,一个是读出的。从读出的入手

0040740A   .  FF35 88014100          PUSH    DWORD PTR [410188]  <--这里就是读出的注册码
00407410   .  E8 3BD7FFFF            CALL    00404B50            <--这个就是比较的函数,跟进去2层就会看到读硬盘序列号了
00407415   .  59                     POP     ECX
00407416   .  A3 84014100            MOV     DWORD PTR [410184], EAX<--这是比较结果放在内存里保存作为注册成功的标志,估计1是注册了,0是没有注册

分析到这里爆破的思路就有了,一个可以修改比较函数的返回值,一个就是修改每个用到这个注册标志比较的地方

最后一点,这个算法相当简单,可以练习一下,不过不要乱发注册机哦,呵呵
2006-3-4 16:40
0
雪    币: 381
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我一般都是A,W一起断
2006-3-4 16:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
大哥,你是我的偶像!!!试过了,原来那个eax里面的1就是注册标志!原来还有这种没跳转改的类型啊。。。!又知道多一点东西了:)谢谢大哥
2006-3-4 18:48
0
雪    币: 280
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
APIS32
2006-3-6 18:33
0
游客
登录 | 注册 方可回帖
返回
//