昨天为了试验破解软件,装了SoftIce,结果今天早上想和我的亲亲贝贝用skype聊天的时候,发现出了问题,skype一启动就报错"Skype is not compatible with system debuggers like SoftICE",然后就退出,我这个急啊。。。。
决定用OllyDbg搞定这个skype,应为skype报错的时候是弹出messagebox,所以要再messagebox之类的函数处设置端点。
首先用OllyDbg载入skype,首先用Alt-E调出"Executable modules"窗口,选中user32,
Ctrl-N调出"Names in user32"窗口,分别选中MessageBoxA、MessageBoxExA、
MessageBoxExW并按F2设置断点。按F9运行,拦截住MessageBoxA。Alt-K查看调用栈
回溯,"Called from"栏显示Skype.00E78062,查看该地址附近代码:
00E7804B . E8 181A74FF CALL 复件_Sky.005B9A68
00E78050 . 84C0 TEST AL,AL
00E78052 . 74 1A JE SHORT 复件_Sky.00E7806E
00E78054 . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00E78056 . 68 1C8CE700 PUSH 复件_Sky.00E78C1C ; |Title = "Skype"
00E7805B . 68 248CE700 PUSH 复件_Sky.00E78C24 ; |Text = "Skype is not compatible with system debuggers like SoftICE."
00E78060 . 6A 00 PUSH 0 ; |hOwner = NULL
00E78062 . E8 7D0A59FF CALL <JMP.&user32.MessageBoxA> ; /MessageBoxA
怀疑只需修改那个je指令即可。在0x00E7E8D8处按F2设置断点,按Ctrl-F2重新加载
Skype.exe。刚设置的这个断点在Skype.exe中,不在动态链接库中,重新加载后断点
仍在。按F9运行,断点命中,此时AL为0x01,在OllyDbg中动态修改AL为0,按F9继续
运行,发现Skype已经启动起来了。
应为程序load到ollydbg中,是从0040c000开始,而静态的是从00000000开始
所以要算出偏移地址:用00E7E8DA- 00400c00 = A7DCDA
用ultraEdit打开skype文件,找到A7DCDA修改74 1A 为 EB 1A即可。
另外我的skype版本信息为
build time:6.07.2005 16:46:56
company name:Skype Technologies S.A.
version: 1.3
不同版本,地址可能会有不同。
本人破解紧紧为了救急,请不要效仿,谢谢。