Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C/C++ Создание модемного соединения для виртуального ком порта Доброго времени суток! Нужна помощь или совет, по созданию модемного соединения к виртуальному порту. Данные между портами передаются отлично, но вот соединение к интернету не могу подключить. На этом всё останавливается. Номера *99***1# и *99#. Когда устанавливаю порт на реальный, установленный системой всё работает на ура. Но а как быть с виртуальным? https://www.cyberforum.ru/ c-cpp/ thread1627560.html Необходимо разобраться в коде C/C++
Функция вывода символа fputchar, разработанная в этом примере, позволяет вывести символ в последовательный порт. Функция принимает в качестве параметра одиночный символ. #include <stdio.h> #include <string.h> #include <REG52.H> void fputchar (unsigned char c1) { SBUF = c1; while (!TI); TI = 0; }
C/C++ Перехват функции для определенного потока Здравствуйте! Подскажите пожалуйста, возможно ли поставить перехват (по средствам Detours 2.1) функции для определенного потока ? https://www.cyberforum.ru/ c-cpp/ thread1607180.html C/C++ DLL hijacking или подмена DLL при открытии .docx https://www.cyberforum.ru/ c-cpp/ thread1605583.html
Набрел как-то на статью на хабре. Решил проверить на своем компе. Создал DLL следующего содержания: #include <windows.h> BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: MessageBoxA(NULL, "Hi from DLL", "Info", MB_OK); break;
COM: SAFEARRAY добавление элементов C/C++
День добрый. Перерыл множество ресурсов в поисках ответа на мой вопрос, но всё тщетно. Существует функция, в ней 4 типа данных: int, char, string, float. Все эти данные должны приводиться к одному общему, добавляться в массив SAFEARRAY и отправляться в dll на C#. Вопрос: каким образом добавлять новые значения в массив SAFEARRAY? cell AMX_NATIVE_CALL __callDotnetMethod(AMX* amx, cell*...
C/C++ Разработка программы, для управления моторизованным сканером магнитных карт https://www.cyberforum.ru/ c-cpp/ thread1601401.html
Добрый вечер. Не знаю правильно ли я выбрал ветку но попробую. Мне нужна помощь в написании, наверное программы, для управления моторизованным сканером магнитных карт. Требования не велики так как использование предполагается для одной только цели - проезд через шлагбаум. Вот ссылка на девайс: http://media.digikey.com/pdf/Data%20Sheets/Omron%20PDFs/3S4YR-MVF,MVS.pdf Заранее спасибо. Если...
C/C++ Как получить WindowsForms (.NET) через ActiveX https://www.cyberforum.ru/ c-cpp/ thread1597113.html
Есть приложение, которое может использовать ActiveX элементы(контролы). Например можно использовать Windows Form 2.0 Функционал элементов Windows Form 2.0 довольно слабоват и хотелось бы использовать элементы которые есть в WindowsForms .NET (например DataGridView) Есть ли уже готовые решения для такой задачи? Возможно ли такое решение впринципе?
Где в doc документе хранится его эскиз? C/C++
Нужно получить эскиз doc-документа. Из того, что смог найти в интернете узнал, что если при сохранении документа поставить галочку "Сохранить эскиз", то в документе сохраняется миниатюра. Но вот где именно она хранится найти не смог. Может кто подскажет?
C/C++ Экспорт одной строки в Excel из Access Здрасте, люди добрые помогите с экспортом одной строки в Excel из Access Надо чтобы при нажатии на строку экспортировало только её, а другие не трогала у вас на форуме нашёл кодик, а он все строчки которые есть кидает в excel, а надо одну которую выделил нажатием String fTPL = ExtractFilePath(Application->ExeName) + "template.xls"; Variant app, books, book, sheet, Rang, vCell; app =... https://www.cyberforum.ru/ c-cpp/ thread1589644.html C/C++ Перехват выполнения скрипта Недавно начал заниматься реализацией перехвата функций dll. (на примерах с MessageBox, в интернете их куча), по средствам Detours MS (v1.5) у меня получилось перехватить. Хочу сейчас перехватить выполнение скрипта с использованием jscript.dll или vbscript.dll. В импорте у них имеются 4 функции: 1. DllCanUnloadNow; 2. DllGetClassObject; 3. DllRegisterServer; 4. DllUnregisterServer; ... https://www.cyberforum.ru/ c-cpp/ thread1578752.html
PDF-редактор, поддерживающий OLE C/C++
Подскажите, пожалуйста, PDF-редактор, поддерживающий OLE? Есть что-то кроме Adobe Acrobat?
C/C++ OLE без регистрации в реестре Доброго времени суток. Можно ли использовать OLE без регистрации в реестре? https://www.cyberforum.ru/ c-cpp/ thread1575628.html
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 17
06.01.2016, 18:46  [ТС] 0

Вызов функции из Dll (анализа IDA) - C/C++ - Ответ 8587537

06.01.2016, 18:46. Показов 2360. Ответов 4
Метки (Все метки)

Ответ

Я перехватываю функцию public: virtual long __thiscall ActiveXObjectFncObj::Construct(class VAR *, int, class VAR *)
C++
1
2
3
long __thiscall MyFunc::GFN_ConstructActiveXObject(void* e,__int32 a, __int32 b, __int32 c)
{
}
где я получаю e - this, и такими махинациями:
C++
1
2
3
4
5
6
struct s0 **j;
 
ULONG_PTR *ukz1 = (ULONG_PTR*)e;
ULONG_PTR ukz2  = (ULONG_PTR)*ukz1;
ULONG_PTR ukz3  = ukz2 + 260;
ULONG_PTR *ukz4 = &ukz3;
смещаюсь на адрес нужной функции , которую необходимо вызвать, затем кастую:
C++
1
ActiveXObject *this_ = static_cast<ActiveXObject*>((void*)ukz4);
;

ActiveXObject это класс в котором я объявил метод GetSourseCore, вот так:
C++
1
2
3
4
5
class ActiveXObject
{
public:
    virtual  long __thiscall GetSourceCore(void * u,struct** s);
};
, которую и нужно вызвать из dll, саму структуру взял из ida, как она показала:
C++
1
2
3
4
5
6
7
struct s0 {
    __int32 f0;
    __int32 f4;
    __int32 f8;
    __int32 f12;
    __int32 f16;
};
Вот сам оригинал функции GetSourceCore из dll, точнее псевдокод код:
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
signed int __thiscall NatFncObj::GetSourceCore(NatFncObj *this, unsigned __int16 **a2)
{
  const unsigned __int16 *v2; // ebx@1
  unsigned int v3; // esi@3
  BSTR v4; // eax@3
  signed int result; // eax@4
 
  v2 = (const unsigned __int16 *)*((_DWORD *)this + 22);
  if ( !v2 )
    v2 = L"anonymous";
  v3 = wcslen(v2);
  v4 = SysAllocStringLen(0, v3 + 35);
  *a2 = v4;
  if ( v4 )
  {
    *(_DWORD *)v4 = *(_DWORD *)L"\nfunction ";
    *((_DWORD *)v4 + 1) = 7209077;
    *((_DWORD *)v4 + 2) = 7602275;
    *((_DWORD *)v4 + 3) = 7274601;
    *((_DWORD *)v4 + 4) = 2097262;
    memcpy(*a2 + 10, v2, 2 * v3);
    memcpy(&(*a2)[v3 + 10], L"() {\n    [native code]\n}\n", 0x32u);
    result = 0;
  }
  else
  {
    result = -2147024882;
  }
  return result;
}
на asm объявление ее такое:
Assembler
1
protected: virtual long __thiscall NatFncObj::GetSourceCore(unsigned short * *)
после кастомизации я вызываю метод класса GetSourceCore и передаю ему параметры: e, j. Но после вызова он даже не попал на начало этой функции, под Windbg ukz4 указывает на адрес по которому лежит адрес той функции (указывает правильно) пробовал другой функцией. Меня напрягает что оригинал находится в Protected, и почему она находится в одной и той же виртуальной таблицы с функцией которую я перехватываю?
Как мне можно вызвать protected: virtual long __thiscall NatFncObj::GetSourceCore(unsigned short * *), где можно прочитать про вызовы такого рода?

Вернуться к обсуждению:
Вызов функции из Dll (анализа IDA) C/C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2016, 18:46
Готовые ответы и решения:

Вызов функции из dll
Доброго времени суток! Пытаюсь вызвать функцию, которая находится в библиотеке следующим способом:...

IDA, поиск функции из DLL и выполнение в EXE
Добрый день. Подскажите, пожалуйста. Я хочу из чужой DLL узнать, какими функциями выполнить...

Вызов функции из dll. Dll не определена в коде и подключается программно
Я написал простую функцию которая возвращает негатив bitmap'а Function Negative(ByVal Bmp As...

Inject dll, а также вызов функции из этой же dll
Всем привет, заинжектить dll в другой процесс получилось, но еще необходимо вызвать функцию в этой...

4
06.01.2016, 18:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2016, 18:46
Помогаю со студенческими работами здесь

Вызов функции DLL VB.NET в DLL C++
Как вызывать функции dll VB.NET через dll С++, которая приинжекчена к процессу проводника?

Вызов программой, написанной на С++, функции из dll, написанной на Assembler (явное подключение dll)
Доброго времени суток!Задали лабораторную работу: программа, написанная на с++ должна подключать...

Вызов функции из DLL
Всем привет! Есть такая функция в DLL: IMPORTDLL int PIRITLIB_CALL openPort(char *fileName, long...

Вызов функции из Dll
Суть проблемы. Пишу программу подобие работы с БД. Написал функцию добавления в базу данных type ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru