飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5113|回复: 2

[求助] 编程文档手册破解手记

[复制链接]

该用户从未签到

发表于 2006-11-26 15:00:34 | 显示全部楼层 |阅读模式
由于我喜欢编程,而且平时喜欢看看别人的程序,所以最近上网搜搜有什么编程方面的辅助工具,这一搜就搜到一个我觉得不错的东东——《编程文档手册》,软件版本:Version 3.55,我喜欢这款软件,可是为什么添加文章有限制呢?要注册?这怎么行,我一介贫民,机器用的都是二手的,还有闲钱注册?不过这么好的软件,我有钱了一定要注册。可现在怎么办?用OD!
破解工具:
Olldbg 1.09
PeiD v0.92
软件界面。


开工之前要有好习惯,查壳先,查壳。
我倒,这个壳……我看还是算了吧,以我的水平,只能看它穿衣服的样子,脱这个壳太难,撤退先……其实我不是撤退,有句名言“绕到敌人背后攻击”,我是迂回作战!打开OD选择附加。
此时程序的壳保护起作用了,断在DbgBreakPoint处,按F9选择运行,再手动暂停一次(F12),以便让OD接管,然后F9。此时OD还是在系统领空,我们按Ctrl+G,输入“444444”,回到真正的程序代码中,此时的代码已经被还原在内存中(它已经赤条条的躺在那里了,我该怎么办?)我们查找字符串,这个也算是软件的一个提示了。
也许程序作者太相信这个壳了,所以在代码中根本没有想到要防范,我们就从这里入手。因为软件没有注册会在标题栏提示“Unregistered”,也就是没有注册的意思,我们就以这个为突破口,查找字符串。很快找到在“401eb1”,双击来到代码区,如图5所示。
00401E90 E8 27572200 CALL Promanua.006275BC
00401E95 50 PUSH EAX
00401E96 FF4D D4 DEC DWORD PTR SS:[EBP-2C]
00401E99 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
00401E9C BA 02000000 MOV EDX,2
00401EA1 E8 1A562200 CALL Promanua.006274C0
00401EA6 59 POP ECX
00401EA7 84C9 TEST CL,CL
00401EA9 74 36 JE SHORT Promanua.00401EE1
00401EAB 66:C745 C8 3800 MOV WORD PTR SS:[EBP-38],38
00401EB1 BA 27A16200 MOV EDX,Promanua.0062A127 ; ASCII "Promanual[Unregistered]"
00401EB6 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
00401EB9 E8 5E542200 CALL Promanua.0062731C

图5
在这个关键的call,00401EA1处回车,进入这个call:
006274C0 55 PUSH EBP 在此处下断
006274C1 8BEC MOV EBP,ESP
006274C3 51 PUSH ECX
006274C4 53 PUSH EBX
006274C5 56 PUSH ESI
006274C6 E8 A7DAB0FF CALL 00134F72
006274CB 837D FC 00 CMP DWORD PTR SS:[EBP-4],0
006274CF 74 19 JE SHORT Promanua.006274EA
006274D1 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006274D4 E8 CF50F6FF CALL Promanua.0058C5A8
006274D9 F7C6 01000000 TEST ESI,1
006274DF 74 09 JE SHORT Promanua.006274EA
006274E1 FF75 FC PUSH DWORD PTR SS:[EBP-4]
006274E4 E8 33E2FDFF CALL Promanua.0060571C
在006274C0处按F2下断,此时程序会立即中断,为什么会立即呢?后来才知道,原来程序启动的时候就已经取得硬件信息并计算好了注册码。我们在程序中选择注册,随便填写一些注册码,我的是“123123123123”,然后一直按F8直到RETN。
006277E6 58 POP EAX ;
006277E7 66:C745 E4 2000 MOV WORD PTR SS:[EBP-1C],20
006277ED FF45 F0 INC DWORD PTR SS:[EBP-10]
006277F0 8B55 D4 MOV EDX,DWORD PTR SS:[EBP-2C]
006277F3 64:67:8916 0000 MOV DWORD PTR FS:[0],EDX
006277F9 5F POP EDI
006277FA 5E POP ESI
006277FB 5B POP EBX
006277FC 8BE5 MOV ESP,EBP
006277FE 5D POP EBP
006277FF C2 0400 RETN 4

这个RETN返回到437E77,

00437E77 8BD7 MOV EDX,EDI
00437E79 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00437E7C B9 01000000 MOV ECX,1
00437E81 E8 2EF81E00 CALL Promanua.006276B4
00437E86 8BD0 MOV EDX,EAX
00437E88 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00437E8B E8 60F61E00 CALL Promanua.006274F0
00437E90 FF4E 1C DEC DWORD PTR DS:[ESI+1C]
00437E93 8BC7 MOV EAX,EDI
00437E95 BA 02000000 MOV EDX,2
00437E9A E8 21F61E00 CALL Promanua.006274C0
00437E9F 43 INC EBX
00437EA0 833D A4656400 0> CMP DWORD PTR DS:[6465A4],0 鼠标点这里可以看到注册码
00437EA7 74 0B JE SHORT Promanua.00437EB4
00437EA9 8B0D A4656400 MOV ECX,DWORD PTR DS:[6465A4]
00437EAF 8B41 FC MOV EAX,DWORD PTR DS:[ECX-4]
00437EB2 EB 02 JMP SHORT Promanua.00437EB6
在00437E9A重新返回检测代码区域,进行一个循环。
我们用鼠标点中00437EA0,可以看到DS:[006465A4]=0726B034,(ASCII”10108711258280”),在转存区域Ctrl+G填入0726B034,回车。同样可以看到注册码在那里等我。
关掉OD,重新打开《编程文档手册》,来到帮助——注册,填写刚刚的数字。此时按钮“完成注册”由灰变亮,等你来按。程序注册成功后会在注册表HLM\SOFTWARE\kooborp处加入字符串“regyesno”值为“blowjj”。其实细心的朋友应该在开头的时候发现,我们查找字符串的时候来到401eb1,注释为“Unreg”,如果在往上翻阅,就可以看到HLM\SOFTWARE\kooborp\regyesno\blowjj。这样就完成了不脱壳同时又破解的目的。
其实本文的目的不是叫大家碰到难题就撤退,而是给大家提供一个思路,不管是在对网站的漏洞分析上还是进行软件的破解,一条路走不通,试着休息休息,再换个思路考虑。对于这个猛壳,最大的漏洞在于作者太相信壳了,而忽视了自我的保护,从而给破解者以漏洞可钻。
PYG19周年生日快乐!

该用户从未签到

发表于 2008-9-19 11:21:39 | 显示全部楼层
楼主说的很详细啊,谢了
PYG19周年生日快乐!

该用户从未签到

发表于 2008-9-22 12:49:39 | 显示全部楼层
新手正在学习,还望大家多多指导.文章非常好.谢谢了.
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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