友科订票助手Crack补丁是一款专业的铁路抢票工具补丁,友科订票助手是由“友科工作室”自主研发,是基于铁路客户服务中心官网(www.12306.cn)的一个火车票网上订票“辅助”客户端程序。
试过好多方法实在是脱不掉的时候,只能想其它方法了。对,就是修改运行时的内存,当然,前提是你找到了了需要修改的内存断点或地址,
但有大多数软件每次打开时或更新后的地址都不一样,这时,我们可以在破解补丁中加入Debugger 能过脚本或其它编程语言控制Debugger动态破解。
好了,拿个列子给大家上菜。(大家熟悉的某订票肋手)
打开它后发现,嗯,程序能用的程序的界面和登陆框都出来了,这时,我们只要把登陆框去掉就行了,怎么去,我们把它丢进OD.在弹出窗体的时候设置断到.
丢进OD.
输入 ShowWindow
这个是主界面,我们要的是登陆窗口,按F9下一个断点
到这里,我们可以看到,这个是登陆的界面。我们只需要把这个窗体的hWnd改掉它就出不来了。
对着 hWnd=006A0DCC 右键--修改 随便输入一个8位数字符就可以了。
F9
这时还没结束,登陆窗口是去掉了,可是主窗口是假死状态。其是它只是实登陆窗口给当在后面了,变成未激活状态。我们打开SpyLite
拖到程序窗口上面,点消息-把窗口可用 勾上就可以了,然后选窗口可用就可以脱离OD了。
可是我们发补丁出去的时候不可能这样发出去吧,有什么办法可以它自动像脚本一样控制修改呢。这时可以用小巧 的Debugger 命令行操作
更多的命令行使用方法,请问度娘。
找到 Debugger 安装目录 的 cdb.exe ,把要破的程序拖到它上面运行输入bu ShowWindow 回车
然后输入 G 回车
上面我们知道第一次回是主界面的 hWnd
断续 输入 G 回车,直到主界面出来,登陆界面没出来为此。
到这里,esp= 这就是这们要改的 窗体hWnd 所在断点。
输入ed (esp+8) 0xffffffff 回车
输入 G 回车
输入 QD 回车 (即可脱离 cdb.exe 面程序不会退出)
到这里就可以了,这时候主窗口也是假死状态。像OD最后一步的时候用 SpyLite把窗体激活就可以了。
这时候我们只要把上面步骤的用编程语言脚本写出来就可以了。 简单的有VBS呀,按键精灵呀。E 等等。
到这里,我把我写的C# 破解的主要源码给大家参考。
if (e.Data.IndexOf("LdrInitShimEngineDynamic") >= 0 || e.Data.IndexOf("int 3") >= 0)
{
this.Invoke(ReadStdOutput, new object[] { "正在设置断点...
" });
Process p = sender as Process;
p.StandardInput.WriteLine("bu ShowWindow");
}
if (e.Data.IndexOf("Unable to verify checksum for") >= 0)
{
this.Invoke(ReadStdOutput, new object[] { "正在调试断点......
" });
Process p = sender as Process;
p.StandardInput.WriteLine("G");
}
if (e.Data.IndexOf("ds:002b:00000000=") >= 0 || e.Data.IndexOf("00000000=????????") >= 0)
{
this.Invoke(ReadStdOutput, new object[] { "正在调试断点.........
" });
Process p = sender as Process;
p.StandardInput.WriteLine("G");
}
//esp=
if (e.Data.IndexOf("esp=") >= 0)
{
//Espstr
Espstr = e.Data;
}
if (e.Data.IndexOf("USER32!ShowWindow:") >= 0)
{
Process p = sender as Process;
if (Gi == 1)
{
this.Invoke(ReadStdOutput, new object[] { "正在修改内存............
" });
string Hexdate = Espstr.Substring(Espstr.IndexOf("esp=") + 4, 8);
p.StandardInput.WriteLine("ed (esp+8) 0xffffffff");
IntPtr Winhwnd = FindWindow(null, "友科订票助手 V2.575");
if (Winhwnd == IntPtr.Zero)
{
p.StandardInput.WriteLine("Q");
this.Invoke(ReadStdOutput, new object[] { "破解失败。。。无法破解此版本!!!
" });
MessageBox.Show("无法破解此版本!!!");
}
else
{
p.StandardInput.WriteLine("QD");
}
Gi++;
}
else
{
if (Gi < 2)
{
this.Invoke(ReadStdOutput, new object[] { "正在调试断点............
" });
p.StandardInput.WriteLine("G");
Gi++;
}
}
资源:
需要工具 爱盘有的下 ,
实例中破解的软件地址 http://www.yk12306.com/Download (2.574之后版本作者加入了 检测不到帐号登陆就退出。大家需要用的 下载 2.574的就可以了。关于升级窗口。直接用这个方法干掉)
请下载原版解压,把补丁全部文件放到软件目录下运行Crack.exe即可