[ C / C++ ] — начинающим: задаем вопросы

Обсуждение в разделе «С/С++, C#, Delphi, .NET, Asm», начал(-а) begin_end, 28.04.2015.

  1. #colorblind

    #colorblind Member

    Регистрация:
    31.01.2014
    Сообщения:
    459
    Одобрения:
    134
    Репутация:
    26
    Если мне не изменяет память, то в безоконных приложениях и неактивных окнах хоткеи не работают, могу и ошибаться)
     
  2. GRRRL Power

    GRRRL Power Moderator

    Регистрация:
    13.07.2010
    Сообщения:
    818
    Одобрения:
    183
    Репутация:
    55
    Работают, конечно. System-wide hotkey. И в безоконных тоже работают:
     
    _________________________
    Это одобряет #colorblind.
  3. billybonse

    billybonse Member

    Регистрация:
    9.10.2011
    Сообщения:
    53
    Одобрения:
    6
    Репутация:
    1
    Скомпилировал pe-инфектор, ошибок нет.
    Зараженный файл крашится.
    В olydbg точка входа проги выглядит так:

    01201297 ? 4A DEC EDX
    01201298 ? 0168 AC ADD DWORD PTR DS:[EAX-54],EBP
    0120129B ? 1240 00 ADC AL,BYTE PTR DS:[EAX]
    0120129E 68 DB 68 ; CHAR 'h'
    0120129F AC DB AC
    012012A0 12 DB 12
    012012A1 . 40004A01 DD 014A0040
    012012A5 E8 DB E8
    012012A6 8C DB 8C
    012012A7 C4 DB C4
    012012A8 46 DB 46 ; CHAR 'F'
    012012A9 75 DB 75 ; CHAR 'u'
    012012AA /.- EB 08 JMP SHORT wmainCRTStartup
    012012AC |. 49274D21 DD 214D2749
    012012B0 |. 47 48 56 00 ASCII "GHV",0 ; ASCII "GHV"
    012012B4 |> E8 80040000 CALL __security_init_cookie ; [__security_init_cookie
    012012B9 \.- E9 B3FDFFFF JMP __tmainCRTStartup


    а должна выглядеть так:
    PUSH 0
    PUSH 0
    PUSH 00000000
    PUSH 0
    CALL USER32.MessageBoxA /*address will be filled on the fly*/
    JMP $+8
    "I'm GHV" /*\x00*/;

    Компилирую на x64 windows 10, обе проги x86.
    Подскажите, где ошибка?
     
    #83 billybonse, 7.06.2017
    В последний раз редактировалось: 7.06.2017
  4. #colorblind

    #colorblind Member

    Регистрация:
    31.01.2014
    Сообщения:
    459
    Одобрения:
    134
    Репутация:
    26
    Дык а где скомпиленый и обработаный файлы?
     
  5. billybonse

    billybonse Member

    Регистрация:
    9.10.2011
    Сообщения:
    53
    Одобрения:
    6
    Репутация:
    1
  6. #colorblind

    #colorblind Member

    Регистрация:
    31.01.2014
    Сообщения:
    459
    Одобрения:
    134
    Репутация:
    26
    У инфектора плохо с математикой. Не верно получает пишет адрес MessageBoxA, нужно сделать + 0xA. Почему у тебя вышла кривая EP на семпле я сказать не могу, тестил под W7x64, обрабатывал сапера из WinXP, ЕП встала норм, стаб записался, но колл как я уже сказал выше был на неверный адрес.
    p.s.: компиль с параметром -DYNAMICBASE, чтобы ASLR не подрубался
     
    #86 #colorblind, 8.06.2017
    В последний раз редактировалось: 8.06.2017
    Это одобряют Ins3t и billybonse.
  7. billybonse

    billybonse Member

    Регистрация:
    9.10.2011
    Сообщения:
    53
    Одобрения:
    6
    Репутация:
    1
    Благодарю за ответ. К сожалению, не получилось.
    Провожу отладку инспектора, нашел возможно причинное место.

    После кода:
    Code:
    entry = (char*)GetEntryOffset(mapping);
    в дебагере в значении entry написано: неправильный указатель.
    GetEntryOffset вроде бы правильный указатель возвращает.

    П.С. На windows 10 не запускается.
    Если скомпилировать без:
    Code:
    #pragma comment(linker, "/ENTRY:main /MERGE:.rdata=.text /MERGE:.data=.text /ALIGN:512")
    то инфектор работает.
    Может в этом проблема?
     
  8. Trilgon

    Trilgon New Member

    Регистрация:
    5.07.2017
    Сообщения:
    14
    Одобрения:
    0
    Репутация:
    0
    Не так давно начал изучать C++ и всё было понятно, но возник такой вопрос:как написать алгоритм получение вещественных чисел, например от 0.01 до 0.5 ?
    Заранее спасибо.
     
  9. binarymaster

    binarymaster Elder - Старейшина

    Регистрация:
    11.12.2010
    Сообщения:
    2 858
    Одобрения:
    4 788
    Репутация:
    50
    PHP:
      for (int i 1<= 50i++)
        
    std::cout << 100.0 << "\n";
     
    Это одобряет Trilgon.
  10. Trilgon

    Trilgon New Member

    Регистрация:
    5.07.2017
    Сообщения:
    14
    Одобрения:
    0
    Репутация:
    0
    Спасибо
     
  11. Trilgon

    Trilgon New Member

    Регистрация:
    5.07.2017
    Сообщения:
    14
    Одобрения:
    0
    Репутация:
    0
    Есть ещё один вопрос,а может C++ использовать числа с 30 знаками после запятой?Если нет,то какой максимум есть?
     
  12. binarymaster

    binarymaster Elder - Старейшина

    Регистрация:
    11.12.2010
    Сообщения:
    2 858
    Одобрения:
    4 788
    Репутация:
    50
    Зависит от архитектуры и разрядности компилятора.

    Есть стандартные типы, например float. Лучше всего прочитать тут:
    https://en.wikipedia.org/wiki/Single-precision_floating-point_format

    Для более высоких точностей возможно потребуется свою структуру данных создавать.
     
    Это одобряет Trilgon.
  13. #colorblind

    #colorblind Member

    Регистрация:
    31.01.2014
    Сообщения:
    459
    Одобрения:
    134
    Репутация:
    26
    Еще можно использовать BigInt
     
    Это одобряет Trilgon.
  14. Trilgon

    Trilgon New Member

    Регистрация:
    5.07.2017
    Сообщения:
    14
    Одобрения:
    0
    Репутация:
    0
    Я использую Visual Studio Community 2017
     
  15. neviens

    neviens Member

    Регистрация:
    9.10.2013
    Сообщения:
    64
    Одобрения:
    18
    Репутация:
    3
    Сколько будет чисел после запятой в MSVC2017?
    Так возьми и пощитай:
    Code:
    #include <stdlib.h>
    #include <stdio.h>
    
    int main()
    {
      double e = 1.0;
      printf("%.30f\n", e / 3.0);
    }
    Сколько троек будет, такая и точность.
    Если надо больше, подключай стороннюю библиотеку для больших чисел с запятой (MAPM, MPFR, итд).
     
    Это одобряет Trilgon.
  16. Trilgon

    Trilgon New Member

    Регистрация:
    5.07.2017
    Сообщения:
    14
    Одобрения:
    0
    Репутация:
    0
    Спасибо
     
  17. Trilgon

    Trilgon New Member

    Регистрация:
    5.07.2017
    Сообщения:
    14
    Одобрения:
    0
    Репутация:
    0
    Искал в интернете как установить MPIR на visual studio 2017 community,так и не нашёл нормальной инструкции,не могли бы вы мне объяснить как это можно сделать?
     
  18. neviens

    neviens Member

    Регистрация:
    9.10.2013
    Сообщения:
    64
    Одобрения:
    18
    Репутация:
    3
    На MSVC2015 Pro устанавливается так:
    1. Надо разарxивировать, например, в C:\code\
    2. Открыть C:\code\mpir-3.0.0\build.vc14\mpir.sln в MSVC2015
    3. Собрать dll (будет в C:\code\mpir-3.0.0\dll\Win32\Release\)
    4. Закрыть проект, открыть новый с шаблона C++ Console app
    5. Добавить пути к *.h и *.lib файлам с:
    а) Right-click на ConsoleApplication1 в Solution Explorer, Properties, Configuration Properties\C/C++\General\Additional Include Directories\, C:\code\mpir-3.0.0\dll\Win32\Release\
    б) Right-click на ConsoleApplication1 в Solution Explorer, Properties, Configuration Properties\Linker\General\Additional Library Directories\, C:\code\mpir-3.0.0\dll\Win32\Release\
    6. Добавить код в ConsoleApplication1.cpp:
    Code:
    #include "stdafx.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <mpir.h>
    #pragma comment(lib, "mpir.lib")
    
    int main()
    {
       mpf_t x, y, z;
    
       mpf_set_default_prec(128);
    
       mpf_init_set_str(x, "1e0", 10);
       mpf_init_set_str(y, "3e0", 10);
       mpf_init(z);
    
       mpf_div(z, x, y);
    
       mpf_out_str(NULL, 10, 0, z);
    
       mpf_clear(x);
       mpf_clear(y);
       mpf_clear(z);
       getchar();
      return 0;
    }
    7. Собрать приложение (Release), скопировать рядом с ним mpir.dll и запустить.
     
    Это одобряют GRRRL Power, Trilgon и #colorblind.
  19. Trilgon

    Trilgon New Member

    Регистрация:
    5.07.2017
    Сообщения:
    14
    Одобрения:
    0
    Репутация:
    0
    В VS 2017 community получилось чуть-чуть иначе,но по сути также,короче,спасибо за помощь,а то уже третий день не мог разобраться))))
     
  20. Trilgon

    Trilgon New Member

    Регистрация:
    5.07.2017
    Сообщения:
    14
    Одобрения:
    0
    Репутация:
    0
    Может кто-нибудь скинуть пример цикла с MPIR(желательно цикла с for)?
     
    #100 Trilgon, 19.07.2017
    В последний раз редактировалось: 19.07.2017
Загрузка...