聪明宝贝 2.0破解教程(另类的破解方法)
本帖最后由 巅烽2 于 2015-9-19 00:08 编辑文章标题】: 聪明宝贝 2.0破解教程
【软件名称】: 聪明宝贝 2.0
【下载地址】: http://www.onlinedown.net/soft/43830.htm
【操作平台】: XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!(作者生活不易,本教程仅用作交流,不得用于非法用途)
【详细过程】
一,前提
教程很基础,但是大牛不要飞走(有问题需要请教),主要结合了dll劫持和内存注册机,网上也没看到过这样的教程,以后遇到类似的可以这样处理,先给大家演示一下成果, 废话不多说,看教程
通过下MessageBox (API)断点找到这里地址0x10060910
10060910 81EC A0000000 SUB ESP, 0xA0
10060916 53 PUSH EBX
10060917 56 PUSH ESI
10060918 8D4424 0C LEA EAX, DWORD PTR SS:
1006091C 57 PUSH EDI0012E3D0 00000000
1006091D 8D8424 54F5FFFF LEA EAX, DWORD PTR SS:
10060924 33DB XOR EBX, EBX
10060926 50 PUSH EAX
10060927 53 PUSH EBX
但是还是没有突破口,然后就在堆栈中找,找了好久无意中发现这个字符串
0012E3D4 00000000
0012E3D8 0326004D ASCII "4095406E10045240156256C930A73B714419DD255303355010391A85D726"
0012E3DC 100D0AD4 krnln.100D0AD4
0012E3E0 101055A0 krnln.101055A0
0012E3E4 00000000
(与10060910相对的栈顶相差0xAAC,也即ESP-0xAAC),试了一下结果成功了,我看了一下注册表发现找不到注册相,后来才看到根目录下的zhuce.dat文件,果然注册码再dat文件中
后来想怎么做一个注册机,这下难住了,找到了keymakeV2.0,但是不能打【ESP-0xAAC】,高兴的以为可以打补丁了,结果试了好久也不行,就要再放弃的时候突然想起了使用dll劫持的方法把那个ESP-0xB58的地址提前赋值给一个寄存器,这样再利用keymake来打,结果成功了,
二,
下面是dll劫持和内存注册机的生成过程:
先找劫持时机,
1006091C 57 PUSH EDI
1006091D 8BBC24 B0000000 MOV EDI, DWORD PTR SS: ; krnln.10105A04 //劫持时机改为:LEA EAX, DWORD PTR SS:
这是劫持数据
三,劫持完了开始内存注册机制作:
制作内存注册机的话,选择内存的方式,因为我们的注册码是在寄存器地址所指向的内存中,而且我们这一次的软件是二级指针,地址的地址哦,所以中断的时候我们选择在
1006091D 8D8424 54F5FFFF LEA EAX, DWORD PTR SS:
10060924 33DB XOR EBX, EBX //中断位置,因为此时的EAX中才是我们想要的地址ESP-0xAAC=0012E3D ,具体看图
最后看看成果
好了,大功告成,但是{:301_972:}不幸的是在XP的平台下可以,win7 x64下那个内存注册机还是不成功,我在win7 x64下看了一下劫持是成功的,但是内存注册机不成功,以为I是权限问题,结果还是不行,如果有大牛知道为什么可否指点一下,不胜感激
附上自己录制的视频,初次录制,录的不好,请见谅,网盘地址:
**** Hidden Message *****
补丁在我这里可以用,win7 x64的
另外,你劫持改的代码应该有点问题,我在win7上测试时,填写完成注册码后直接崩溃,你在修改时应该注意保存原来的代码。
个人倾向于改成这样
10060910 .81EC A0000000 sub esp,0xA0
10060916 .53 push ebx
10060917 .56 push esi
10060918 .8D4424 0C lea eax,dword ptr ss:
1006091C .57 push edi
1006091D .E9 B3EB0600 jmp krnln.100CF4D5
10060922 90 nop
10060923 90 nop
10060924 >33DB xor ebx,ebx
10060926 .50 push eax
10060927 .53 push ebx
10060928 .6A 05 push 0x5
1006092A .895C24 28 mov dword ptr ss:,ebx
1006092E .895C24 2C mov dword ptr ss:,ebx
10060932 .897C24 1C mov dword ptr ss:,edi
10060936 .895C24 20 mov dword ptr ss:,ebx
1006093A .895C24 24 mov dword ptr ss:,ebx
1006093E .E8 0DDDFEFF call krnln.1004E650
100CF4D5 > \8BBC24 B00000>mov edi,dword ptr ss:
100CF4DC .8D9C24 54F5FF>lea ebx,dword ptr ss:
100CF4E3 .^ E9 3C14F9FF jmp krnln.10060924
100CF4E8 90 nop
这里我没有动他的edi寄存器,因为下边有赋值,也没有动他的eax,因为下边有push作为参数调用函数的,所以我用了ebx作为容器,因为下边xor ebx,ebx清零了,所以无论上边怎么改ebx都会被清掉,对程序无影响。
来学习下经验! 好牛B的样子 路过看看怎么个另类 谢谢楼主分享
路过看看怎么个另类 不错的。。。 哈哈哈 虽然用不到 但是还是感谢楼主分享啊 这个到底是用于什么的东西呢? 没必要dll劫持吧,keymaker可以获取esp的数值