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

написать 8-чный и 16-ный дамп - C++

Восстановить пароль Регистрация
 
Kartooz
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 4
16.03.2010, 19:41     написать 8-чный и 16-ный дамп #1
нам задали написать 8-ный и 16-ный дамп в С++
я просто очень плохо пока в этой теме разбираюсь, помогите плиз...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2010, 19:41     написать 8-чный и 16-ный дамп
Посмотрите здесь:

C++ Надо удалить n-ный элемент списка, при том, что он не первый и не последний
C++ C++ ный код самый удобный по компактности. Имхо.
C++ дамп бинарного файла
C++ В одномерном массиве, состоящем из n вещественных элементов, вычислить максималь-ный элемент массива
Односвязный список: уничтожить н-ный эл-т и на его место поместить эл-т, нр которого хранится в н-ном эл-те C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
16.03.2010, 19:45     написать 8-чный и 16-ный дамп #2
Подробнее.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
16.03.2010, 19:47     написать 8-чный и 16-ный дамп #3
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
и 16 -ый и 8 ый
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
16.03.2010, 19:49     написать 8-чный и 16-ный дамп #4
Я автора спрашивал.
Чё за дамп-то? Текущего процесса, стороннего процесса, какого-то определённого участка памяти?
Kartooz
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 4
16.03.2010, 20:33  [ТС]     написать 8-чный и 16-ный дамп #5
дело в том что я и сам не очень понимаю(((
смысл в том, что нужно написать программу в С++ которая будет делать этот 8/16-чный дамп

Добавлено через 4 минуты
нет 10-чного числа

Добавлено через 21 минуту
извиняюсь,что запутал, только что уточнил: правильная постановка задачи: Написать 8-ный и 16-ный дамп для целого и короткого целого числа

Добавлено через 17 минут
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
//Двоичный дамп целого числа
#include <iostream>
using namespace std;
int main()
{
    int number;
    int mask (010000000000)
    bool flag(false);
    cout << "Integer number?";
    cin >> number;
    if (cin.fail())
    {
        cout << "Invalid format!\n";
        return -1;
    }
    if (number)
    {
        if (number < 0)
        {
            flag = true;
            cout << '1';
        }
        for (int i = 0; i < 31; ++i)
        {
            if (number & mask)
            {
                flag = true;
                cout << '1';
            }
            else
                if (flag) cout << '0';
            mask >>=1;
        }
        cout << endl;
    }
    else
        cout << '0' << endl;
    return 0;
}
вот что то наподобие этого нужно сделать..
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
16.03.2010, 20:45     написать 8-чный и 16-ный дамп #6
Слушай, я ничё не понял. Если хочешь, я тебе скину прогу, в которой находится дамп участка памяти стороннего процесса.
Kartooz
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 4
16.03.2010, 20:46  [ТС]     написать 8-чный и 16-ный дамп #7
ну давай...
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
16.03.2010, 21:03     написать 8-чный и 16-ный дамп #8
Когда говорят о дампе подрвзумевают снимок памяти. Вот снимок участка памяти какого-нибудьпроцесса. Есть два исходника, кидаешь их в одну папку
Значит, так. Залезай в файл ra.cpp и в макросах прописывай две вещи:

Количество байт, которые нужно считать (например)
#define KolichestvoSchitivaemihBait 0x10

Номер байта, с которого нужно начать считывание (наприме)
#define NacalniAdres 0x71ab2e70

И имя процесса, например
char ima_protcessa[] = "ICQ.exe";

Кмпилиру, запускай и получай дамп участка памяти.
Вот исходники

ra.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
#include <windows.h>
 
#include <stdio.h>
#include "handle_processa.cpp"
 
 
 
// Вручную вводим эти два значения и имя процесса
#define KolichestvoSchitivaemihBait 0X100
#define NacalniAdres 0x401000
 
//ЗДесь пишешь имя процесса, дамп которого теьбе надо сделать
char ima_protcessa[] = "messagebox.exe";
//Внимание! Имя процесса писать безо всякого пути! Толлько messagebox.exe и не иначе! Короткое то есть имя!
 
 
int main ( ) { 
 
 int i= 0;
 int j= 0;
 
 //Ищем хэндл процесса
 HANDLE hProcess= HandleProcessa (ima_protcessa);
 if (!hProcess) {
  printf ("process ne otkrit\n");
 }
 
 /*В эту переменную будет считываться каждый байт, а потом выводиться на экран.
 Она должня быть именно не сhar, если будет сhar, тогда может вывестись вместо 90 ffffff90
 проверено уже. 
 Поскольку вряд ли всё это дело лезет в экран, можно запустить прогу в консоли, а вывод перенаправить в файл
 */
 
 unsigned char  lpBuffer ;
 
 //Вот, всё. Такой вот цикл. Выводится значение байта, а рядом- его порядковый номер. 
 for (i; i< KolichestvoSchitivaemihBait; i++) {
  ReadProcessMemory (hProcess, (void*)(NacalniAdres+ i), &lpBuffer, 1, 0  );
  
  printf ("0X%x,   %d      "   , lpBuffer, i+1  );
  if (j++== 3) {
   printf ("\n");
   j= 0;
  }
 }
 printf ("konets\n");
 
 getchar ();
 
 CloseHandle (hProcess);
}

handle_processa.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
#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, szFilename)); // ищем нужный процесс. Его PID будет в поле pe32.th32ProcessID              
 
 
 CloseHandle(hProcessSnap);
 
 //Тот самый хэрдл, который ищем
 HANDLE hProcess;
 
 
 //Функция OpenProcess возвращает дескриптор процесса, а третий принимаемый ею параметр- идентификатор процесса
 // (PID)
 
//Внимание! Не для всех процессов возвращается хэндл, если права доступа PROCESS_ALL_ACCESS
//Приходится использовать только для чтения
 hProcess = OpenProcess(PROCESS_VM_READ, 0, pe32.th32ProcessID);
 
 return hProcess;
};
#endif
...Вся эта херь работает в DEV C++, как в других IDE, не знаю

Добавлено через 7 минут
Да, кстати. дамп будет шестнадцатиричным. Насчёт восьмеричного не знаю.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2010, 21:08     написать 8-чный и 16-ный дамп
Еще ссылки по теме:

Шестнадцатеричый дамп C++
MySQL, загрузить дамп файл C++
Дамп файла C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kartooz
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 4
16.03.2010, 21:08  [ТС]     написать 8-чный и 16-ный дамп #9
спс что старался помочь, но это не то (((
Yandex
Объявления
16.03.2010, 21:08     написать 8-чный и 16-ный дамп
Ответ Создать тему
Опции темы

Текущее время: 09:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru