Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,598
Записей в блоге: 12
#1

статья Рихтера - C++

31.05.2012, 17:54. Просмотров 503. Ответов 0
Метки нет (Все метки)

http://wm-help.net/books-online/print-page/59464/59464-16.html
это 22 глава книге Рихтера
раздел Перехват API-вызовов с использованием раздела импорта
в тексте я наткнулся вот на это
PROC pfnOrig = GctProcAddress(GetModuleHandle("Kernel32"), "ExitProcess");
HMODULE hmodCaller = GetModuleHandle("DataBase.exe");

void RoplaceIATEntryInOrioMod(
"Kernel32.dll", // модуль, содержащий ANSI-функцию
pfnOrig, // адрес исходной функции в вызываемой DLL
MyExitProcess, // адрес заменяющей функции
hmodCaller); // описатель модули, из которого надо вызывать новую функци

функция GetModuleHandle возвращает базу dll или exe файла которая ЗАГРУЖЕНА в виртуальное пространство текущего процесса а как быть если процесс чужой ?

Добавлено через 9 минут
прокатит ли такой способ?
процесс А inject
процесс B test
запускается процесс А, грузит длл с функциями перехватчиками в пространство выше двух гигов, потом процесс А мэпирует файл test в память ,изменяет его таблицу импорта на мои функции которые находятся в загруженной dll. есть одно но в таблице импорта находятся адреса смещения от базы или RVA адреса.
МОДЕРАТОРЫ прошу сделать эту тему доступной для asm кодеров

Добавлено через 7 минут
почему этот код не сработал ?
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
//---------------------------------------------------------------------------
#include "windows.h"
#include "Imagehlp.h"
#include <iostream>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
#define MAXMODULE 50
using namespace std;
typedef HANDLE  (WINAPI*cfunc)(HWND hWnd,
    LPCTSTR lpText,
    LPCTSTR lpCaption,
    UINT uType);
cfunc MyMess;
 
void ReplaceIATEntryInOneMod(PCSTR pszCalleeModName, PROC pfnCurrent, PROC pfnNew, HMODULE hmodCaller)
{
 
ULONG ulSize;
 
PIMAGE_IMPORT_DESCRIPTOR pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR) ImageDirectoryEntryToData(hmodCaller, TRUE,IMAGE_DIRECTORY_ENTRY_IMPORT, &ulSize);
 
if (pImportDesc == NULL)
        return;
 
for (; pImportDesc->Name; pImportDesc++)
{
        PSTR pszModName =  (PSTR)((PBYTE) hmodCaller + pImportDesc->Name);
        if (lstrcmpiA(pszModName, pszCalleeModName) == 0)
                break;
}
 
if (pImportDesc->Name == 0)
        return;
 
PIMAGE_THUNK_DATA pThunk = (PIMAGE_THUNK_DATA) ((PBYTE) hmodCaller + pImportDesc->FirstThunk);
 
 
for (; pThunk->u1.Function; pThunk++)
{
 
        PROC* ppfn = (PROC*) &pThunk->u1.Function;
        BOOL fFound = (*ppfn == pfnCurrent);
        if (fFound)
        {
                WriteProcessMemory(GetCurrentProcess(), ppfn, &pfnNew, sizeof(pfnNew), NULL );
                return;
        }
 
}
 
 
}
 
int MyMessageBox(
    HWND hWnd,
    LPCTSTR lpText,
    LPCTSTR lpCaption,
    UINT uType
)
{
 MessageBox(0,"123","123",0) ;
 return 0;
}
 
int main(int argc, char* argv[])
{
       int err;
       char mod[MAXMODULE];
       PROC pfnOrig = GetProcAddress(GetModuleHandle("KERNEL32.DLL"), "CloseHandle");
       HMODULE hmodCaller = GetModuleHandle("Test_for_inject_dll.exe");
       cout <<hex <<pfnOrig <<dec <<endl <<hmodCaller <<endl;
       PROC m;
       (void*)m=MyMessageBox;
       ReplaceIATEntryInOneMod("KERNEL32.DLL", pfnOrig,m,hmodCaller);
      // MessageBox(0,"123","123",0) ;
        CloseHandle(0);
        system("Pause");
        return  0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 17:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос статья Рихтера (C++):

Вывод характеристики землетрясения по шкале Рихтера - C++
Напишите программу для вывода характеристики землетрясения по шкале Рихтера, используя следующую таблицу решений Баллы Характеристика n...

На сколько правдива статья о С++ на луркморе? - C++
сабж ясен из заголовка

Статья о создании и использовании DLL - C++
Ребят плз подкиньте доку о создании DLL на VC++. и если кто знает линк, конвертации C++ DLL в декларацию для VB. Митаюсь между языками...

Статья на rsdn, перехват API-функций - C++
Разбираю статью на рсдн, а именно Метод 1. Перехват API непосредственной записью в код системной функции. dll вроде скомпилировал, дошел...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

.NET 4.x Насколько актуальна книга Рихтера - C#
Есть книга CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. Считается, что это то же самое, что книга...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2012, 17:54
Привет! Вот еще темы с ответами:

Ошибка в примере из книги Рихтера - C++ WinAPI
Пытаясь просмотреть пример из книги Рихтера windows для профессионалом, столкнулся с проблемным участком кода: INT_PTR WINAPI...

Перехват TerminateProcess по примеру Рихтера. Не работает - C++ WinAPI
Очень надо реализовать неубиваемую программу. Переделал код Рихтера под TerminateProcess. dll должна менять адрес оригинальной функции на...

Большая ли разница для новичка в книгах Рихтера (CLR via c#).Net 2.0 и 4.5? - C#
Есть книга у знакомого (Рихтер Дж. Clr via c# .Нет фрэймворк 2.0) , но не будет ли мне сложно потом с .Нет-ом 4.5? Правда, я знаю чем...

Статья - Механика
Здравствуйте люди добрые, помогите пожалуйста, найти следующий статьи очень нужно. Я.Б.Зельдович, Д.А.Франк-Каменецкий, ЖФХ, 12, 100...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.