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

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by begin_end, 28 Apr 2015.

  1. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Если мне не изменяет память, то в безоконных приложениях и неактивных окнах хоткеи не работают, могу и ошибаться)
     
    1. GRRRL Power

      GRRRL Power Elder - Старейшина

      Joined:
      13 Jul 2010
      Messages:
      823
      Likes Received:
      185
      Reputations:
      84
      Работают, конечно. System-wide hotkey. И в безоконных тоже работают:
       
      #colorblind likes this.
      1. billybonse

        billybonse Member

        Joined:
        9 Oct 2011
        Messages:
        55
        Likes Received:
        7
        Reputations:
        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 Jun 2017
        Last edited: 7 Jun 2017
        1. #colorblind

          #colorblind Moderator

          Joined:
          31 Jan 2014
          Messages:
          637
          Likes Received:
          246
          Reputations:
          42
          Дык а где скомпиленый и обработаный файлы?
           
          1. billybonse

            billybonse Member

            Joined:
            9 Oct 2011
            Messages:
            55
            Likes Received:
            7
            Reputations:
            1
            https://www.sendspace.com/file/nquape
             
            1. #colorblind

              #colorblind Moderator

              Joined:
              31 Jan 2014
              Messages:
              637
              Likes Received:
              246
              Reputations:
              42
              У инфектора плохо с математикой. Не верно получает пишет адрес MessageBoxA, нужно сделать + 0xA. Почему у тебя вышла кривая EP на семпле я сказать не могу, тестил под W7x64, обрабатывал сапера из WinXP, ЕП встала норм, стаб записался, но колл как я уже сказал выше был на неверный адрес.
              p.s.: компиль с параметром -DYNAMICBASE, чтобы ASLR не подрубался
               
              #86 #colorblind, 8 Jun 2017
              Last edited: 8 Jun 2017
              Ins3t and billybonse like this.
              1. billybonse

                billybonse Member

                Joined:
                9 Oct 2011
                Messages:
                55
                Likes Received:
                7
                Reputations:
                1
                Благодарю за ответ. К сожалению, не получилось.
                Провожу отладку инспектора, нашел возможно причинное место.

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

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

                  Trilgon New Member

                  Joined:
                  5 Jul 2017
                  Messages:
                  32
                  Likes Received:
                  0
                  Reputations:
                  0
                  Не так давно начал изучать C++ и всё было понятно, но возник такой вопрос:как написать алгоритм получение вещественных чисел, например от 0.01 до 0.5 ?
                  Заранее спасибо.
                   
                  1. binarymaster

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

                    Joined:
                    11 Dec 2010
                    Messages:
                    4,717
                    Likes Received:
                    10,195
                    Reputations:
                    126
                    PHP:
                      for (int i 1<= 50i++)
                        
                    std::cout << 100.0 << "\n";
                     
                    Trilgon likes this.
                    1. Trilgon

                      Trilgon New Member

                      Joined:
                      5 Jul 2017
                      Messages:
                      32
                      Likes Received:
                      0
                      Reputations:
                      0
                      Спасибо
                       
                      1. Trilgon

                        Trilgon New Member

                        Joined:
                        5 Jul 2017
                        Messages:
                        32
                        Likes Received:
                        0
                        Reputations:
                        0
                        Есть ещё один вопрос,а может C++ использовать числа с 30 знаками после запятой?Если нет,то какой максимум есть?
                         
                        1. binarymaster

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

                          Joined:
                          11 Dec 2010
                          Messages:
                          4,717
                          Likes Received:
                          10,195
                          Reputations:
                          126
                          Зависит от архитектуры и разрядности компилятора.

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

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

                            #colorblind Moderator

                            Joined:
                            31 Jan 2014
                            Messages:
                            637
                            Likes Received:
                            246
                            Reputations:
                            42
                            Еще можно использовать BigInt
                             
                            Trilgon likes this.
                            1. Trilgon

                              Trilgon New Member

                              Joined:
                              5 Jul 2017
                              Messages:
                              32
                              Likes Received:
                              0
                              Reputations:
                              0
                              Я использую Visual Studio Community 2017
                               
                              1. neviens

                                neviens Member

                                Joined:
                                9 Oct 2013
                                Messages:
                                82
                                Likes Received:
                                28
                                Reputations:
                                3
                                Сколько будет чисел после запятой в MSVC2017?
                                Так возьми и пощитай:
                                Code:
                                #include <stdlib.h>
                                #include <stdio.h>
                                
                                int main()
                                {
                                  double e = 1.0;
                                  printf("%.30f\n", e / 3.0);
                                }
                                Сколько троек будет, такая и точность.
                                Если надо больше, подключай стороннюю библиотеку для больших чисел с запятой (MAPM, MPFR, итд).
                                 
                                Trilgon likes this.
                                1. Trilgon

                                  Trilgon New Member

                                  Joined:
                                  5 Jul 2017
                                  Messages:
                                  32
                                  Likes Received:
                                  0
                                  Reputations:
                                  0
                                  Спасибо
                                   
                                  1. Trilgon

                                    Trilgon New Member

                                    Joined:
                                    5 Jul 2017
                                    Messages:
                                    32
                                    Likes Received:
                                    0
                                    Reputations:
                                    0
                                    Искал в интернете как установить MPIR на visual studio 2017 community,так и не нашёл нормальной инструкции,не могли бы вы мне объяснить как это можно сделать?
                                     
                                    1. neviens

                                      neviens Member

                                      Joined:
                                      9 Oct 2013
                                      Messages:
                                      82
                                      Likes Received:
                                      28
                                      Reputations:
                                      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 and #colorblind like this.
                                      1. Trilgon

                                        Trilgon New Member

                                        Joined:
                                        5 Jul 2017
                                        Messages:
                                        32
                                        Likes Received:
                                        0
                                        Reputations:
                                        0
                                        В VS 2017 community получилось чуть-чуть иначе,но по сути также,короче,спасибо за помощь,а то уже третий день не мог разобраться))))
                                         
                                        1. Trilgon

                                          Trilgon New Member

                                          Joined:
                                          5 Jul 2017
                                          Messages:
                                          32
                                          Likes Received:
                                          0
                                          Reputations:
                                          0
                                          Может кто-нибудь скинуть пример цикла с MPIR(желательно цикла с for)?
                                           
                                          #100 Trilgon, 19 Jul 2017
                                          Last edited: 19 Jul 2017