Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 16
  1. #1
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0

    source dll chống chương trình Cheat engine 5.5 và speed gear 6, giúp mình sửa lỗi?

    antihack.cpp

    Mã:
    #include "stdafx.h"#include "Antihack.h"#include <tlhelp32.h>#include <windows.h>#include <stdlib.h>  #ifdef _MANAGED#pragma managed(push, off)#endif ANITHACK_PROCDUMP g_ProcessesDumps[MAX_PROCESS_DUMP] = {                                         {0x606140, {0x8C, 0x79, 0x60, 0x00, 0xE0, 0xA8, 0x60, 0x00, 0x18, 0x70, 0x4D, 0x00, 0xE8, 0x18, 0x60, 0x00, 0x8C, 0xA0, 0x60, 0x00, 0xDC, 0x9C, 0x60, 0x00, 0x3C, 0x86, 0x60, 0x00, 0xD0, 0x9D, 0x60, 0x00}},  // Cheat Engine 5.5                                          {0x568F0C, {0xEB, 0x17, 0x86, 0xF4, 0x24, 0x55, 0xC0, 0xAE, 0x98, 0xC8, 0xB2, 0xC4, 0x57, 0x31, 0x4F, 0x2E, 0x4D, 0x27, 0xC1, 0x63, 0xBE, 0x41, 0xBC, 0x37, 0xDE, 0xE5, 0x31, 0x51, 0xAF, 0x21, 0x34, 0x7B}}, // Speed Gear 6                                          }; void SystemProcessesScan() {    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);    if(hProcessSnap != INVALID_HANDLE_VALUE)    {        PROCESSENTRY32 pe32;        pe32.dwSize = sizeof(PROCESSENTRY32);         if(Process32First(hProcessSnap, &pe32))        {            do            {                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);                if(hProcess != NULL)                {                    if(ScanProcessMemory(hProcess))                    {                        MessageBoxA(0, "Found hack software in your system.
    
    Hint: Close all illegal programs and run application again.", "Software guard", MB_OK | MB_ICONSTOP);                        ExitProcess(0);                    }                }            }            while(Process32Next(hProcessSnap, &pe32));        }    }     CloseHandle(hProcessSnap);} bool ScanProcessMemory(HANDLE hProcess) {    for(int i = 0; i < MAX_PROCESS_DUMP; i++)    {        char aTmpBuffer[MAX_DUMP_SIZE];        SIZE_T aBytesRead = 0;        ReadProcessMemory(hProcess, (LPCVOID)g_ProcessesDumps[i].m_aOffset, (LPVOID)aTmpBuffer, sizeof(aTmpBuffer), &aBytesRead);         if(memcmp(aTmpBuffer, g_ProcessesDumps[i].m_aMemDump, MAX_DUMP_SIZE) == 0)        {            return true;            break;        }    }     return false;} BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {    return TRUE;} #ifdef _MANAGED#pragma managed(pop)#endif
    antihack.h
    Mã:
    #ifndef ANTIHACK_ANTIHACK_H
    #define ANTIHACK_ANTIHACK_H
    
    #define MAX_DUMP_OFFSETS 47
    #define MAX_DUMP_SIZE 32
    #define MAX_PROCESS_DUMP 47
    
    typedef struct ANITHACK_PROCDUMP {
    	unsigned int m_aOffset;
    	unsigned char m_aMemDump[MAX_DUMP_SIZE];
    } *PANITHACK_PROCDUMP;
    
    extern ANITHACK_PROCDUMP g_ProcessesDumps[MAX_PROCESS_DUMP];
    
    void SystemProcessesScan();
    bool ScanProcessMemory(HANDLE hProcess);
    
    
    #endif //ANTIHACK_ANTIHACK_H
    đây là source dll chống chương trình Cheat engine 5.5 và speed gear 6. người ta share trên mạng để nghiên cứu em cũng làm theo nhưng không hiểu sao
    "Khi bật chương trình hack speed trước thì nó nhận ra"
    "Vào game rồi mới bật hack thì nó lại không nhận ra được"
    nhờ mấy anh hướng dẫn dùm phải thêm hoặc sửa thế nào để nó có thể chạy cùng với chương trình liên tục với
    em chỉ làm theo hướng dẩn thôi nên còn non lắm

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    uhm đúng như anh nói em cần kiểm tra định kỳ khoảng 60 giây 1 lần.
    file dll nhẹ mà load cái vèo là xong nên ko đáng lo.
    em add hàm void MainThread() cho nó chạy lại SystemProcessesScan() mà không chạy không hiểu sai thế nào .
    ai rành add dùm em với

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ai rành giúp em với

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    File dll dĩ nhiên là rất nhẹ. Cái "nặng" mà mình nói chính là chi phí đề thực hiện hàm SystemProcessesScan(), trong đó ReadProcessMemory là mất nhiều thời gian nhất. Hơn nữa cheater có thể qua mặt rất dễ dàng, cho dù có cố công kiểm tra.

    Thread phải chạy liên lục mới kiểm tra được. Có thể bạn gọi một lần rồi thôi nên thread dừng mất rồi.


    Mã:
    DWORD ThreadProc(LPVOID param){    int i = 0;    while (true)    {        Sleep(1000);        i++;        if (i >= 60)        {            SystemProcessesScan() ;            i = 0;        }    }}

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Sao thiếu file antihack.h nhỉ ? Theo mình nghĩ thì cách này chỉ dùng để kiểm tra định kỳ thôi, chứ kiểm tra liên tục thì khỏi chơi game luôn vì mất nhiều thời gian. Chưa kể nếu chương trình cheat nào "lấy độc trị độc", dùng dll này để anti-anti-cheat thì cách kiểm tra trên cũng bó tay.

  6. #6
    Mình nghĩ việc bạn cố tìm cách nhận dạng cheat engine rất hao tốn tài nguyên máy và không hiệu quả. Cũng có nhiều cách khác chống cheat, không nhất thiết phải nhận dạng cheat engine.

    Ví dụ như ta có biến HP ( từ 0->10000), giá trị hiện thời của nó là 8000, thì bạn làm như sau :
    HP = 5000 - 8000 = -3000;
    Như vậy, giá trị thực sự trong bộ nhớ là -3000. Các cheat engine sẽ cố gắng tìm số 8000 và chắc chắn sẽ không tìm chính xác.
    Khi ta cần biết HP, ta tính ngược ra :
    HP = 5000 - (-3000)
    Rất đơn giản mà lại rất hiệu quả đó bạn.

    Ngoài ra còn có một số kỹ thuật khác như "vùng nhớ ma", tức là tạo ra nhiều ô nhớ có địa chỉ khác nhau cùng lưu một giá trị, như thật ra khi dùng ta chỉ dùng một ô nhớ trong số đó mà thôi. Có thể Cheater sẽ tìm ra nhưng họ sẽ bị bối rối vì thấy có quá nhiều kết quả.

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    hix không hiểu sao em compile lại không được chắc chỉnh sửa tùm lum trong config của visual c++.em dùng tạm cách khác.
    em hook 1 dll có tính năng tương tự như gameguard vào trước dll của em trong file thực thi.dll đó có tính năng chạy nền load liên tục kéo theo cái dll của em cũng chạy theo luôn.hix cách này nặng máy hơn >_< (mà không sao máy game thủ bị chứ không phải máy mình) :P

  8. #8
    Sao mình build ra nó bị lỗi vậy ~.~. Mình xài C++ 2008

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    vùng nhớ ma j đi chăng nữa thì qua nhiều lần lọc thì vẫn tìm ra...

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi slowlove
    vùng nhớ ma j đi chăng nữa thì qua nhiều lần lọc thì vẫn tìm ra...
    Ví dụ mình tạo ra 100 biến ma, lúc nào cũng giống giá trị nhau, cập nhật giá trị như nhau. Nếu bạn là người sử dụng cheater, bạn có dám add hết 100 kết quả vào freeze không ? Lọc nhiều lần cũng vẫn thế vì lúc nào giá trị của tụi nó cũng giống nhau cả thôi. Tuy nhiên cách này là hạ sách vì vẫn tốn chi phí ghi biến ma. Cách phía trên có phần nhẹ nhàng hơn.

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •