BingK 发表于 2008-5-25 09:26:51

[SK6Cv50]中文JAVA程序安装乱码修正 V1.0

用于安装带中文文件名JAVA程序时,出现乱码的情况。
从文件管理器安装jar,jad都已经没有问题了,浏览器下载没试过。
v1.0修正JAD没有复制问题;中文JAVA程序安装乱码修正
;(c) BingK(binghelingxi)
;SK6Cv50
;v1.0

;FIX_ZH_CN_PATH_FCOPY_HOOK
0x002CD2E8: 851084E2 86592DFB
;FIX_ZH_CN_PATH_FIND_HOOK1
0x00749590: CF0F8DE2 E3681BFA
;FIX_ZH_CN_PATH_ISDIR_HOOK1
0x007495D8: CF0F8DE2 CE681BFA
;FIX_ZH_CN_PATH_FIND_HOOK2
0x0074961C: 0D00A0E1 C0681BFB
;FIX_ZH_CN_PATH_FSTATU_HOOK1
0x00751C90: 140090E5 1E471BFA
;FIX_ZH_CN_PATH_FSTATU_HOOK2
0x00752350: 140094E5 6F451BFA
;FIX_ZH_CN_PATH_FOPEN_HOOK
0x00755FD4: 08308DE2 53361BFB
;FIX_ZH_CN_PATH_ISDIR_HOOK2
0x00756B14: 40008DE2 81331BFA
;FIX_ZH_CN_PATH_MKDIR_HOOK
0x00756B3C: 40008DE2 70331BFB
;FIX_ZH_CN_PATH_MSGWIN_HOOK
0x00858B44: 4301FBFB 782B17FB
;FIX_ZH_CN_PATH_BODY
#pragma enable old_equal_ff
0x00E23880: 70B44378010002003A2B02D183785C2B
0x00E23890: 02D070BC7047521C1378002BFBD10378
0x00E238A0: 401C1F2BF5DB5C2B01D02F2B00D10100
0x00E238B0: 812BF4DB0B78202BF1D3521C13009942
0x00E238C0: 05D25D1E2E781E702B009942F9D31F23
0x00E238D0: 0B7004002378002BE1D0641C20005C2B
0x00E238E0: 01D02F2BF6D12100D9E7000025742025
0x00E238F0: 63000000FFB5FFF7C3FFFFBDFFB5081C
0x00E23900: FFF7BEFFFFBD10A8F4E785202118F5E7
0x00E23910: 4069EFE76069EDE70F4A00A88018E9E7
0x00E23920: 10A8E7E7F8E76846E8E702ABE2E7FFB5
0x00E23930: 061C0A490A4FB84780200A4FB847041C
0x00E23940: 291C8022084FB847301C211C074FB847
0x00E23950: 201C074FB847FFBD3C030000EC38E2A0
0x00E23960: 5B9071A0539871A0EF7B98A0B99971A0
0x00E23970: 9D9171A0
#pragma disable old_equal_ff
以下为老版本,仅供撤销;中文JAVA程序安装乱码修正
;(c) BingK(binghelingxi)
;SK6Cv50

;FIX_ZH_CN_PATH_FCOPY_HOOK
0x002CD2E8: 851084E2 84592DFA
;FIX_ZH_CN_PATH_FIND_HOOK1
0x00749590: CF0F8DE2 E2681BFB
;FIX_ZH_CN_PATH_ISDIR_HOOK1
0x007495D8: CF0F8DE2 CD681BFB
;FIX_ZH_CN_PATH_FIND_HOOK2
0x0074961C: 0D00A0E1 C0681BFA
;FIX_ZH_CN_PATH_FSTATU_HOOK1
0x00751C90: 140090E5 1D471BFB
;FIX_ZH_CN_PATH_FSTATU_HOOK2
0x00752350: 140094E5 6E451BFB
;FIX_ZH_CN_PATH_ISDIR_HOOK2
0x00756B14: 40008DE2 80331BFB
;FIX_ZH_CN_PATH_MKDIR_HOOK
0x00756B3C: 40008DE2 6E331BFA
;FIX_ZH_CN_PATH_MSGWIN_HOOK
0x00858B44: 4301FBFB 792B17FA
;FIX_ZH_CN_PATH_BODY
#pragma enable old_equal_ff
0x00E23880: 70B44378010002003A2B02D183785C2B
0x00E23890: 02D070BC7047521C1378002BFBD10378
0x00E238A0: 401C1F2BF5DB5C2B01D02F2B00D10100
0x00E238B0: 812BF4DB0B78202BF1D3521C13009942
0x00E238C0: 05D25D1E2E781E702B009942F9D31F23
0x00E238D0: 0B7004002378002BE1D0641C20005C2B
0x00E238E0: 01D02F2BF6D12100D9E7000025742025
0x00E238F0: 63000000FFB5FFF7C3FFFFBD10A8F9E7
0x00E23900: 85202118FFB5081CFFF7BAFFFFBD4069
0x00E23910: F0E76069EEE7114A00A88018EAE710A8
0x00E23920: E8E7F8E76846FFB5081CFFF7A9FFFFBD
0x00E23930: FFB5061C0A490B4FB84780200A4FB847
0x00E23940: 041C291C8022094FB847301C211C084F
0x00E23950: B847201C074FB847FFBD00003C030000
0x00E23960: EC38E2A05B9071A0539871A0EF7B98A0
0x00E23970: B99971A09D9171A0
#pragma disable old_equal_ff


[ 本帖最后由 BingK 于 2008-5-25 11:03 编辑 ]

砂哥 发表于 2008-5-25 11:08:24

加分..

chun005 发表于 2008-5-25 11:09:28

貌似是沙发,呵呵
顶楼主,强!!:/sl

crack4000 发表于 2008-5-26 13:45:16

移植到其他65上机器上啊.我要C65的

zxm_2000 发表于 2008-5-26 14:19:26

支持下楼主,这个很有用啊

BingK 发表于 2008-5-26 18:36:16

原帖由 crack4000 于 2008-5-26 13:45 发表 http://mobile.0110.cn/images/common/back.gif
移植到其他65上机器上啊.我要C65的
源码:#define        FIX_ZH_CN_PATH
#ifdef        FIX_ZH_CN_PATH
        extern        doZH_CNPathFix
//ROM:A0756B3C 40 00 8D E2               ADD   R0, SP, #0x40
        CODE32
        RSEG        FIX_ZH_CN_PATH_MKDIR_HOOK
        BLX        FIX_ZH_CN_PATH_MKDIR_
       

//ROM:A02CD2E8 85 10 84 E2               ADD   R1, R4, #0x85
        CODE32       
        RSEG        FIX_ZH_CN_PATH_FCOPY_HOOK
        BLX        FIX_ZH_CN_PATH_FCOPY_
       
//ROM:A0858B44 43 01 FB FB               BLX   sub_A071905A    ; int wsprintf (WSHDR *,const char *format,...)
        CODE32
        RSEG        FIX_ZH_CN_PATH_MSGWIN_HOOK
        BLX        FIX_ZH_CN_PATH_MSGWIN_
       
//ROM:A0751C90 14 00 90 E5               LDR   R0,
        CODE32
        RSEG        FIX_ZH_CN_PATH_FSTATU_HOOK1
        BLX        FIX_ZH_CN_PATH_FSTATU_1

//ROM:A0752350 14 00 94 E5               LDR   R0,
        CODE32
        RSEG        FIX_ZH_CN_PATH_FSTATU_HOOK2
        BLX        FIX_ZH_CN_PATH_FSTATU_2
       
//ROM:A07495D8 CF 0F 8D E2               ADD   R0, SP, #0x33C
        CODE32
        RSEG        FIX_ZH_CN_PATH_ISDIR_HOOK1
        BLX        FIX_ZH_CN_PATH_ISDIR_1
       
//ROM:A0756B14 40 00 8D E2               ADD   R0, SP, #0x40
        CODE32
        RSEG        FIX_ZH_CN_PATH_ISDIR_HOOK2
        BLX        FIX_ZH_CN_PATH_ISDIR_2

//ROM:A0749590 CF 0F 8D E2               ADD   R0, SP, #0x33C
        CODE32
        RSEG        FIX_ZH_CN_PATH_FIND_HOOK1
        BLX        FIX_ZH_CN_PATH_FIND_1
//ROM:A074961C 0D 00 A0 E1               MOV   R0, SP
        CODE32
        RSEG        FIX_ZH_CN_PATH_FIND_HOOK2
        BLX        FIX_ZH_CN_PATH_FIND_2
//ROM:A0755FD4 08 30 8D E2               ADD   R3, SP, #8
        CODE32
        RSEG        FIX_ZH_CN_PATH_FOPEN_HOOK
        BLX        FIX_ZH_CN_PATH_FOPEN_
       
        RSEG        FIX_ZH_CN_PATH_BODY
        DATA
FMT
        DCD        "%t %c"
       
       
        CODE16
DIRECT_DO_FIX
        PUSH        {R0-R7, LR}
        BL        doZH_CNPathFix
        POP        {R0-R7, PC}
DO_FIX_R1
        PUSH        {R0-R7, LR}
        MOV        R0, R1
        BL        doZH_CNPathFix
        POP        {R0-R7, PC}

FIX_ZH_CN_PATH_MKDIR_
        ADD        R0, SP, #0x40
        B        DIRECT_DO_FIX
       
FIX_ZH_CN_PATH_FCOPY_
        MOV        R0, #0x85
        ADD        R1, R4, R0
        B        DO_FIX_R1
       
FIX_ZH_CN_PATH_FSTATU_1
        LDR        R0,
        B        DIRECT_DO_FIX
       
FIX_ZH_CN_PATH_FSTATU_2
        LDR        R0,
        B        DIRECT_DO_FIX

FIX_ZH_CN_PATH_ISDIR_1
        LDR        R2, =0x33C
        ADD        R0, SP, #0
        ADD   R0, R0, R2
        B        DIRECT_DO_FIX
       
FIX_ZH_CN_PATH_ISDIR_2
        ADD        R0, SP, #0x40
        B        DIRECT_DO_FIX
       
FIX_ZH_CN_PATH_FIND_1
        B        FIX_ZH_CN_PATH_ISDIR_1
       
FIX_ZH_CN_PATH_FIND_2
        MOV        R0, SP
        B        DO_FIX_R1

FIX_ZH_CN_PATH_FOPEN_
        ADD        R3, SP, #8
        B        DIRECT_DO_FIX
       
FIX_ZH_CN_PATH_MSGWIN_
        PUSH        {R0-R7, LR}
        MOV        R6, R0
        LDR        R1, =FMT
        LDR        R7, =0xA071905A+1 //wsprintf
        BLX        R7
        MOV        R0, #0x80
        LDR        R7, =0xA0719852+1 //AllocWS
        BLX        R7
        MOV        R4, R0
        MOV        R1, R5
        MOV        R2, #0x80
        LDR        R7, =0xA0987BEE+1 //utf8_2ws
        BLX        R7
        MOV        R0, R6
        MOV        R1, R4
        LDR        R7, =0xA07199B8+1 //wstrcat
        BLX        R7
        MOV        R0, R4
        LDR        R7, =0xA071919C+1 //FreeWS
        BLX        R7
        POP        {R0-R7, PC}
       
       
#endif

__thumb void doZH_CNPathFix(char *path) @ "FIX_ZH_CN_PATH_BODY"
{
        char *p=path;
        char *pp=p; //'\\'
        char *p1=p; //end
        char *temp=0; //temp
        intc=0;
        //if(path/0x10000000!=0xA)
        //        return;
        if(*(p+1)!=':'||*(p+2)!='\\')
                return;
        while(*p1)
        {
                p1++;
        }
        while((c=*p++)>=X_CHAR)
        {
                if(c=='\\'||c==0x2F) // '/'
                        pp=p;
                if(c>0x80)
                {
                        if(*pp>X_CHAR)
                        {
                                p1++;
                                temp=p1;
                                while(temp>pp)
                                {
                                        *temp=*(temp-1);
                                        temp--;
                                }
                                *pp=X_CHAR;
                                temp=p;
                                while((c=*temp))//goto end or next "\\"
                                {
                                        temp++;
                                        p=temp;
                                        if(c=='\\'||c==0x2F)
                                        {
                                                pp=temp;
                                                break;
                                        }
                                }
                        }
                }
        }
}//修正中文路径操作问题

-Z(CODE)FIX_ZH_CN_PATH_MKDIR_HOOK=A0756B3C-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_FCOPY_HOOK=A02CD2E8-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_FSTATU_HOOK1=A0751C90-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_FSTATU_HOOK2=A0752350-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_ISDIR_HOOK1=A07495D8-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_ISDIR_HOOK2=A0756B14-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_FIND_HOOK1=A0749590-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_FIND_HOOK2=A074961C-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_FOPEN_HOOK=A0755FD4-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_MSGWIN_HOOK=A0858B44-FFFFFFFF
-Z(CODE)FIX_ZH_CN_PATH_BODY=A0E23880-FFFFFFFF

小桥流水 发表于 2008-6-11 03:00:15

顶了,支持,已经打补丁

刹那. 发表于 2008-6-14 11:19:25

真的很强大···

illzskn 发表于 2008-6-20 15:25:24

测试,不行
浏览器下 回死机.只要一点网上的jad就死

Rockstar 发表于 2008-8-30 18:05:29

用浏览器下载百分之百死机。

shiliuye16 发表于 2008-12-14 19:28:11

wap55::ii

Yob 发表于 2008-12-14 21:54:54

冰大太强大咯…强烈支持

wenshuishi 发表于 2009-3-20 08:29:17

死机的就不要了,呵呵

lyhonny 发表于 2009-4-5 21:14:40

也来顶上咯
页: [1]
查看完整版本: [SK6Cv50]中文JAVA程序安装乱码修正 V1.0