Форум программистов, компьютерный форум 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; //Кол-во столбцов подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
17.03.2012, 21:35     Не работает поиск сигнатуры
MSVS 2008, создал пустой проект CLR. там два файла main.cpp и handle_processa.h такого содержания:


main.cpp
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// ra.ccp
#include <windows.h>
#include <conio.h> 
 
#include <stdio.h>
#include "handle_processa.h"
 
int main ( ) { 
 
 char ima_protcessa [MAX_PATH];
 
 
 //Русский язык
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 //
 
 
 unsigned char sposob_nah_adresov;
 
 
 
 
 
 
 //Первое, что сделааем, это введём имя процесса, который будем перегонять в строку:
 //Ввод имени файла:
 printf ("Вводи имя процесса\n");
 if (!gets_s (ima_protcessa)) {
  printf ("проблема с водом имени процесса\n");
  system ("pause");
  return 0;   
 };       
 
 
 
 long int NacalniAdres;
 printf ("Вводи адрес, с которого надо дампировать\n");
 scanf_s ("%x", &NacalniAdres);
 
 
 
 printf ("Если ты знаешь размер дампируемого участка, нажми 1, если знаешь номер \
  конечного байта, нажми 2\n");
 printf ("1         Знаешь размер дампируемого участка\n\
  2        знаешь размер конечного байта\n");
 do {
  sposob_nah_adresov= _getch ();
 }
 while (sposob_nah_adresov!= '1' && sposob_nah_adresov!= '2');
 
 
 long int KolichestvoSchitivaemihBait; 
 long int nomer_konechnogo_baita; 
 if (sposob_nah_adresov== '2') {
  printf ("Вводи номер конечного байта\n");
  scanf_s ("%x", &nomer_konechnogo_baita);
  KolichestvoSchitivaemihBait= nomer_konechnogo_baita- NacalniAdres+ 1;
 }
 else {
  printf ("Вводи количество дампируемых байтов\n");
  scanf_s ("%x", &KolichestvoSchitivaemihBait);
 }
 
 
 
 
 
 int i, j;
 
 //Ищем хэндл процесса
 HANDLE hProcess= HandleProcessa (ima_protcessa);
 if (!hProcess) {
  printf ("хэндл процесса %s не найден\n", ima_protcessa);
  system ("pause");
  return 0;
 }
 
 /*В эту переменную будет считываться каждый байт, а потом выводиться в файл rez.txt
 Она должня быть именно не сhar, если будет сhar, тогда может вывестись вместо 90 ffffff90
 проверено уже. 
 */
 
 unsigned char  lpBuffer ;
 
 FILE* f_txt;
 FILE* f;
 
 fopen_s (&f_txt, "rez.txt","wb");
 fopen_s (&f,"rez","wb");
 if (!f_txt) {
  printf ("File-rezultat txt ne sozdan\n");
  system ("pause");
  return 0;
 } 
 if (!f) {
  printf ("File-rezultat ne sozdan\n");
  system ("pause");
  return 0;
 } 
 
 //Вот, всё. Такой вот цикл. Выводится значение байта, а рядом- его порядковый номер. 
 //Запишем всё это дело в файл rez.txt
 j= 0;
 for (i= 0; i< KolichestvoSchitivaemihBait; i++) {
  ReadProcessMemory (hProcess, (void*)(NacalniAdres+ i), &lpBuffer, 1, 0  );
  fprintf (f_txt, "0X%-0.2x,%c", lpBuffer, ' ');
  fputc (lpBuffer, f);
  if (j++== 3) {
   putc (10, f_txt);
   j= 0;
  }
 }
 
 
 CloseHandle (hProcess);
 fclose (f_txt);
 fclose (f);
 return 0;
}

handle_processa.h
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
// handle_processa.cpp
#ifndef uslovni_fail
#define uslovni_fail
 
 
 
#include <stdio.h> 
#include <Windows.h> 
#include <Winnt.h> 
//Здесь определена структура PROCESSENTRY32 и функция CreateToolhelp32Snapshot
#include <tlhelp32.h>
//int main ();
HANDLE HandleProcessa (char* szFilename) {
 
 HANDLE hProcessSnap;
 PROCESSENTRY32 pe32;
 
 //Это мы находим дескриптор снимка процессов
 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
 if (hProcessSnap == INVALID_HANDLE_VALUE)
 return false;
 pe32.dwSize = sizeof(PROCESSENTRY32);
 
 
 do {
  if (!Process32Next(hProcessSnap, &pe32)) // перечисляем процессы
  return FALSE;
 }
 while (lstrcmpi(pe32.szExeFile, (LPCTSTR) szFilename)); // ищем нужный процесс. Его PID будет в поле pe32.th32ProcessID              
 
 
 CloseHandle(hProcessSnap);
 
 //Тот самый хэрдл, который ищем
 HANDLE hProcess;
 
 
 //Функция OpenProcess возвращает дескриптор процесса, а третий принимаемый ею параметр- идентификатор процесса
 // (PID)
 
//Внимание! Не для всех процессов возвращается хэндл, если права доступа PROCESS_ALL_ACCESS
//Приходится использовать только для чтения
 hProcess = OpenProcess(PROCESS_VM_READ, 0, pe32.th32ProcessID);
 
 return hProcess;
};
#endif


Там кое что подправил, убрал некоторые понты (типа заголовка окна, с котроым не хотелось возиться).
А что не понравилось- что MSVS выдумывает свои функции и заставляет использовать их вместо стандартных, я говою об fopen_s вместо fopen, scanf_s вместо scanf и прочая. То есть стандартные вроде как использовать не воспрещается, но либо любуйся предупреждениями, либо используй специальный ключ компилятора, чтобы их не видеть. Куда ключ писать тоже вопрос. Короче я забил, позаменял имена функций на предлагшаемые. Компилить: "построить решение"; в общем делай. В общем MSVS факт не для консоли, для консоли Dev-Cpp
 
Текущее время: 06:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru