• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            小明思考

            高性能服務(wù)器端計(jì)算
            posts - 70, comments - 428, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            我是比較鐵桿的英雄無(wú)敵3的fans,在網(wǎng)上看到這樣的文章:http://game.china.com/zh_cn/play/10002765/20021113/11362720.html

            就是讓我方英雄學(xué)會(huì)所有技能,真的蠻爽的
            學(xué)會(huì)28項(xiàng)技能修改法
            heroes3.jpg

              首先,把你的英雄的士兵調(diào)到前面幾格來(lái),接著用FPE來(lái)搜索。例如你的士兵數(shù):第一格3,第二格14,第三格4,那么就用 3,0,14,0,4,0 來(lái)搜索,就可以找到地址。顯示為:
              士兵種類- FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
               FF FF FF FF FF FF FF FF FF FF FF FF 03 00 00 00-士兵數(shù)量
               0E 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00
               00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08
               09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
               25 26 27 28 01 02 03 04 05 06 07 08 00 00 00 00
               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
               04 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF
               FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
               FF或00作為一格,每4格是代表一種屬性,物品, 狀態(tài)等等。前面28格是士兵的種類,接下來(lái)28格是士兵的數(shù)量。例如: 英雄可帶7種士兵,你要每種都是天使,那么把
               03 00 00 00 前面的FF FF FF FF 改為0D 00 00 00。 如果你要數(shù)量100, 那么把
               03 00 00 00 改為64 00 00 00。 士兵的種類是這樣分的:00 00 00 00 是槍兵,
               01 00 00 00 是 進(jìn)化一級(jí)的槍兵,02 00 00 00 是弓箭手,03 00 00 00 是神箭手。
               如此類推。
              
               從03那一格開(kāi)始數(shù),28格后就是英雄的技能等級(jí),接著的28格是英雄的技能,
               也就是從01到28代表的是英雄的技能等級(jí),技能等級(jí)最多只能是3。
               01 箭術(shù)等級(jí) 02 尋路術(shù)等級(jí) 03 后勤學(xué)等級(jí)
               04 偵察術(shù)等級(jí) 05 外交術(shù)等級(jí) 06 航海術(shù)等級(jí)
               07 領(lǐng)導(dǎo)術(shù)等級(jí) 08 智慧術(shù)等級(jí) 09 神秘術(shù)等級(jí)
               10 幸運(yùn)術(shù)等級(jí) 11 彈道術(shù)等級(jí) 12 鷹眼術(shù)等級(jí)
               13 招魂術(shù)等級(jí) 14 理財(cái)術(shù)等級(jí) 15 火系魔法等級(jí)
               16 氣系魔法等級(jí) 17 水系魔法等級(jí) 18 土系魔法等級(jí)
               19 學(xué)術(shù)等級(jí) 20 戰(zhàn)術(shù)等級(jí) 21 炮術(shù)等級(jí)
               22 學(xué)習(xí)能力等級(jí) 23 進(jìn)攻術(shù)等級(jí) 24 防御術(shù)等級(jí)

            但是每次使用FPE真的很麻煩,我又是很懶的人。FPE可以做到的事情,我也可以做到。
            其實(shí)游戲修改不過(guò)是使用ReadProcessMemoryWriteProcessMemory

            花了半天不斷的試驗(yàn),終于寫(xiě)出一個(gè)可以用于英雄無(wú)敵3.1版的修改器,沒(méi)有寫(xiě)界面(I'm lazy-:)),運(yùn)行之后就是讓我方英雄學(xué)會(huì)所有技能。

            #include <windows.h>
            #include 
            <tlhelp32.h>
            #include 
            <cstdio>

            const char MODULE_NAME[] = "Heroes3.exe";

            void printError( TCHAR* msg )
            {
                DWORD eNum;
                TCHAR sysMsg[
            256];
                TCHAR
            * p;
                
                eNum 
            = GetLastError( );
                FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM 
            | FORMAT_MESSAGE_IGNORE_INSERTS,
                    NULL, eNum,
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
            // Default language
                    sysMsg, 256, NULL );
                
                
            // Trim the end of the line and terminate it with a null
                p = sysMsg;
                
            while( ( *> 31 ) || ( *== 9 ) )
                    
            ++p;
                
            do { *p-- = 0; } while( ( p >= sysMsg ) &&
                    ( ( 
            *== '.' ) || ( *< 33 ) ) );
                
                
            // Display the message
                printf( "WARNING: %s failed with error %d (%s)\n", msg, eNum, sysMsg );
            }


            DWORD findProcessId(
            const char *module)
            {
                DWORD result 
            = -1;
                HANDLE hProcessSnap;
                
                
            // Take a snapshot of all processes in the system.
                hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
                
            if( hProcessSnap == INVALID_HANDLE_VALUE )
                {
                    printError( 
            "CreateToolhelp32Snapshot (of processes)" );
                    
            return result;
                }
                
                PROCESSENTRY32 pe32;
                
            // Set the size of the structure before using it.
                pe32.dwSize = sizeof( PROCESSENTRY32 );
                
                
            // Retrieve information about the first process,
                
            // and exit if unsuccessful
                if!Process32First( hProcessSnap, &pe32 ) )
                {
                    printError( 
            "Process32First" );  // Show cause of failure
                    CloseHandle( hProcessSnap );     // Must clean up the snapshot object!
                    return result;
                }
                
                
            // Now walk the snapshot of processes, and
                
            // display information about each process in turn
                do
                {
                    
            if(stricmp(pe32.szExeFile,module)==0)
                    {
                        printf( 
            "find process:  %s\n", module );
                        result 
            = pe32.th32ProcessID;
                        
            break;
                    }
                    
                } 
            while( Process32Next( hProcessSnap, &pe32 ) );
                
                CloseHandle( hProcessSnap );
                
            return result;
            }

            int main(int argc,char *argv[])
            {
                DWORD h3pid 
            = -1;
                
                h3pid 
            =  findProcessId(MODULE_NAME);
                
            if(h3pid == -1)
                {
                    printf(
            "can't find %s in memory,please make sure the program started!\n",MODULE_NAME);
                    
            return 1;
                }

                HANDLE h3 
            = OpenProcess( PROCESS_ALL_ACCESS, FALSE, h3pid );
                
            if( h3 == NULL )
                {
                  printError( 
            "OpenProcess" );
                  
            return 1;
                }

                unsigned 
            long sideOffset=0x824994;
                unsigned 
            char side = 0xff;
                
            if(!ReadProcessMemory(h3,(LPCVOID)sideOffset,&side,1,0)) //查找我方的顏色
                {
                    printError( 
            "ReadProcessMemory" );
                    
            return 1;
                }

                
            if(side!=0xff)
                {
                    printf(
            "find current side:%d\n",(int)side);
                }
                
            else
                {
                    printf(
            "can't find current side\n");
                    side 
            = 0;
                }

                unsigned 
            long heroBaseAddress = 0x15216ab;  //hero name start
                unsigned char name[20]={0};
                unsigned 
            long temp = heroBaseAddress-1;

                
            char b[28]; //28種技能
                
            int size = sizeof(b);
                memset(b,
            3,size);
                b[
            12]=0;//不學(xué)招魂術(shù)

                
            for(int i=0;i<=155;++i) //一共156個(gè)Hero
                {
                    
            if(!ReadProcessMemory(h3,(LPCVOID)temp,name,sizeof(name),0))
                    {
                        printError( 
            "ReadProcessMemory" );
                        
            return 1;
                    }
                    
            if(name[0]==side)
                    {
                        printf(
            "find:%s\t",name+1);
                        
            if(!WriteProcessMemory(h3,(LPVOID)(temp+0xA7),b,size,0))
                        {
                            printError( 
            "WriteProcessMemory" );
                            
            return 1;
                        }
                        
            else
                        {
                            printf(
            "update skill sucess!\n");
                        }
                    }
                    temp 
            += 0x492;
                }

                CloseHandle(h3);
                
            return 0;
            }


            附加:
            讓我方英雄所有英雄學(xué)會(huì)除了招魂術(shù)的以外的27種技能的小程序

            以前英雄世界也有一個(gè)這樣的程序,但是版本太老,不能用了。

            使用版本:中文版3.1,其他版本沒(méi)有測(cè)試

            使用方法:進(jìn)入游戲后,運(yùn)行程序

            Download: http://www.shnenglu.com/Files/sandy/h3c.zip

            Feedback

            # re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器  回復(fù)  更多評(píng)論   

            2005-12-19 15:10 by 小軟
            玩游戲你也作弊,我就從沒(méi)看你寫(xiě)的工具有界面的:(

            # re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器  回復(fù)  更多評(píng)論   

            2005-12-28 14:41 by Flyingis
            有意思

            # re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器  回復(fù)  更多評(píng)論   

            2006-11-01 13:12 by zlot
            難道說(shuō)......

            # re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器  回復(fù)  更多評(píng)論   

            2006-12-10 22:53 by maber

            # re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器  回復(fù)  更多評(píng)論   

            2007-03-04 20:57 by pdd
            我也編寫(xiě)了一個(gè),但是時(shí)靈時(shí)不靈,似乎地址是變動(dòng)的。QQ:21384483

            # re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器  回復(fù)  更多評(píng)論   

            2007-08-30 10:42 by 浪子高達(dá)
            re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器 回復(fù) 更多評(píng)論
            2007-03-04 20:57 by pdd
            我也編寫(xiě)了一個(gè),但是時(shí)靈時(shí)不靈,似乎地址是變動(dòng)的。QQ:21384483

            變動(dòng)是因?yàn)橛⑿圩兞?

            QQ:527301899

            # re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器  回復(fù)  更多評(píng)論   

            2007-08-30 10:43 by 浪子高達(dá)
            那個(gè),如果有界面的話就好了~大哥...

            # re: 為英雄無(wú)敵3寫(xiě)個(gè)游戲修改器  回復(fù)  更多評(píng)論   

            2009-04-10 20:32 by MIG39CN
            你好
            哥們 我下了你的那個(gè)小程序
            怎么沒(méi)發(fā)現(xiàn)有什么變化啊?
            国产精品天天影视久久综合网| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 伊人久久精品无码av一区| 精品久久久久香蕉网| 国产精品VIDEOSSEX久久发布| 天天做夜夜做久久做狠狠| 国产激情久久久久久熟女老人 | 久久99国产精品99久久| 理论片午午伦夜理片久久| 色欲久久久天天天综合网精品 | 热RE99久久精品国产66热| 久久精品蜜芽亚洲国产AV| 久久男人AV资源网站| 国产成年无码久久久久毛片| 色偷偷91久久综合噜噜噜噜| 国产精品久久影院| 久久人妻AV中文字幕| 久久精品国产一区二区三区不卡| 亚洲国产精品无码久久久秋霞2| 国产精品美女久久久久av爽| 99热成人精品热久久669| 亚洲午夜久久久久久久久久| 久久精品国产亚洲Aⅴ香蕉 | 久久精品无码av| 97久久超碰成人精品网站| 亚洲天堂久久久| 久久人人爽人人澡人人高潮AV| 久久免费美女视频| 久久99精品久久久久婷婷| 亚洲午夜久久久影院| 天堂久久天堂AV色综合| 久久精品国产亚洲AV蜜臀色欲| 亚洲伊人久久综合影院| 日韩十八禁一区二区久久| 久久亚洲AV无码西西人体| 精品国产一区二区三区久久蜜臀| 青青草国产成人久久91网| 99久久人人爽亚洲精品美女| 99久久综合国产精品二区| 一级做a爱片久久毛片| 国产综合免费精品久久久|