Hmily 发表于 2009-8-17 16:46

RADASM2.2.1.7正式汉化版

RADASM2.2.1.7正式汉化版
汉化说明:
(由于绝大部分汉化来自CCDebugger的语言文件,这里我就不冠名为我个人汉化了。)
非虫部分汉化:fei_cong@hotmail.com

1.程序语言文件为CCDebugger大牛汉化,程序部分汉化部分非标资源。
2.增加dbghelp.dll文件。
3.更新MASM.INI文件。
4.增加masm32.api和macros.api文件(方便列宏和函数)。
5.汉化RADebug.dll文件。

关于RADebug.dll的汉化
使用Radialix 2汉化插件菜单后始终只能显示四个汉字,如第一个切换断点,大小四个汉化,下面的菜单
部分就被切掉,取消“切换断点”的汉化,改下面,“运行”“中断”后,不管如何修改其它的项都不显示。
解决方法:
先使用PASSOLO试试,居然连非标部分都找不出来,使用Sisulizer,程序导演退出,再试试LocPlus(点睛),只能找出第一项“切换断点”,其它项(如“运行”、“停止”)无法找到,最后拿出Restorator,无法找到非标部分。
想了下,以前RADASM作者发过RADEBUG的源码,拿出来一看,发现作者是这样定义的:
MenuItems      db 'Toggle &Breakpoint',VK_TAB,'Ctrl+T',0
                db '&Clear Breakpoints',VK_TAB,'Ctrl+Shift+T',0
                db '-',0
                db '&Run',VK_TAB,'Shift+F7',0
                db '&Stop',VK_TAB,'Alt+F7',0
                db '-',0
                db 'Step &Into',VK_TAB,'F7',0
                db 'Step &Over',VK_TAB,'Ctrl+F7',0
                db 'Run &To Caret',VK_TAB,'Ctrl+Shift+F7',0
                db 'Do not Debug',0
                db 0

再看看处理部分:
CreateDebugMenu proc uses ebx esi edi,hWin:HWND
LOCALmii:MENUITEMINFO

.if hMnu
    mov    eax,
    invoke RemoveMenu,.ADDINHANDLES.hMenu,IDAddIn,MF_BYCOMMAND
    invoke DestroyMenu,hMnu
.else
    mov    edi,offset IDAddIn
    xor    ecx,ecx
    .while ecx<9
      pushecx
      ; Allocate a new menu id
      invoke SendMessage,hWin,AIM_GETMENUID,0,0
      pop    ecx
      mov    ,eax
      inc    ecx
    .endw
.endif
invoke CreatePopupMenu
mov    hMnu,eax
;Make menu
mov    edx,5
;Adjust topmost popup if maximized.
mov    eax,
.if .ADDINDATA.fMaximized
    inc    edx
.endif
;Get handle of edit popup
mov    eax,
invoke GetSubMenu,.ADDINHANDLES.hMenu,edx    ;Edit menu
pusheax
;Add our menuitem
invoke AppendMenu,eax,MF_POPUP or MF_STRING,hMnu,addr DebugMenu
mov    edi,offset IDAddIn
mov    eax,
add    edi,4
mov    mii.cbSize,sizeof MENUITEMINFO
mov    mii.fMask,MIIM_ID
mov    mii.wID,eax
pop    eax
pusheax
invoke GetMenuItemCount,eax
lea    ecx,
pop    edx
invoke SetMenuItemInfo,edx,ecx,TRUE,addr mii
mov    esi,offset MenuItems
.while byte ptr
    .if byte ptr =='-'
      invoke AppendMenu,hMnu,MF_SEPARATOR,0,0
    .else
      ;Add our menuitem
      invoke AppendMenu,hMnu,MF_STRING,,esi
      add    edi,4
    .endif
    invoke lstrlen,esi
    lea    esi,
.endw
ret

CreateDebugMenu endp

作者采用循环读取的,由于下面的字符串没有变量名且最后以两个零结尾,即是采用指针方式。
操出OD,超级字符串查找->查找ASCII,看到了:
toggle &breakpoint\tctrl+t,双击后跟随到数据窗口->立即数,数据窗口中看到以下部分:
1000975AToggle &Breakpoint.Ctrl+T.&Clear
1000977A   Breakpoints.Ctrl+Shift+T.-.&Run
1000979A.Shift+F7.Brea&k.Ctrl+Alt+F7.&St
100097BAop.Alt+F7.-.Step &Into.F7.Step &
100097DAOver.Ctrl+F7.Run &To Caret.Ctrl+
100097FAShift+F7.Do not Debug..MakeFiles
1000981A.5.3.NoDebug.Show DbgHelp output
1000983A.Show debug events.Pin output wi
1000985Andow.Show register window

直接更改为:
1000975A切换断点(&B).Ctrl+T.清除断点(&C)
1000977A.Ctrl+Shift+T.-.运行(&R).Shift+F
1000979A7.中断(&K).Ctrl+Alt+F7.停止(Alt+
100097BAF7).-.步入(&S).F7.步过(&O).Ctrl+
100097DAF7.运行到插入符(&T).Ctrl+Shift+F
100097FA7.不调试...............MakeFiles
1000981A.5.3.NoDebug.显示 DbgHelp 输出..
1000983A.显示调试事件......固定输出窗口.
1000985A.....显示寄存器窗口.......

(中间分隔的“点”是09H,也就是“\t”),改完后保存,运行,ok!

其它非标部分就使用Radialix来完成,这款工具很强大,最新版现在我的VISTA下运行良好了。

o97 发表于 2009-8-17 17:09

已下过 用了下还不错

crackforchin 发表于 2009-8-22 09:42

这里也有呀,下载一个新版本的

兰州烧饼 发表于 2014-6-26 00:07

下载失败
页: [1]
查看完整版本: RADASM2.2.1.7正式汉化版