首页
社区
课程
招聘
发一个反恐精英1.5的子弹无限Loader的源代码
发表于: 2006-7-28 10:07 10711

发一个反恐精英1.5的子弹无限Loader的源代码

2006-7-28 10:07
10711

用金山游侠和Ollydbg可以得知:
改目录“\反恐精英\cstrike\dlls”下mp.dll文件以下值可使应的武器子弹无限
-------------------------------------------------------------------
        内存偏移值        文件偏移值        武器选号        武器名
1、        c2cca0d                ca0d                B11                K&M .45
2、        c2c5790                5790                B12                9*19mm
3、        c2c3508                3508                B13                Night Hawk
4、        c2c9728                9728                B14                228
5、        c2c3bac                3bac                B15                .40 Dual
6、        c2c4348                4348                B16                Five-Seven

1、        c2c7951                7951                B21                12 Gauge
2、        c2ccf21                cf21                B22                Auto Shotgun

1、        c2c9012                9012                B31                SMG
2、        c2cbbd8                bbd8                B32                Schmidt MP
3、        c2c9cfd                9cfd                B33                ES C90
4、        c2c8a32                8a32                B34                Mac-10
5、        c2cc18f                c18f                B35                K&M UMP45

1、        c2c1352                1352                B41                CV-47
2、        c2cafb2                afb2                B42                Krieg 552
3、        c2c8348                8348                B43                M4A1
4、        c2c1da2                1da2                B44                Bullpup
5、        c2ca2fd                a2fd                B45                Schmidt
6、        c2c250e                250e                B46                Magnum
7、        c2c4f03                4f03                B47                D3AU1
8、        c2ca9b3                a9b3                B48                Krieg 550

1、        c2c73d2                73d2                B51                ES M249

1、        c2c4a10                4a10                B83                Flashbang
2、        c2c5fd6                5fd6                B84                HE Grenade
3、        c2cb7b8                b7b8                B85                Smoke Grenade
-------------------------------------------------------------------
据此用loader来实现动态修改,要注意游戏会检测是否处于调试状态。。。

源代码如下:
; ????????????????????????????????????
    .486                       ; create 32 bit code
    .model flat, stdcall       ; 32 bit memory model
    option casemap :none       ; case sensitive

    include \masm32\include\windows.inc
    include \masm32\include\masm32.inc
    include \masm32\include\gdi32.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    include \masm32\include\Comctl32.inc
    include \masm32\include\comdlg32.inc
    include \masm32\include\shell32.inc
    include \masm32\include\oleaut32.inc

    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\gdi32.lib
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    includelib \masm32\lib\Comctl32.lib
    includelib \masm32\lib\comdlg32.lib
    includelib \masm32\lib\shell32.lib
    includelib \masm32\lib\oleaut32.lib

; ????????????????????????????????????
    .data
    CS_AppName1 db "cstrike.exe",0
    CS_AppName2 db "hl.exe",0
    CS_CommandLine db " -console -game cstrike",0
    CS_StartupInfo db 48h dup (0)
    BaseOfMpDll dd 0
    IsModified dd 0
;-------------------------------------------------
nFileNameSize=60h
PatcherFileName db nFileNameSize dup (0)
WeaponName db 10h dup(0)
nWeaponNameSize dd 0

        lpBaseAddressx  dd 05790h
        oBufferx        db 048h
        mBufferx        db 090h
        nSizex          = 1h
        
        lpBaseAddressx1  dd 05790h
        oBufferx1        db 048h
        mBufferx1        db 090h
        nSizex1          = 1h

        lpBaseAddressx2  dd 05790h
        oBufferx2        db 048h
        mBufferx2        db 090h
        nSizex2          = 1h
;-------------------------------------------------

        hProcess       dd 0
        tBuffer        db 40h dup(0)

;   MpCheck
        lpBaseAddress  = 0ca0dh
        oBuffer        db 04bh,06ah,05h
        mBuffer        db 090h,090h,090h
        nSize          = 3h

        lpBaseAddress0  = 0193240ah
        oBuffer0        db 074h
        mBuffer0        db 0ebh
        nSize0          = 1h
               
        lpBaseAddress1  = 0ca0dh
        oBuffer1        db 04bh
        mBuffer1        db 090h
        nSize1          = 1h

        lpBaseAddress2  = 05790h
        oBuffer2        db 048h
        mBuffer2        db 090h
        nSize2          = 1h

        lpBaseAddress3  = 03508h
        oBuffer3        db 048h
        mBuffer3        db 090h
        nSize3          = 1h

        lpBaseAddress4  = 09728h
        oBuffer4        db 048h
        mBuffer4        db 090h
        nSize4          = 1h

        lpBaseAddress5  = 03bach
        oBuffer5        db 048h
        mBuffer5        db 090h
        nSize5          = 1h

        lpBaseAddress6  = 04348h
        oBuffer6        db 048h
        mBuffer6        db 090h
        nSize6          = 1h

        lpBaseAddress7  = 07951h
        oBuffer7        db 04ah
        mBuffer7        db 090h
        nSize7          = 1h

        lpBaseAddress8  = 0cf21h
        oBuffer8        db 04ah
        mBuffer8        db 090h
        nSize8          = 1h

        lpBaseAddress9  = 09012h
        oBuffer9        db 048h
        mBuffer9        db 090h
        nSize9          = 1h

        lpBaseAddress10  = 0bbd8h
        oBuffer10        db 048h
        mBuffer10        db 090h
        nSize10          = 1h

        lpBaseAddress11  = 09cfdh
        oBuffer11        db 048h
        mBuffer11        db 090h
        nSize11          = 1h

        lpBaseAddress12  = 08a32h
        oBuffer12        db 048h
        mBuffer12        db 090h
        nSize12          = 1h

        lpBaseAddress13  = 0c18fh
        oBuffer13        db 048h
        mBuffer13        db 090h
        nSize13          = 1h

        lpBaseAddress14  = 01352h
        oBuffer14        db 048h
        mBuffer14        db 090h
        nSize14          = 1h

        lpBaseAddress15  = 0afb2h
        oBuffer15        db 048h

        mBuffer15        db 090h
        nSize15          = 1h

        lpBaseAddress16  = 08348h
        oBuffer16        db 048h
        mBuffer16        db 090h
        nSize16          = 1h

        lpBaseAddress17  = 01da2h
        oBuffer17        db 048h
        mBuffer17        db 090h
        nSize17          = 1h

        lpBaseAddress18  = 0a2fdh
        oBuffer18        db 048h
        mBuffer18        db 090h
        nSize18          = 1h

        lpBaseAddress19  = 0250eh
        oBuffer19        db 048h
        mBuffer19        db 090h
        nSize19          = 1h

        lpBaseAddress20  = 04f03h
        oBuffer20        db 048h
        mBuffer20        db 090h
        nSize20          = 1h

        lpBaseAddress21  = 0a9b3h
        oBuffer21        db 048h
        mBuffer21        db 090h
        nSize21          = 1h
        
        lpBaseAddress22  = 073d2h
        oBuffer22        db 048h
        mBuffer22        db 090h
        nSize22          = 1h

        lpBaseAddress23  = 04a10h
        oBuffer23        db 04ah
        mBuffer23        db 090h
        nSize23          = 1h

        lpBaseAddress24  = 05fd6h
        oBuffer24        db 04ah
        mBuffer24        db 090h
        nSize24          = 1h

        lpBaseAddress25  = 0b7b8h
        oBuffer25        db 04ah
        mBuffer25        db 090h
        nSize25          = 1h

       CopyRightCaption db "反恐精英V1.5 子弹无限作弊器",0
       CopyRightText    db "使用方法:将本作弊器文件名改为欲作弊武器的购买按键序列后放到反恐目录下运行。",0dh,0ah
                        db "          如要AK47子弹无限,文件名就改为b41(闪弹/手雷/烟弹用b83/b84/b85表示)。",0dh,0ah
                        db "          支持<单种><两种>和<全部>三种作弊模式,模式由作弊器文件名来识别。",0dh,0ah
                        db "          <全部>为默认模式,改名时要注意格式一定要对,具体例子格式如下:",0dh,0ah,0dh,0ah
                        
                        db "          作弊模式        文件名格式        作弊武器",0dh,0ah
                        db "          单种            b41               AK47",0dh,0ah
                        db "          两种            b13+b46           Deagle和AWP",0dh,0ah
                        db "          全部            其它              所有武器",0dh,0ah,0dh,0ah

                        db "编制说明:win32汇编语言编写,由 rgbsky(俞凯) 完成,谢谢朋友们的使用!",0dh,0ah
                        db "编制时间:2005年6月18日      版本:Ver1.2",0dh,0ah
                        db "作者联系:rgbsky@sohu.com  rgbsky@hotmail.com     (QQ:175583470)",0
                        
        SecceedCaption db "成功",0
        SecceedText    db "修改器顺利工作。",0         
        Error1Caption  db "失败",0
        Error1Text     db "反恐程序未找到,请确保该修改器与 cstrike.exe 或 hl.exe 在同一目录下。",0         
        Error2Caption  db "失败",0
        Error2Text     db "'模块文件名获取失败。",0
        Error3Caption  db "失败",0
        Error3Text     db "'读取内存时产生错误。",0
        Error4Caption  db "失败",0
        Error4Text     db "文件不匹配,请检查反恐精英的版本是否为Ver1.5。",0
        Error5Caption  db "失败",0
        Error5Text     db "写入内存时产生错误。",0
            
    .data?
    DBEvent DEBUG_EVENT <>
    CS_ProcessInfo PROCESS_INFORMATION <>

    .code

; ?????????????????????????????????????

start:

; ?????????????????????????????????????

invoke GetModuleFileName,NULL,addr PatcherFileName,nFileNameSize
test eax,eax
jz BeginPatcher
mov nWeaponNameSize,eax
mov ecx,eax
sub ecx,4
obtainlength:
        dec ecx
        mov ebx,offset PatcherFileName
        mov al,byte ptr [ebx+ecx]
        cmp al,'\'
        jz getlength
        cmp al,60h
        jb uppercase
        sub al,20h
uppercase:
        mov byte ptr [ebx+ecx],al
        jmp obtainlength

getlength:
        sub nWeaponNameSize,5
        sub nWeaponNameSize,ecx
        xor esi,esi
fillweaponname:
        inc ecx
        mov ebx,offset PatcherFileName
        mov al,byte ptr [ebx+ecx]
        mov edx,offset WeaponName
        mov byte ptr [edx+esi],al
        inc esi
        cmp esi,nWeaponNameSize
        jnz fillweaponname

        .IF esi==3h
        jmp Init1Weapon
        .ELSEIF esi==7h
        jmp Init2Weapon

        .ELSE
        jmp BeginPatcher
        .ENDIF
        

Init1Weapon:

        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='1'
        mov lpBaseAddressx,0ca0dh
        mov oBufferx,04bh
        jmp BeginPatcher
        .ENDIF        
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='2'
        mov lpBaseAddressx,05790h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='3'
        mov lpBaseAddressx,03508h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='4'
        mov lpBaseAddressx,09728h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='5'
        mov lpBaseAddressx,03bach
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='6'
        mov lpBaseAddressx,04348h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='2' && WeaponName[2]=='1'
        mov lpBaseAddressx,07951h
        mov oBufferx,04ah
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='2' && WeaponName[2]=='2'
        mov lpBaseAddressx,0cf21h
        mov oBufferx,04ah
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='1'
        mov lpBaseAddressx,09012h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='2'
        mov lpBaseAddressx,0bbd8h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='3'
        mov lpBaseAddressx,09cfdh
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='4'
        mov lpBaseAddressx,08a32h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='5'
        mov lpBaseAddressx,0c18fh
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='1'
        mov lpBaseAddressx,01352h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='2'
        mov lpBaseAddressx,0afb2h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='3'
        mov lpBaseAddressx,08348h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='4'
        mov lpBaseAddressx,01da2h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='5'
        mov lpBaseAddressx,0a2fdh
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='6'
        mov lpBaseAddressx,0250eh
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='7'
        mov lpBaseAddressx,04f03h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='8'
        mov lpBaseAddressx,0a9b3h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='5' && WeaponName[2]=='1'
        mov lpBaseAddressx,073d2h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='8' && WeaponName[2]=='3'
        mov lpBaseAddressx,04a10h
        mov oBufferx,04ah
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='8' && WeaponName[2]=='4'
        mov lpBaseAddressx,05fd6h
        mov oBufferx,04ah
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='8' && WeaponName[2]=='5'
        mov lpBaseAddressx,0b7b8h
        mov oBufferx,04ah
        jmp BeginPatcher
        .ENDIF
        

        mov nWeaponNameSize,0
        jmp BeginPatcher
        
Init2Weapon:
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='1'
        mov lpBaseAddressx1,0ca0dh
        mov oBufferx1,04bh
        jmp testb2
        .ENDIF        
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='2'
        mov lpBaseAddressx1,05790h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='3'
        mov lpBaseAddressx1,03508h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='4'
        mov lpBaseAddressx1,09728h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='5'
        mov lpBaseAddressx1,03bach
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='1' && WeaponName[2]=='6'
        mov lpBaseAddressx1,04348h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='2' && WeaponName[2]=='1'
        mov lpBaseAddressx1,07951h
        mov oBufferx1,04ah
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='2' && WeaponName[2]=='2'
        mov lpBaseAddressx1,0cf21h
        mov oBufferx1,04ah
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='1'
        mov lpBaseAddressx1,09012h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='2'
        mov lpBaseAddressx1,0bbd8h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='3'
        mov lpBaseAddressx1,09cfdh
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='4'
        mov lpBaseAddressx1,08a32h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='3' && WeaponName[2]=='5'
        mov lpBaseAddressx1,0c18fh
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='1'
        mov lpBaseAddressx1,01352h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='2'
        mov lpBaseAddressx1,0afb2h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='3'
        mov lpBaseAddressx1,08348h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='4'
        mov lpBaseAddressx1,01da2h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='5'
        mov lpBaseAddressx1,0a2fdh
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='6'
        mov lpBaseAddressx1,0250eh
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='7'
        mov lpBaseAddressx1,04f03h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='4' && WeaponName[2]=='8'
        mov lpBaseAddressx1,0a9b3h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='5' && WeaponName[2]=='1'
        mov lpBaseAddressx1,073d2h
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='8' && WeaponName[2]=='3'
        mov lpBaseAddressx1,04a10h
        mov oBufferx1,04ah
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='8' && WeaponName[2]=='4'
        mov lpBaseAddressx1,05fd6h
        mov oBufferx1,04ah
        jmp testb2
        .ENDIF
        .IF WeaponName[0]=='B' && WeaponName[1]=='8' && WeaponName[2]=='5'
        mov lpBaseAddressx1,0b7b8h
        mov oBufferx1,04ah
        jmp testb2
        .ENDIF        
        mov nWeaponNameSize,0
        jmp BeginPatcher
testb2:        
        .IF WeaponName[4]=='B' && WeaponName[5]=='1' && WeaponName[6]=='1'
        mov lpBaseAddressx2,0ca0dh
        mov oBufferx2,04bh
        jmp BeginPatcher
        .ENDIF        
        .IF WeaponName[4]=='B' && WeaponName[5]=='1' && WeaponName[6]=='2'
        mov lpBaseAddressx2,05790h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='1' && WeaponName[6]=='3'
        mov lpBaseAddressx2,03508h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='1' && WeaponName[6]=='4'
        mov lpBaseAddressx2,09728h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='1' && WeaponName[6]=='5'
        mov lpBaseAddressx2,03bach
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='1' && WeaponName[6]=='6'
        mov lpBaseAddressx2,04348h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='2' && WeaponName[6]=='1'
        mov lpBaseAddressx2,07951h
        mov oBufferx2,04ah
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='2' && WeaponName[6]=='2'
        mov lpBaseAddressx2,0cf21h
        mov oBufferx2,04ah
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='3' && WeaponName[6]=='1'
        mov lpBaseAddressx2,09012h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='3' && WeaponName[6]=='2'
        mov lpBaseAddressx2,0bbd8h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='3' && WeaponName[6]=='3'
        mov lpBaseAddressx2,09cfdh
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='3' && WeaponName[6]=='4'
        mov lpBaseAddressx2,08a32h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='3' && WeaponName[6]=='5'
        mov lpBaseAddressx2,0c18fh
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='4' && WeaponName[6]=='1'
        mov lpBaseAddressx2,01352h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='4' && WeaponName[6]=='2'
        mov lpBaseAddressx2,0afb2h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='4' && WeaponName[6]=='3'
        mov lpBaseAddressx2,08348h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='4' && WeaponName[6]=='4'
        mov lpBaseAddressx2,01da2h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='4' && WeaponName[6]=='5'
        mov lpBaseAddressx2,0a2fdh
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='4' && WeaponName[6]=='6'
        mov lpBaseAddressx2,0250eh
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='4' && WeaponName[6]=='7'
        mov lpBaseAddressx2,04f03h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='4' && WeaponName[6]=='8'
        mov lpBaseAddressx2,0a9b3h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='5' && WeaponName[6]=='1'
        mov lpBaseAddressx2,073d2h
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='8' && WeaponName[6]=='3'
        mov lpBaseAddressx2,04a10h
        mov oBufferx2,04ah
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='8' && WeaponName[6]=='4'
        mov lpBaseAddressx2,05fd6h
        mov oBufferx2,04ah
        jmp BeginPatcher
        .ENDIF
        .IF WeaponName[4]=='B' && WeaponName[5]=='8' && WeaponName[6]=='5'
        mov lpBaseAddressx2,0b7b8h
        mov oBufferx2,04ah
        jmp BeginPatcher
        .ENDIF
               
        mov nWeaponNameSize,0
        jmp BeginPatcher
;------------------------------------------------------
BeginPatcher:

    invoke MessageBox,NULL, addr CopyRightText, addr CopyRightCaption,MB_OK or MB_ICONINFORMATION

    invoke CreateProcess,addr CS_AppName1,addr CS_CommandLine,0,0,0,DEBUG_PROCESS+DEBUG_ONLY_THIS_PROCESS,0,0,addr CS_StartupInfo,addr CS_ProcessInfo
    test eax,eax
    jnz createsucceed
    invoke CreateProcess,addr CS_AppName2,addr CS_CommandLine,0,0,0,DEBUG_PROCESS+DEBUG_ONLY_THIS_PROCESS,0,0,addr CS_StartupInfo,addr CS_ProcessInfo
    test eax,eax
    jz error1
        
createsucceed:
   
    .while TRUE
       invoke WaitForDebugEvent, addr DBEvent, INFINITE
       .if DBEvent.dwDebugEventCode==EXIT_PROCESS_DEBUG_EVENT
           jmp exit
       .elseif DBEvent.dwDebugEventCode==CREATE_PROCESS_DEBUG_EVENT
           mov eax,DBEvent.u.CreateProcessInfo.hProcess
           mov hProcess,eax
       .elseif DBEvent.dwDebugEventCode==LOAD_DLL_DEBUG_EVENT
           mov eax,DBEvent.u.LoadDll.lpBaseOfDll
           add eax,lpBaseAddress
           invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize,NULL
;           test eax,eax
;           jz error3
;------------------------------------------------------------------------------------------------
           xor esi,esi
           mov esi,nSize
goon:      dec esi
           mov ebx,offset oBuffer
           mov al,byte ptr [ebx+esi]
           mov ebx,offset tBuffer
           mov dl,byte ptr [ebx+esi]
           cmp al,dl
           jnz cdevent
           cmp esi,0
           jnz goon
cmp IsModified,1
jz cdevent
;----------------------------------------------------

        mov eax,lpBaseAddress0
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize0,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize0
goon0:  dec esi
        mov ebx,offset oBuffer0
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon0
        mov eax,lpBaseAddress0
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer0,nSize0,NULL
        test eax,eax
        jz error5
;------------------------------------------------------------------------------------------------
        mov esi,nWeaponNameSize
        .IF esi==3h
        jmp Patcher1Weapon
        .ELSEIF esi==7h
        jmp Patcher2Weapon
        .ELSE
        jmp PatcherAllWeapon
        .ENDIF
        
Patcher1Weapon:
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddressx
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSizex,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSizex
goonx:  dec esi
        mov ebx,offset oBufferx
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goonx
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddressx
        invoke WriteProcessMemory,hProcess,eax,addr mBufferx,nSizex,NULL
        test eax,eax
        jz error5

        mov IsModified,1
        jmp cdevent

Patcher2Weapon:
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddressx1
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSizex1,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSizex1
goonx1:  dec esi
        mov ebx,offset oBufferx1
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goonx1
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddressx1
        invoke WriteProcessMemory,hProcess,eax,addr mBufferx1,nSizex1,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddressx2
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSizex2,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSizex2
goonx2:  dec esi
        mov ebx,offset oBufferx2
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goonx2
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddressx2
        invoke WriteProcessMemory,hProcess,eax,addr mBufferx2,nSizex2,NULL
        test eax,eax
        jz error5

        mov IsModified,1
        jmp cdevent

PatcherAllWeapon:
;------------------------------------------------------------------------------------------------
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress1
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize1,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize1
goon1:  dec esi
        mov ebx,offset oBuffer1
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon1
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress1
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer1,nSize1,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress2
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize2,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize2
goon2:  dec esi
        mov ebx,offset oBuffer2
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon2
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress2
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer2,nSize2,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress3
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize3,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize3
goon3:  dec esi
        mov ebx,offset oBuffer3
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon3
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress3
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer3,nSize3,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress4
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize4,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize4
goon4:  dec esi
        mov ebx,offset oBuffer4
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon4
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress4
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer4,nSize4,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress5
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize5,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize5
goon5:  dec esi
        mov ebx,offset oBuffer5
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon5
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress5
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer5,nSize5,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress6
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize6,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize6
goon6:  dec esi
        mov ebx,offset oBuffer6
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon6
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress6
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer6,nSize6,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress7
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize7,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize7
goon7:  dec esi
        mov ebx,offset oBuffer7
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon7
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress7
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer7,nSize7,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress8
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize8,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize8
goon8:  dec esi
        mov ebx,offset oBuffer8
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon8
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress8
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer8,nSize8,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress9
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize9,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize9
goon9:  dec esi
        mov ebx,offset oBuffer9
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon9
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress9
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer9,nSize9,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress10
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize10,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize10
goon10:  dec esi
        mov ebx,offset oBuffer10
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon10
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress10
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer10,nSize10,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress11
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize11,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize11
goon11:  dec esi
        mov ebx,offset oBuffer11
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon11
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress11
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer11,nSize11,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress12
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize12,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize12
goon12:  dec esi
        mov ebx,offset oBuffer12
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon12
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress12
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer12,nSize12,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress13
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize13,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize13
goon13:  dec esi
        mov ebx,offset oBuffer13
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon13
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress13
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer13,nSize13,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress14
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize14,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize14
goon14:  dec esi
        mov ebx,offset oBuffer14
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon14
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress14
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer14,nSize14,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress15
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize15,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize15
goon15:  dec esi
        mov ebx,offset oBuffer15
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon15
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress15
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer15,nSize15,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress16
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize16,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize16
goon16:  dec esi
        mov ebx,offset oBuffer16
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon16
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress16
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer16,nSize16,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress17
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize17,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize17
goon17:  dec esi
        mov ebx,offset oBuffer17
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon17
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress17
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer17,nSize17,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress18
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize18,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize18
goon18:  dec esi
        mov ebx,offset oBuffer18
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon18
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress18
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer18,nSize18,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress19
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize19,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize19
goon19:  dec esi
        mov ebx,offset oBuffer19
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon19
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress19
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer19,nSize19,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress20
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize20,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize20
goon20:  dec esi
        mov ebx,offset oBuffer20
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon20
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress20
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer20,nSize20,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress21
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize21,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize21
goon21:  dec esi
        mov ebx,offset oBuffer21
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon21
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress21
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer21,nSize21,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress22
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize22,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize22
goon22:  dec esi
        mov ebx,offset oBuffer22
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon22
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress22
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer22,nSize22,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress23
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize23,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize23
goon23:  dec esi
        mov ebx,offset oBuffer23
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon23
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress23
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer23,nSize23,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress24
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize24,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize24
goon24:  dec esi
        mov ebx,offset oBuffer24
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon24
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress24
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer24,nSize24,NULL
        test eax,eax
        jz error5

        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress25
        invoke ReadProcessMemory,hProcess,eax,addr tBuffer,nSize25,NULL
        test eax,eax
        jz error3
        xor esi,esi
        mov esi,nSize25
goon25:  dec esi
        mov ebx,offset oBuffer25
        mov al,byte ptr [ebx+esi]
        mov ebx,offset tBuffer
        mov dl,byte ptr [ebx+esi]
        cmp al,dl
        jnz error4
        cmp esi,0
        jnz goon25
        mov eax,DBEvent.u.LoadDll.lpBaseOfDll
        add eax,lpBaseAddress25
        invoke WriteProcessMemory,hProcess,eax,addr mBuffer25,nSize25,NULL
        test eax,eax
        jz error5
mov IsModified,1

;        invoke MessageBox,NULL, addr SecceedText, addr SecceedCaption,MB_OK or MB_ICONINFORMATION

       .elseif DBEvent.dwDebugEventCode==EXCEPTION_DEBUG_EVENT
           .if DBEvent.u.Exception.pExceptionRecord.ExceptionCode==EXCEPTION_BREAKPOINT
              invoke ContinueDebugEvent, DBEvent.dwProcessId, DBEvent.dwThreadId, DBG_CONTINUE
             .continue
           .endif
       .endif
cdevent:
       invoke ContinueDebugEvent, DBEvent.dwProcessId, DBEvent.dwThreadId, DBG_EXCEPTION_NOT_HANDLED
    .endw

error1:
        invoke MessageBox,NULL, addr Error1Text, addr Error1Caption,MB_OK or MB_ICONERROR
        invoke TerminateProcess,CS_ProcessInfo.hProcess,NULL
        jmp exit
error2:
        invoke MessageBox,NULL, addr Error2Text, addr Error2Caption,MB_OK or MB_ICONERROR
        invoke TerminateProcess,CS_ProcessInfo.hProcess,NULL
        jmp exit
error3:
        invoke MessageBox,NULL, addr Error3Text, addr Error3Caption,MB_OK or MB_ICONERROR
        invoke TerminateProcess,CS_ProcessInfo.hProcess,NULL
        jmp exit

error4:
        invoke MessageBox,NULL, addr Error4Text, addr Error4Caption,MB_OK or MB_ICONERROR
        invoke TerminateProcess,CS_ProcessInfo.hProcess,NULL
        jmp exit
error5:
        invoke MessageBox,NULL, addr Error5Text, addr Error5Caption,MB_OK or MB_ICONERROR
        invoke TerminateProcess,CS_ProcessInfo.hProcess,NULL
        jmp exit

exit:
      invoke CloseHandle,CS_ProcessInfo.hProcess
      invoke CloseHandle,CS_ProcessInfo.hThread
      invoke ExitProcess,NULL
; ????????????????????????????????????
end start


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

收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 138
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
这是附件。。。谢谢kanxue老大。

上传的附件:
2006-7-28 10:08
0
雪    币: 47147
活跃值: (20455)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
最初由 rgbsky 发布
刚注册,附件放不上去。。。


现在可以了,点击回复主题就可上传附件。
2006-7-28 10:17
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
强啊,作弊器揭秘的文章不多见
2006-7-28 10:20
0
雪    币: 465
活跃值: (667)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
不错,学习
2006-7-28 10:40
0
雪    币: 97697
活跃值: (200834)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
sustain.
2006-7-28 10:40
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
7
支持楼主把调试的过程也写一写~
2006-7-28 11:14
0
雪    币: 436
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
像这样的分析的这么清析在论坛确实少 !!
2006-7-28 12:11
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
嗯,下来和别人杀杀!呵呵

股票公式谁会调试?
2006-7-28 12:57
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
10
不错。花了不少功夫应该。
2006-7-28 12:57
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
11
强,学习。
2006-7-28 15:00
0
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
幸苦!!学习了!
2006-7-28 16:34
0
雪    币: 333
活跃值: (11)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
13
好好学习下!
2006-7-28 19:14
0
雪    币: 440
活跃值: (737)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
14
既然放出源码
建议附件中带上可以编译的源码
包括make文件

写得好,学习!
2006-7-28 21:06
0
雪    币: 208
活跃值: (46)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
支持支持。如果有过程那就更好了
2006-7-28 22:14
0
雪    币: 245
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这个东西能上网通过反作弊器么?
2006-7-29 02:19
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
希望我有一天也能写出破解程序!
2006-7-31 16:19
0
游客
登录 | 注册 方可回帖
返回
//