kernel32.lstrlenA kernel32.lstrlen
kernel32.lstrcpynA kernel32.lstrcpyn
kernel32.lstrcmpA kernel32.lstrcmp
kernel32.lstrcatA kernel32.lstrcat
ntdll.RtlGetLastWin32Errorkernel32.GetLastError<--这个正确,不用修改
kernel32.lstrcpyA kernel32.lstrcpy
kernel32._lread kernel32._hread
shell32.DragQueryFileA shell32.DragQueryFile
USER32.RegisterWindowMessageA USER32.RegisterClipboardFormatA
USER32.IsDialogMessageA USER32.IsDialogMessage
USER32.TranslateAcceleratorA USER32.TranslateAccelerator
这个记事本脱壳后用 ImportREC 的自动修复出现了 13 处错误,其中上面指出的一个是 ImportREC自动重定位GetLastError 了是正确的,所以是 12 处错误。
我们汉化时,秉承软件原程序的原则,所以将 fix.txt 中的错误的地方按 org.txt 修复保存,存为fix_2.txt吧,然后用 ImportREC 的 Load Tree(加载列表树)载入这个正确的 导入表 列单。
ImportREC 提示加载成功后,按 Fix Dump 修复刚才保存的 dumped.exe,生成dumped_.exe才是导入表与原程序相同的正确文件。如图 1/2 步骤。
记事本是个小程序,使用到的 DLL 函数也不多,所以上面只有 12 处错误,如果一些大一点的程序手脱后,用ImportREC自动修复时,会出现大约 20 个左右错误,我最多一个发现了 23 个,除了上面列出的几个,我再把我遇到的ImportREC自动修复通常有错误的几个列出来,如下(C 程序):
错误 正确
//KERNEL32.dll:
lstrlen > lstrlenA
lstrcpy > lstrcpyA
lstrcat > lstrcatA
lstrcmp > lstrcmpA
lstrcmpi > lstrcmpiA
lstrcpyn > lstrcpynA
RestoreLastError > SetLastError < 这个ImportREC修正版已解决这个问题。
LockResource > SetHandleCount
GetEnvironmentStrings > GetEnvironmentStringsA
//user32.dll:
DestroyCursor > DestroyIcon
***** RegisterClipboardFormatW >RegisterWindowMessageW*****(不是经常出现)
RegisterClipboardFormatA > RegisterWindowMessageA
IsDialogMessage > IsDialogMessageA
TranslateAccelerator > TranslateAcceleratorA
//shell32.dll:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28582-2.html
盯住日本动态