首页
社区
课程
招聘
[原创]一个光刻软件在winnt内核下的修复
发表于: 2007-7-24 18:00 6660

[原创]一个光刻软件在winnt内核下的修复

2007-7-24 18:00
6660

标 题: 一个光刻软件在winnt内核下的修复
作 者: pathletboy
时 间: 2007-7-24 18:00
链 接: http://bbs.pediy.com/showthread.php?t=48485

朋友请我帮忙修复一个工业用光刻软件,他描述该软件在WIN98下能正常运行,但是在WIN2000及WINXP下无法运行,首先我就想到工业用软件,可能会操作硬件端口,非常可能是权限问题。问他拿到软件后直接运行,出错框如下图。


开OD加载6020dll.dll跑到偏移0x578b处
10005780   $  33C0          XOR EAX,EAX
10005782   .  66:8B5424 04  MOV DX,WORD PTR SS:[ESP+4]
10005787   .  8A4424 08     MOV AL,BYTE PTR SS:[ESP+8]
1000578B   .  EE            OUT DX,AL                                ;  I/O 命令
1000578C   .  C3            RETN

看到和我开始想的相同,操作了硬件端口。由于WINNT不能直接操作端口所以产生了此错误,知道问题现在就好办了。确立解决方法:
使用WINIO,在他首次操作端口前加载WINIO即可。我选择的是他首次调用0x10005780前跳转到模块空的代码段处加载WINIO,补上代码如下
1000B200   > \60            PUSHAD
1000B201   .  68 E0B10010   PUSH 6020dll.1000B1E0                    ; /FileName = "WinIo.dll"
1000B206   .  FF15 ACC00010 CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar>; \LoadLibraryA
1000B20C   .  68 EAB10010   PUSH 6020dll.1000B1EA                    ; /ProcNameOrOrdinal = "InitializeWinIo"
1000B211   .  50            PUSH EAX                                 ; |hModule
1000B212   .  FF15 48C00010 CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; \GetProcAddress
1000B218   .  FFD0          CALL EAX
1000B21A   .  61            POPAD
1000B21B   .  E8 60A5FFFF   CALL 6020dll.10005780 //补上由于跳转到空代码段处覆盖掉的代码
1000B220   .^ E9 E59DFFFF   JMP 6020dll.1000500A //跳回原处继续执行

补完后运行结果如下

控制卡没有找到,程序无法运行是因为没有硬件,发还给我朋友已能正常运行了,至此该光刻软件在winnt下的修复已经完成,个人认为,修复此类东西需要平时经验的积累,恰当的使用工具,即可达到你所想要的目的。

--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
  • 1.JPG (19.89kb,154次下载)
  • 2.JPG (38.13kb,149次下载)
收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 437
活跃值: (273)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
2


LZ强, 想到加载WinIo.dll 来解决   我在网上找到的方法好烦
2007-7-24 18:08
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=;]...[/QUOTE]
汗。。这么老的软件还有修复的必要?~~没有替代的?~
2007-7-24 23:28
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
第一个是省钱,第二个是免再次培训
2007-7-26 14:22
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
汗。。这么老的软件还有修复的必要?~~没有替代的?~
2007-7-27 10:25
0
游客
登录 | 注册 方可回帖
返回
//