Guitar Pro 6 打开 Guitar Pro 5 工程文件汉字乱码问题 ver 2.0

下载到Guitar Pro 6工作目录,运行GPCore_To_GBK.exe就可以 修改搜索速度   下载工具
include \masm32\include\masm32rt.inc
comment * -----------------------------------------------------
                GPCore.dll->49 53 4F 2D 38 38 35 39 2D 31 
                            47 42 4B 00 00 00 00 00 00 00
                ISO-8859-1->GBK         ver 2.0
                Use Quick Search engine
        ----------------------------------------------------- *
    .data
        fname    db "GPCore.dll",0
        fbakname db "GPCore.dll.bak",0
        findStr  db "ISO-8859-1",0
        fixData  db 47H,42H,4BH,00,00,00,00,00,00,00 ;10
        findPOS  dw 0
    .code

start:
        call main
        exit

main proc
        call openGPCore
        ret
main endp

openGPCore proc
        LOCAL hFile     :DWORD
        LOCAL hBakFile  :DWORD
        LOCAL dSize     :DWORD
        LOCAL hMem      :DWORD
        .if rv(exist,offset fname) != 0
                mov hFile, fopen(offset fname)
        .else
                print "not find "
                print offset fname
                ret
        .endif
        mov dSize, fseek(hFile,0,FILE_END)
        mov hMem, alloc(dSize)

        mov eax , fseek(hFile,0,FILE_BEGIN)
        mov eax , fread(hFile,hMem,dSize)
        mov     dword ptr [findPOS] , 0
        
        ;----find ISO-8859-1
        mov     ecx, dSize
        push    ecx
        mov     edx, hMem
        push    edx 
        mov     eax, 10 
        push    eax
        mov     ecx, offset findStr
        push    ecx
        ;pat patlen textt texttlen
        call qs
        ;printf  ("%d",dword ptr [findPOS])
        .if dword ptr [findPOS] == 0
                print "Not find "
                print offset findStr,13,10
        .else
                ;backup file to GPCore.dll.bak
                mov hBakFile, fcreate( offset fbakname )
                mov eax , fwrite( hBakFile, hMem, dSize)
                fclose hBakFile

                ;fix to GBK
                mov eax , fseek(hFile,dword ptr [findPOS],FILE_BEGIN)
                mov eax , fwrite( hFile, offset fixData, 10)
                print "Fix "
                print offset fname
                print " success.",13,10
        .endif

        fclose hFile
        free hMem
        ret
openGPCore endp

OUTPUT proc
        mov     eax,dword ptr [esp+4]
        mov     dword ptr [findPOS] , eax
        ret
OUTPUT endp

preQsBc proc
        push    ebp
        mov     ebp,dword ptr [esp+10h]
        push    esi
        mov     esi,dword ptr [esp+10h]
        push    edi
        mov     ecx,100h
        lea     eax,[esi+1]
        mov     edi,ebp
        rep stos dword ptr es:[edi]
        xor     eax,eax
        test    esi,esi
        jle     preQsBc1

        mov     edi,dword ptr [esp+10h]
        mov     ecx,esi
preQsBc2:
        xor     edx,edx
        mov     dl,byte ptr [eax+edi]
        inc     eax
        mov     dword ptr [ebp+edx*4],ecx
        dec     ecx
        cmp     eax,esi
        jl      preQsBc2
preQsBc1:
        pop     edi
        pop     esi
        pop     ebp
        ret

preQsBc endp

qs proc
        sub     esp,404h
        mov     ecx,dword ptr [esp+408h]
        push    ebx
        push    ebp
        mov     ebp,dword ptr [esp+414h]
        lea     eax,[esp+0Ch]
        push    eax
        push    ebp
        push    ecx
        call    preQsBc
        mov     eax,dword ptr [esp+428h]
        add     esp,0Ch
        xor     ebx,ebx
        sub     eax,ebp
        mov     dword ptr [esp+8],eax
        js      qs1

        mov     edx,dword ptr [esp+418h]
        push    esi
        push    edi
qs3:
        mov     esi,dword ptr [esp+418h]
        mov     ecx,ebp
        lea     edi,[ebx+edx]
        xor     eax,eax
        repe cmps byte ptr [esi],byte ptr es:[edi]
        jne     qs2

        push    ebx
        call    OUTPUT
        mov     edx,dword ptr [esp+424h]
        add     esp,4
qs2:
        lea     eax,[edx+ebp]
        xor     ecx,ecx
        mov     cl,byte ptr [eax+ebx]
        mov     eax,dword ptr [esp+10h]
        add     ebx,dword ptr [esp+ecx*4+14h]
        cmp     ebx,eax
        jle     qs3

        pop     edi
        pop     esi
qs1:
        pop     ebp
        pop     ebx
        add     esp,404h
        ret
qs endp
end start
下载源码
posted @ 2013-04-17 17:03  1CM  阅读(...)  评论(...编辑  收藏