ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 28.02.2009, 22:58
Аватар для criz
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

Есть файл trigraph.exe, Builder'овский. Так вот все PE-редакторы/вьюверы сообщают, что это не PE-файл. Проверьте плиз кто-нить этот файл, чем он отличается от других.
Цитата:
http://slil.ru/27008747
З.Ы. я у всех файлов проверяю IMAGE_DOS_SIGNATURE и IMAGE_NT_SIGNATURE.
З.З.Ы. файл чист, вот отчет:
Цитата:
http://www.virustotal.com/ru/analisis/775ac9fb279c878b8c6dc4e60b381a57
 
Ответить с цитированием

  #32  
Старый 28.02.2009, 23:29
Аватар для 0x0c0de
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

IMAGE_NT_SIGNATURE отсутствует )

Последний раз редактировалось 0x0c0de; 28.02.2009 в 23:35..
 
Ответить с цитированием

  #33  
Старый 01.03.2009, 00:39
Аватар для criz
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

Сделал проверку таким вот образом:
Код:
	if(PEh->Signature != IMAGE_NT_SIGNATURE)
		return;
получаю экзепшн...
З.Ы. магнитные бури что-ли сегодня...голова не пашет =\
 
Ответить с цитированием

  #34  
Старый 01.03.2009, 08:04
Аватар для 0x0c0de
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

поместите свой код в try-блок или проверяйте не выходит ли за границы выделенной под проекцию области памяти значение (смещение предположительного pe-заголовка+4+адрес начала проекции). Здесь как раз выход за границы имеет место быть (смотрела в файле trigraph.exe).

00005000 - выделено под проекцию

00010000 - смещение предполагаемого pe-заголовка

Последний раз редактировалось 0x0c0de; 01.03.2009 в 09:21..
 
Ответить с цитированием

  #35  
Старый 01.03.2009, 10:34
Аватар для x0man
x0man
Познающий
Регистрация: 24.02.2006
Сообщений: 34
Провел на форуме:
136883

Репутация: 50
По умолчанию

Цитата:
Репутация: Специалист (1/104) ±

побороть это пока не удалось...
P.S. пытался через OpenFileMapping:
Сталобыть нахрен вообще репутация нужна... ппц... Специалисты.
 
Ответить с цитированием

  #36  
Старый 01.03.2009, 12:18
Аватар для criz
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

0x0c0de, спасибо. Все работает
P.S. 2 x0man, я сюда не из-за плюсиков/звездочек пришел. Они мне вобще "параллельны" =)
 
Ответить с цитированием

  #37  
Старый 01.03.2009, 12:50
Аватар для x0man
x0man
Познающий
Регистрация: 24.02.2006
Сообщений: 34
Провел на форуме:
136883

Репутация: 50
По умолчанию

Вы смысла моих слов не понимаете. забейте.
 
Ответить с цитированием

  #38  
Старый 22.03.2009, 15:57
Аватар для criz
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
Question

Доброго времени суток! На 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;
}
 
Ответить с цитированием

  #39  
Старый 22.03.2009, 16:50
Аватар для 0x0c0de
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

Мне кажется или в этом коде нет функции 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..
 
Ответить с цитированием

  #40  
Старый 22.03.2009, 17:40
Аватар для criz
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

Может дело в LoadLibrary? Я могу так из своей проги использовать эту длл?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Статья от novichka про АНтичат. Егорыч+++ Болталка 48 14.07.2006 17:09
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы про Ip Dimann Болталка 8 11.09.2005 22:49



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ