Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

28.02.2009, 22:58
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Есть файл trigraph.exe, Builder'овский. Так вот все PE-редакторы/вьюверы сообщают, что это не PE-файл. Проверьте плиз кто-нить этот файл, чем он отличается от других.
З.Ы. я у всех файлов проверяю IMAGE_DOS_SIGNATURE и IMAGE_NT_SIGNATURE.
З.З.Ы. файл чист, вот отчет:
http://www.virustotal.com/ru/analisis/775ac9fb279c878b8c6dc4e60b381a57
|
|
|

28.02.2009, 23:29
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
IMAGE_NT_SIGNATURE отсутствует )
Последний раз редактировалось 0x0c0de; 28.02.2009 в 23:35..
|
|
|

01.03.2009, 00:39
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Сделал проверку таким вот образом:
Код:
if(PEh->Signature != IMAGE_NT_SIGNATURE)
return;
получаю экзепшн...
З.Ы. магнитные бури что-ли сегодня...голова не пашет =\
|
|
|

01.03.2009, 08:04
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
поместите свой код в try-блок или проверяйте не выходит ли за границы выделенной под проекцию области памяти значение (смещение предположительного pe-заголовка+4+адрес начала проекции). Здесь как раз выход за границы имеет место быть (смотрела в файле trigraph.exe).
00005000 - выделено под проекцию
00010000 - смещение предполагаемого pe-заголовка
Последний раз редактировалось 0x0c0de; 01.03.2009 в 09:21..
|
|
|

01.03.2009, 10:34
|
|
Познающий
Регистрация: 24.02.2006
Сообщений: 34
Провел на форуме: 136883
Репутация:
50
|
|
Репутация: Специалист (1/104) ±
побороть это пока не удалось...
P.S. пытался через OpenFileMapping:
Сталобыть нахрен вообще репутация нужна... ппц... Специалисты.
|
|
|

01.03.2009, 12:18
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
0x0c0de, спасибо. Все работает 
P.S. 2 x0man, я сюда не из-за плюсиков/звездочек пришел. Они мне вобще "параллельны" =)
|
|
|

01.03.2009, 12:50
|
|
Познающий
Регистрация: 24.02.2006
Сообщений: 34
Провел на форуме: 136883
Репутация:
50
|
|
Вы смысла моих слов не понимаете. забейте.
|
|
|

22.03.2009, 15:57
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Доброго времени суток! На rsdn есть статья, сделал все как там написано. Скомпилил dll-ку "перехватчик", затем написал прогу:
Код:
#include <windows.h>
int main(int argc, char* argv[])
{
LoadLibrary("C:\\test.dll");
MessageBox(NULL, "Test", "test", MB_OK);
return 0;
}
Вылетает экзепшн. Подскажите плиз где ошибка?
P.S. вот исходник дллки:
Код:
// dll.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include <windows.h>
#include "dll.h"
void IntFunc(void);
BOOL WINAPI NewMessage(HWND hwnd, char *text, char *hdr, UINT utype);
#pragma pack(push, 1)
struct jmp_far
{
BYTE instr_push;
DWORD arg;
BYTE instr_ret;
};
#pragma pack(pop)
BYTE old[6];
DWORD adr_MessageBoxA;
DWORD written;
jmp_far jump;
BOOL WINAPI Intercept_MessageBoxA(HWND hwnd, char *text, char *hdr, UINT utype)
{
//Сначала восстанавливаем 6 первых байт функции. Это не обязательное
// действие, просто мы решили подшутить над пользователем, и все
// сообщения функции MessageBoxA переделать на свои, поэтому нам придется
// вызвать оригинальную функцию, а для этого следует восстановить ее адрес:
WriteProcessMemory(GetCurrentProcess(), (void*)adr_MessageBoxA,
(void*)&old, 6, &written);
//Здесь вы можете порезвиться от души и выполнить любые, пришедшие вам
// в голову действия. Мы просто заменили сообщение функции на свое:
char *str = "Hi From MessageBOX!!!!";
//Вызываем оригинальную функцию через указатель
((BOOL (__stdcall*)(HWND, char*, char*, UINT))adr_MessageBoxA)(hwnd,
str, hdr, utype);
//Снова заменяем 6 байт функции на команду перехода на нашу функцию
WriteProcessMemory(GetCurrentProcess(), (void*)adr_MessageBoxA,
(void*)&jump, 6,&written);
return TRUE;
}
void InterceptFunctions(void)
{
DWORD op;
//сначала получим абсолютный адрес функции для перехвата
adr_MessageBoxA = (DWORD)GetProcAddress(GetModuleHandle("user32.dll"),
"MessageBoxA");
if(adr_MessageBoxA == 0)
{
MessageBox(NULL, "Can`t get adr_MessageBoxA", "Error!", 0);
return;
}
// Зададим машинный код инструкции перехода, который затем впишем
// в начало полученного адреса:
jump.instr_push = 0x68;
jump.arg = (DWORD)&Intercept_MessageBoxA;
jump.instr_ret = 0xC3;
//Прочитаем и сохраним первые оригинальные 6 байт стандартной API функции
ReadProcessMemory(GetCurrentProcess(),(void*) adr_MessageBoxA,
(void*)&old, 6, &written);
//Запишем команду перехода на нашу функцию поверх этих 6-ти байт
WriteProcessMemory(GetCurrentProcess(), (void*)adr_MessageBoxA,
(void*)&jump, sizeof(jmp_far), &written);
}
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if(ul_reason_for_call == DLL_PROCESS_ATTACH )
{
InterceptFunctions();
}
return TRUE;
}
|
|
|

22.03.2009, 16:50
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Мне кажется или в этом коде нет функции VirtualProtectEx ?
--added
Кстати вот была тема
http://forum.antichat.ru/thread32176.html
А, сейчас посмотрела код WriteProcessMemory
Код:
7C80222C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
7C80222F 8D45 14 LEA EAX,DWORD PTR SS:[EBP+14]
7C802232 50 PUSH EAX
7C802233 6A 40 PUSH 40
7C802235 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
7C802238 50 PUSH EAX
7C802239 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
7C80223C 50 PUSH EAX
7C80223D 57 PUSH EDI
7C80223E 895D FC MOV DWORD PTR SS:[EBP-4],EBX
7C802241 FFD6 CALL ESI ; ntdll.ZwProtectVirtualMemory
VirtualProtect не нужен сталобыть, PAGE_EXECUTE_READWRITE уже есть (0x40). код, кстати у меня работает
Последний раз редактировалось 0x0c0de; 22.03.2009 в 17:28..
|
|
|

22.03.2009, 17:40
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Может дело в LoadLibrary? Я могу так из своей проги использовать эту длл?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|