Форум программистов, компьютерный форум CyberForum.ru

Не работает поиск сигнатуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему выдает ошибку в строке "for(Data::iterator p=stats.begin(); p!=stats.end(); ++p)" http://www.cyberforum.ru/cpp-beginners/thread520457.html
"Read a sequence of possibly whitespaceseparated (name,value) pairs, where the name is a single whitespaceseparated word and the value is an integer or a floatingpoint value. Compute and print the sum and mean for each name and the sum and mean for all names." Нашел решебник, там решение))) #include <iostream> #include <map> #include <string> struct Stat {
C++ Можете скомпилировать и сказать работает ли? Не хочу качать компилятор для 4-5 заданий, точнее занимали бы они меньше места как, например, Dev-CPP для С. Можете скомпилировать данный код и сказать работает он вообще или нет? Если нет то какие сообщения выдает. #include <iostream.h> #include <string.h> #include <cstring.h> #include <conio.h> class OverflowException { public: OverflowException() { http://www.cyberforum.ru/cpp-beginners/thread520443.html
Написать программу удаления букв «б» из введенного слова C++
Написать программу удаления букв «б» из введенного слова
C++ Найти наибольшую клику в заданном орграфе, используя алгоритм нахождения независимых множеств
Клика – полный подграф неориентированного графа. Другими словами, клика графа есть подмножество его вершин, такое, что между каждой парой вершин этого подмножества существует ребро и, кроме того, это подмножество не принадлежит никакому большому подмножеству с тем же свойством. Подграф графа — граф, содержащий некое подмножество вершин данного графа и некое подмножество инцидентных им рёбер. ...
C++ не компилируется http://www.cyberforum.ru/cpp-beginners/thread520424.html
Вот кусок кода class Game; class View { private: static int left;
C++ Компилятор выдает ошибку при объявлении массива. Не могу понять где соль Объясните пожалуйста в чем моя ошибка. Вот исходник #include <iostream> // cin, cout,endl #include <math.h> // Мат функции #include <iomanip> // формат вывода using namespace std; const int n=2; //Кол-во строк const int m=7; //Кол-во столбцов подробнее

Показать сообщение отдельно
Битл
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 65
17.03.2012, 15:59  [ТС]     Не работает поиск сигнатуры
Цитата Сообщение от kravam Посмотреть сообщение
Так, находждишь адрес, а ПРОГРАММНО ищешь эту сигнатуру в совсем другом процессе, Timerocketxby.exe, где её нет! Может так быть?

Вот я блин даю... Ты прав, я аттачился к stdrt.exe Мне стыдно, что сам до этого не допер... Блин... Но всеравно, в этом случае должно было выдаться сообщение, что "Искомой сигнатуры нет", а оно постоянно лепит первый адрес.

Добавлено через 6 минут
Сейчас сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>* 
#include <windows.h>
#include <iomanip>
using namespace std;
 
bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
        for(;*szMask;++szMask,++pData,++bMask)
                if(*szMask=='x' && *pData!=*bMask )
                        return false;
        return (*szMask) == NULL;
}
 
DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen, BYTE *bMask, char * szMask) {
        for(DWORD i=0;i<dwLen;i++)
                if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
                        return (DWORD)(dwAddress+i);
        return NULL;
}
 
int main ()
{ ::setlocale(LC_ALL,"");
   
    DWORD MyAddress = NULL; // Адрес сигнатуры
    
    HWND hWnd = FindWindowA(0,"Timerocketxby");
 
    if (hWnd == 0) {
        cerr << "Запустите Timerocketxby" << endl;
    }else {
            cerr << "процесс найден" << endl;
            DWORD pId;
            GetWindowThreadProcessId(hWnd, &pId);
            HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, pId);
 
            if (!hProc){
            cerr << "не могу открыть процесс" << endl;
            }else{
                                    
                    bool findOffsets();{
        
                        DWORD start = 0x01287A52; //начало сканирования
                        DWORD dwLen = 0x01287F62 - start;   //  Длина модуля сканирования
                        cerr << "Длина модуля = " <<dwLen << endl;
                        MyAddress = dwFindPattern(start, dwLen, (BYTE*)"\x89\xBE", "xx"); //ищем адрес по маске
                        cout << "Значение MyAddress = " << hex << MyAddress << endl;
                         if (MyAddress == -1){
                            clog << "Искомой сигнатуры нет" << endl;
                            
                        }else{
                            cerr << "Адрес найден" << endl;
                        }
 
                    }
 
                
                CloseHandle(hProc);
            }
        }
        
    system("pause");
 
    return 0;
}
Аттачусь уже правильно, я думаю. Длину сигнатуры сократил до 2 байт, но результат тот же - код не работает...

ЗЫ Спасибо большое за примеры... Они мне пригодятся!
 
Текущее время: 13:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru