[CS MOD] CSO-NST Refresh Edition [2011] - A new thread

Thảo luận trong 'Counter Strike' bắt đầu bởi Orpheus, 23/6/11.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. KO8E

    KO8E T.E.T.Я.I.S

    Tham gia ngày:
    24/5/11
    Bài viết:
    669
    Nơi ở:
    L.A
    i7 của chú đâu ;))
    có người máy yếu có người máy mạnh, đa số thì thích nhiều súng là chắc r, mình cũng thích nhiều :P chẳng qua là k cần quá nhiều thôi, chứ như default của CSO NST F5 bây h ít quá, mà mình lại chả bao h mua dao hay bom cả\
    nếu dc thì dev ý tưởng của luanking kìa, cho phép tăng giảm slot mywpn từ file .ini, như thế tiện hơn
     
  2. white hat

    white hat Youtube Master Race

    Tham gia ngày:
    23/6/11
    Bài viết:
    30
    Ngồi mấy ngày cũng khai khác đc 1/100 hw.dll
    => Đây là 1 đoạn tôi ngồi decode có dính 1 chút về 512limit
    PHP:
    // hw.dll dumper (c) 2006 tabris/Niall FitzGibbon

    #include "windows.h"

    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <string>

    using namespace std;

    const 
    size_t hw_text_hdr_size 0x44;

    typedef struct
    {
        
    DWORD magic;            // 0x00
        
    DWORD num_sections;        // 0x04
        
    DWORD entry_2;            // 0x08
        
    DWORD base;                // 0x0c
        
    DWORD entry;            // 0x10
        
    DWORD iat_addr;            // 0x14
    hw_pe_hdr;

    typedef struct
    {
        
    DWORD base;                // -0x08
        
    DWORD size;                // -0x04
        
    DWORD size_on_disk;        // 0x00
        
    DWORD offset;            // 0x04
        
    DWORD u5;                // 0x08
    hw_section_hdr;

    typedef struct
    {
        
    DWORD orig_first_thunk;    // -0x0c
        
    DWORD time_stamp;        // -0x08
        
    DWORD forwarder_chain;    // -0x04
        
    DWORD dllname_addr;        // 0x00
        
    DWORD first_thunk;        // 0x04
    hw_iat_entry;

    size_t addr_to_offset(hw_pe_hdr *phwhdrsize_t addr)
    {
        
    //cout << "Trying to convert address " << addr << " to offset." << endl;
        
    hw_section_hdr *phwsec = (hw_section_hdr*)((char*)phwhdr sizeof(hw_pe_hdr));
        for(
    size_t i 0phwhdr->num_sections 1i++, phwsec++)
        {
            if(
    phwsec->base <= addr && phwsec->base phwsec->size addr)
            {
                
    //cout << "Converted address " << addr << " to offset " << (addr - phwsec->base) + phwsec->offset << " in section " << i << "." << endl;
                
    return (addr phwsec->base) + phwsec->offset;
            }
        }

        return 
    0;
    }

    int main(int argcchar **argv)
    {
        
    cout << hex;

        if(
    argc != 2)
        {
            
    cout << "Usage: " << argv[0] << " <hw.dll path>" << endl;
            return 
    0;
        }

        
    ifstream fin(argv[1], ios::binary);
        if(!
    fin)
        {
            
    cout << "Couldn't open " << argv[1] << " for input." << endl;
            return 
    0;
        }

        
    ofstream fout("hw.out"ios::binary);
        if(!
    fout)
        {
            
    cout << "Couldn't create output file hw.out" << endl;
            return 
    0;
        }

        
    fin.seekg(0ios::end);
        
    size_t fin_size fin.tellg();
        
    cout << "File size: " << fin_size << endl;
        
    fin.seekg(0ios::beg);

        
    vector<charbuf;
        
    buf.resize(fin_size);
        
    fin.read(&buf[0], (std::streamsize)buf.size());
        
    fin.close();

        
    // decode the whole file aside from the plaintext header (hl.exe .text:01401D6D)
        
    char key 0x57;
        for(
    size_t i hw_text_hdr_sizefin_sizei++)
        {
            
    buf[i] ^= key;
            
    key += buf[i] + 0x57;
        }

        
    // do some special XOR operations outside of the main loop
        // (hl.exe .text:01401DEA)
        
    *(DWORD*)&buf[hw_text_hdr_size 0x8] ^= 0x7A32BC85;
        
    // (hl.exe .text:01401E18)
        
    *(DWORD*)&buf[hw_text_hdr_size 0xc] ^= 0x49C042D1;
        
    // (hl.exe .text:01401E05)
        
    *(DWORD*)&buf[hw_text_hdr_size 0x14] ^= 0x872C3D47;

        
    // the file is now decrypted, but it isn't in the standard Windows PE format
        // dump the decrypted version to a file and continue to convert the Valve PE format to a Windows PE
        
    fout.write(&buf[0], (std::streamsize)buf.size());
        
    fout.close();
        
    fout.open("hw.pe"ios::binary);
        if(!
    fout)
        {
            
    cout << "Couldn't create output file hw.pe" << endl;
            return 
    0;
        }

        
    hw_pe_hdr *phwhdr = (hw_pe_hdr*)&buf[hw_text_hdr_size];

        
    cout << "magic: " << phwhdr->magic << endl;
        
    cout << "entry_2: " << phwhdr->entry_2 << endl;
        
    cout << "entry: " << phwhdr->entry << endl;


        
    // uncomment this to list all imports
        // (hl.exe .text:01401DFF)
        /*
        cout << "base: " << phwhdr->base << endl;
        cout << "iat_addr: " << phwhdr->iat_addr << endl;
        hw_iat_entry *phwiatentry = (hw_iat_entry*)((char*)&buf[addr_to_offset(phwhdr, phwhdr->iat_addr)]);
        while(phwiatentry->dllname_addr != 0)
        {
            char *dll_name = &buf[addr_to_offset(phwhdr, phwiatentry->dllname_addr + phwhdr->base)];
            cout << "dll_name: " << dll_name << endl;
            DWORD *pthunk = (DWORD*)&buf[addr_to_offset(phwhdr, phwiatentry->first_thunk + phwhdr->base)];
            while(*pthunk != 0)
            {
                if(*pthunk & ~0x7fffffff)
                {
                    cout << " ordinal: " << (*pthunk & 0x7fffffff) << endl;
                }
                else
                {
                    cout << " " << (char*)&buf[addr_to_offset(phwhdr, (*pthunk  + phwhdr->base + 0x2))] << endl;
                }
                pthunk++;
            }
            phwiatentry++;
        }
        */

        // create the new exports section to export the second entry point
        
    const DWORD export_addr 0x13380000;
        
    string export_func_name("valve_init");
        const 
    size_t export_string_space 512;
        
    struct
        
    {
            
    IMAGE_EXPORT_DIRECTORY ied;
            
    char dll_name[32];
            
    DWORD eat[1];
            
    DWORD ent[1];
            
    WORD ordinals[1];
            
    char names[export_string_space];
        } 
    exports_section;
        
    memset(&exports_section0sizeof(exports_section));
        
    exports_section.eat[0] = phwhdr->entry_2 phwhdr->base;
        
    exports_section.ent[0] = (DWORD)((size_t)exports_section.names - (size_t)&exports_section) + export_addr phwhdr->base;
        
    exports_section.ordinals[0] = 0;
        
    strcpy(exports_section.namesexport_func_name.c_str());
        
    strcpy(exports_section.dll_name"hw.pe");

        
    exports_section.ied.NumberOfFunctions 1;
        
    exports_section.ied.NumberOfNames 1;
        
    exports_section.ied.Base 1;
        
    exports_section.ied.AddressOfFunctions = (DWORD)((size_t)exports_section.eat - (size_t)&exports_section) + export_addr phwhdr->base;
        
    exports_section.ied.AddressOfNames = (DWORD)((size_t)exports_section.ent - (size_t)&exports_section) + export_addr phwhdr->base;
        
    exports_section.ied.AddressOfNameOrdinals = (DWORD)((size_t)exports_section.ordinals - (size_t)&exports_section) + export_addr phwhdr->base;
        
    exports_section.ied.Name = (DWORD)((size_t)exports_section.dll_name - (size_t)&exports_section) + export_addr phwhdr->base;

        
    // create the new PE header
        
    vector<charoutbuf;
        
    size_t in_hdr_size hw_text_hdr_size sizeof(hw_pe_hdr) + (phwhdr->num_sections 1) * sizeof(hw_section_hdr);
        
    size_t out_hdr_size sizeof(IMAGE_DOS_HEADER) + sizeof(IMAGE_NT_HEADERS) + (phwhdr->num_sections 2) * sizeof(IMAGE_SECTION_HEADER);
        
    size_t diff_hdr_size out_hdr_size in_hdr_size;
        
    cout << "Valve header size: " << in_hdr_size << endl;
        
    cout << "Windows PE header size: " << out_hdr_size << endl;
        
    cout << "Difference: " << diff_hdr_size << endl;
        
    outbuf.resize(out_hdr_size);

        
    IMAGE_DOS_HEADER *pdoshdr = (IMAGE_DOS_HEADER*)&outbuf[0];
        
    IMAGE_NT_HEADERS *pnthdr = (IMAGE_NT_HEADERS*)&outbuf[sizeof(IMAGE_DOS_HEADER)];
        
    IMAGE_SECTION_HEADER *psechdr = (IMAGE_SECTION_HEADER*)&outbuf[sizeof(IMAGE_DOS_HEADER) + sizeof(IMAGE_NT_HEADERS)];

        
    memset(pdoshdr0sizeof(IMAGE_DOS_HEADER));
        
    pdoshdr->e_magic IMAGE_DOS_SIGNATURE;
        
    pdoshdr->e_lfanew sizeof(IMAGE_DOS_HEADER);

        
    memset(pnthdr0sizeof(IMAGE_NT_HEADERS));
        
    pnthdr->Signature IMAGE_NT_SIGNATURE;
        
    pnthdr->FileHeader.Machine IMAGE_FILE_MACHINE_I386;
        
    pnthdr->FileHeader.NumberOfSections = (WORD)(phwhdr->num_sections 2);
        
    pnthdr->FileHeader.SizeOfOptionalHeader sizeof(IMAGE_OPTIONAL_HEADER);
        
    pnthdr->FileHeader.Characteristics IMAGE_FILE_DLL IMAGE_FILE_32BIT_MACHINE IMAGE_FILE_LOCAL_SYMS_STRIPPED IMAGE_FILE_LINE_NUMS_STRIPPED IMAGE_FILE_RELOCS_STRIPPED;
        
        
    pnthdr->OptionalHeader.AddressOfEntryPoint phwhdr->entry phwhdr->base;
        
    pnthdr->OptionalHeader.Magic IMAGE_NT_OPTIONAL_HDR32_MAGIC;
        
    pnthdr->OptionalHeader.ImageBase phwhdr->base;
        
    pnthdr->OptionalHeader.SizeOfHeaders = (DWORD)out_hdr_size;
        
    pnthdr->OptionalHeader.FileAlignment 0x1;
        
    pnthdr->OptionalHeader.SectionAlignment 0x1;
        
    pnthdr->OptionalHeader.NumberOfRvaAndSizes 0x02;

        
    pnthdr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress phwhdr->iat_addr phwhdr->base;
        
    pnthdr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress export_addr phwhdr->base;

        
    // transfer the section information
        // (hl.exe .text:01401D88)
        
    hw_section_hdr *phwsec = (hw_section_hdr*)((char*)phwhdr sizeof(hw_pe_hdr));
        for(
    size_t i 0phwhdr->num_sections 1i++, phwsec++, psechdr++)
        {
            
    memset(psechdr0sizeof(IMAGE_SECTION_HEADER));
            
    _snprintf_s((char*)psechdr->NameIMAGE_SIZEOF_SHORT_NAME_TRUNCATE".valve%d"i);
            
    psechdr->VirtualAddress phwsec->base phwhdr->base;
            
    psechdr->Misc.VirtualSize phwsec->size;
            
    psechdr->PointerToRawData phwsec->offset diff_hdr_size sizeof(exports_section);
            
    psechdr->SizeOfRawData phwsec->size_on_disk;
        }

        
    // now add a section for export data
        
    strcpy((char*)psechdr->Name".export");
        
    psechdr->VirtualAddress export_addr phwhdr->base;
        
    psechdr->Misc.VirtualSize 0x1000;
        
    psechdr->PointerToRawData = (DWORD)out_hdr_size;        // right after our new header
        
    psechdr->SizeOfRawData sizeof(exports_section);

        
    // append our export section to the ned of the header
        
    for(char *= (char*)&exports_section< ((char*)&exports_section) + sizeof(exports_section); p++)
        {
            
    outbuf.push_back(*p);
        }

        
    // now copy the rest of the input file over (do this last in case it gets moved during reallocation)
        
    outbuf.insert(outbuf.end(), buf.begin() + in_hdr_sizebuf.end());

        
    // write the new PE file to disk
        
    fout.write(&outbuf[0], (std::streamsize)outbuf.size());
        
    fout.close();

        return 
    0;
    }
     
  3. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Về vụ 512 limit thì ông thử coi ở file mp.dll ấy, dùng ollydbg find cái Host_Error gì đấy liên quan đến 512 limit rồi patch lại chỗ đó là xong\m/
     
  4. MrKaii

    MrKaii The Warrior of Light

    Tham gia ngày:
    14/6/11
    Bài viết:
    2,208
    Nơi ở:
    Hà Nội
    Dễ vậy thôi à ;)) LÊ Minh vs valve bỏ cả năm trời chả lẽ dễ crack vậy sao ;)) break đc mp thế còn các thư việc khác thì vứt đi đâu ;)) mà hw mới là đầu não của cs nó bao gồm các fun điều khiển cstrike vs valve. Nếu muốn break 512limit tôi sợ phải xây lại client trong valve vs cstrike nữa đó. Vấn đề đặt ra ở đây là chưa biết xây dựng bài toán ntn để có thể tăng lên 2048 cache và path các thư viện nào để có thể rebuild lại
    Ps: ollydbg cũng khá hay nhưng tôi chưa nắm bắt đc hết sức mạnh của nó <= app này chỉ dùng để phân tích các dãy số nhị phân, thập phân vs các fun api, tìm hiểu về nó hình như app này chỉ để crack các app khác tra serial thôi chứ cũng chưa thấy đc cái tác dụng phụ gì cả :-< chắc cũng là do trình độ của mình cũng còi quá nên chưa biết use ntn :-<
     
  5. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Vừa dùng odbg phá ra, tìm ra đc cái Host_Error trong hw.dll rồi nhưng nó prefix nên chắc phải đặt breakpoint mới ra đc là cái nào tác động đến 512.
     
  6. MrKaii

    MrKaii The Warrior of Light

    Tham gia ngày:
    14/6/11
    Bài viết:
    2,208
    Nơi ở:
    Hà Nội
    Ai có ý tưởng nào để rebuild 2048cache thì post code lên đây nhé [​IMG]
     
  7. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Ông có cái map nào nó đạt quá 512 ko, tôi lấy về thử patch lại file hw.dll xem sao.
     
  8. MrKaii

    MrKaii The Warrior of Light

    Tham gia ngày:
    14/6/11
    Bài viết:
    2,208
    Nơi ở:
    Hà Nội
    Đầy 2 cái map zm mới đó
    1) zm_rest.bsp
    2) zm_requiem.bsp
    Mấy cái map zs cũng có một số map >512 đó (ko tính mấy map có fun đặc biệt dùng để đi bàn)
    --------------
    cái map zm_requiem , tôi đã tối ưu fun vs model rồi đấy http://www.mediafire.com/?e8qm5l36t8jp8jd đợt tới ai đóng pack thì cho map này vô
    map rest thì rộng quá chưa biết tối ưu như nào thôi cứ tạm gác đó đã
     
  9. okonomoney

    okonomoney Youtube Master Race

    Tham gia ngày:
    10/9/11
    Bài viết:
    22

    bác đừng nói vậy, tui bị ức chế, lần nữa là tui ko nhịn nữa đâu, bỏ đi nhá, chỉ là góp ý thôi mà, chứ ai kêu các bác bắt buộcbác làm giống như thế ko, rõ muốn gây sự à, tui nhịn cái bõ CS này mấy lần rùi, tại vì muốn hoà thuận nên mới làm ngơ đi đấy, đừng khiến tui phải gây mất đoàn kết. Quả thật là lời đồn về Game VN là đúng
     
  10. white hat

    white hat Youtube Master Race

    Tham gia ngày:
    23/6/11
    Bài viết:
    30
    Các bác trong box thì thấy sao 8-x

    Riêng em thì em B]Em xin NO COMMENT[/B]
     
  11. Giazzrian

    Giazzrian C O N T R A

    Tham gia ngày:
    6/1/11
    Bài viết:
    1,880
    Nơi ở:
    BMT/HCM
    Các bác vote ban em này, ko chịu đc thì lượn sang chỗ khác mà chơi :|. thiếu cậu bọn này còn vui hơn ấy.

    @KFC: có nên Unlock súng gold = mission ko >:)
     
  12. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Làm cái C-Box + đúc súng coi;))
     
  13. Giazzrian

    Giazzrian C O N T R A

    Tham gia ngày:
    6/1/11
    Bài viết:
    1,880
    Nơi ở:
    BMT/HCM
    mi có chịu code đâu ta làm làm j cho phí công :|

    nếu làm thì chắc ai có cái nick c-box thì teamview cho mình nghía phát :))
     
  14. -Wesker-

    -Wesker- Dragon Quest

    Tham gia ngày:
    16/7/10
    Bài viết:
    1,354
    Nơi ở:
    S.V.E.N TEAM
    Vụ 512 limit ấy, bên AM từng bàn chán rồi, bằng cách dùng module... nhưng chỉ được trên Linux mà thôi ( thế nhưng còn nhiều lỗi ), còn trên window thì fail rồi... Sau đó ông Arkshine bảo rằng giờ chỉ có hy vọng Valve share source của GoldScr thì may ra được.

    @money: Vâng, đến cái GameVn này phải dùng não trước khi post đấy..... chắc chú từ VNZ sang chứ gì ? .
     
    Chỉnh sửa cuối: 28/9/11
  15. Giazzrian

    Giazzrian C O N T R A

    Tham gia ngày:
    6/1/11
    Bài viết:
    1,880
    Nơi ở:
    BMT/HCM
    ^ để oko coi chừng ... =))

    @KFC onl yh đi, ta bàn vụ quay súng phát >:)
     
  16. Orpheus

    Orpheus ♥ ♡ ToMaTo TasTe Kiss ♡ ♥ Moderator

    Tham gia ngày:
    30/3/09
    Bài viết:
    4,066
    Nơi ở:
    Kingdom Hearts
    [​IMG]
    lời đồn gì? ~
    không muốn ở gamevn thì xin mời cứ đi tự nhiên, không ai bắt buộc phải tham gia~
     
  17. okonomoney

    okonomoney Youtube Master Race

    Tham gia ngày:
    10/9/11
    Bài viết:
    22
    thôi, bỏ qua đi, tui cảm thấy 4rum mình nhiều pro, nhưng mà chảnh quá, nên mới nói thế, chỉ có vậy thôi
     
  18. Giazzrian

    Giazzrian C O N T R A

    Tham gia ngày:
    6/1/11
    Bài viết:
    1,880
    Nơi ở:
    BMT/HCM
    cách đây gần chục page cậu cũng nói lên nói sướng xong rồi cũng xin lỗi thế này mà có rút ra đc cái j đâu ?. hay cần sếp rút thẻ ra giúp :))

    @KFC: exp chắc đc chứ 8-|
     
  19. theanh11a5

    theanh11a5 - NOW ON - Moderator

    Tham gia ngày:
    8/10/09
    Bài viết:
    5,126
    Uh cũng đúng,nhưng với cái kiểu post với khổ chứ to quá + để bold thế này cũng đáng phạt lắm.
    Toàn nói cho sướng miệng,đúng như bác Okokoloko nói,cậu ko ưa gì box CS này thì mời cậu lại nhà thôi.
     
  20. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    EXP ko khó nhưng mi phải làm hệ thống tính EXP đi8-|
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này