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

Сравнение строк, чисел и т.д - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Доделайте прогу (Змейка) http://www.cyberforum.ru/cpp-beginners/thread932648.html
Как на этой основе сделать полноценную змейку? #include <conio.h> #include <windows.h> HANDLE StdOutHandle; void putcxy(char c, COORD &coo) { SetConsoleCursorPosition(StdOutHandle, coo); _putch(c); static COORD coo0 = { 0, 0 }; SetConsoleCursorPosition(StdOutHandle, coo0);
C++ Инициализация vector<char> Добрый день. Подскажи те, как инициализировать vector<char> символами - буквами алфавита. http://www.cyberforum.ru/cpp-beginners/thread932638.html
C++ Ссылка на неразрешенный внешний символ
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl phyRestoreConsoleAttributes(void)" (?phyRestoreConsoleAttributes@@YAXXZ) в функции _main Выдают такие ошибки, плюс еще 40 ошибок такого плана. И что это значит? КАк решить проблему?
C++ Алгоритм поиска
есть ли в STL алгоритм принимающий упорядоченный интервал и проверяющий, содержит ли данный интервал последовательность из N элементов, соседние элементы отличаются на единицу ПРимер : 3 5 6 7 9 - содержит 3 элемента отл на единицу 2 3 10 11 12 13 содержит 4 элемента
C++ Правильное поведение класса даты http://www.cyberforum.ru/cpp-beginners/thread932615.html
В общем, взбрело мне в головы написать свой собственный класс для управления датой. Собственно, основная информация - день, месяц и год реализованы простыми числами. Решил написать функции для прибавления к дате нескольких дней, месяцев и лет и тут столкнулся с такой проблемой - как правильно организовать поведение класса для функции прибавления месяцев для случаев, когда в изначальном месяце...
C++ C++ и количество запущенных процессов Перед мной стоит задача. Вычислить количество процессов, запущенных на системе. Перечисляю процессы я так: PROCESSENTRY32 Process; HANDLE hProcess; Process.dwSize = sizeof(PROCESSENTRY32); hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); Process32First(hProcess, &Process); подробнее

Показать сообщение отдельно
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
03.08.2013, 11:47     Сравнение строк, чисел и т.д
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Как минимум от хакера будет требоваться знание vtbl и умение разбираться в дизассемблированном коде ООП программ.
HexRays даёт вполне читаемый сишный код ;-) Вот вчера немного покопался, сколько успел. Я и в IDA толком работать не умею. Тем не менее, ход мыслей уже виден.
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
int __cdecl main(int argc, const char **argv, const char **envp)
{
  int (__thiscall ***pa)(_DWORD); // eax@1
  char success; // bl@1
  int (__thiscall ***pb)(_DWORD); // eax@4
  int (__thiscall ***pc)(_DWORD); // eax@7
  signed int curPos; // edi@10
  const char *(__thiscall ***curFunc)(_DWORD); // esi@12
  const char *sCorrect; // eax@13
  signed int v10; // esi@17
  unsigned int *v11; // ecx@18
  const char *(__thiscall ***pfArray)(_DWORD); // [sp+10h] [bp-24h]@1
  const char *(__thiscall ***pfArray_1)(_DWORD); // [sp+14h] [bp-20h]@7
  const char *(__thiscall ***pfArray_2)(_DWORD); // [sp+18h] [bp-1Ch]@10
  char input; // [sp+1Ch] [bp-18h]@10
  unsigned int v17; // [sp+30h] [bp-4h]@1
 
  v17 = (unsigned int)&pfArray ^ xorConst;
  success = 0;
  pa = (int (__thiscall ***)(_DWORD))operator new(4u);
  if ( pa )
    *pa = (int (__thiscall **)(_DWORD))funcA;
  else
    pa = 0;
  pfArray = (const char *(__thiscall ***)(_DWORD))pa;
  pb = (int (__thiscall ***)(_DWORD))operator new(4u);
  if ( pb )
    *pb = (int (__thiscall **)(_DWORD))funcB;
  else
    pb = 0;
  pfArray_1 = (const char *(__thiscall ***)(_DWORD))pb;
  pc = (int (__thiscall ***)(_DWORD))operator new(4u);
  if ( pc )
    *pc = (int (__thiscall **)(_DWORD))funcC;
  else
    pc = 0;
  pfArray_2 = (const char *(__thiscall ***)(_DWORD))pc;
  puts("password?..:");
  gets(&input);
  curPos = 0;
  while ( !success )
  {
    curFunc = (&pfArray)[curPos];
    if ( !strcmp(&input, (**curFunc)((&pfArray)[curPos])) )
    {
      sCorrect = (*curFunc)[1](curFunc);
      puts(sCorrect);
      success = 1;
    }
    ++curPos;
    if ( curPos >= 3 )
    {
      if ( !success )
        puts("incorrect");
      break;
    }
  }
  system("pause");
  v10 = 0;
  do
  {
    v11 = (unsigned int *)(&pfArray)[v10];
    if ( v11 )
    {
      if ( *(v11 - 1) )
        (*(void (__stdcall **)(_DWORD))(*v11 + 8))(3);
      else
        operator delete(v11 - 1);
    }
    ++v10;
  }
  while ( v10 < 3 );
  return 0;
}
Да, curFunc следует читать как curObject...
И с этим gets'ом при вводе длинной строки падает, можно эксплойт делать...
 
Текущее время: 12:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru