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

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

  1. oSTRIKERo

    oSTRIKERo New Member

    Joined:
    7 Feb 2016
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Привет всем!!! Прошу помощи!!!!...В общем надо нарисовать Центр внеписанной окружности треугольника
    Есть решение на Центр описанной окружности треугольника, помогите переделать, пожалуйста...Я уже с координатами эксперементировал, ничего не выходит...
    ЭТО РЕШЕНИЕ ДЛЯ ОПИСАННОЙ ОКРУЖНОСТИ ТРЕУГОЛЬНИКА
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
    
    
            public Form1()
            {
                InitializeComponent();
    
            }
    
    
            private void Form1_Click(object sender, EventArgs e)
            {
            
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Graphics g = CreateGraphics();
                Pen p = new Pen(Color.White);
    
                int Ax = 120; int Ay = 120;
                int Bx = 400; int By = 150;
                int Cx = 150; int Cy = 300;
    
                // Середина отрезка AB
                double P1x = (Ax + Bx) / 2;
                double P1y = (Ay + By) / 2;
                // Прямая, перпендикулярная AB через точку P1
                // x(Ax-Bx) +y(Ay-By) + C = 0
                double A1 = Ax - Bx;
                double B1 = Ay - By;
                double C1 = -(P1x * A1 + P1y * B1);
    
                // То-же самое для BC
                double P2x = (Bx + Cx) / 2;
                double P2y = (By + Cy) / 2;
                double A2 = Bx - Cx;
                double B2 = By - Cy;
                double C2 = -(P2x * A2 + P2y * B2);
    
                double Dy = 0;
                double Dx = 0;
                // Точка пересечения прямых
                if (A1 != 0)
                {
                    Dy = ((A2 * C1) / A1 - C2) * A1 / (B2 * A1 - B1 * A2);
                    Dx = (-C1 - B1 * Dy) / A1;
                }
                else
                {
                    Dx = ((B2 * C1) / B1 - C2) * B1 / (A2 * B1 - A1 * B2);
                    Dy = (-C1 - A1 * Dx) / B1;
                }
    
    
                double R = Math.Floor(Math.Sqrt(Math.Pow(Ax - Dx, 2) + Math.Pow(Ay - Dy, 2)));
    
                int DxMinusR = Convert.ToInt32(Math.Floor(Dx - R));
                int DyMinusR = Convert.ToInt32(Math.Floor(Dy - R));
                int DxPlusR = Convert.ToInt32(Math.Floor(Dx + R));
                int DyPlusR = Convert.ToInt32(Math.Floor(Dy + R));
    
                g.DrawEllipse(p, DxMinusR, DyMinusR, DxPlusR - 102, DyPlusR - 37);
    
                Point[] lines = new Point[4];
    
                lines[0].X = Ax;
                lines[0].Y = Ay;
                lines[1].X = Bx;
                lines[1].Y = By;
                lines[2].X = Cx;
                lines[2].Y = Cy;
                lines[3].X = Ax;
                lines[3].Y = Ay;
    
                g.DrawLines(p, lines);
    
                int centerX = (DxMinusR);
                int centerY = (DyMinusR);
    
                Brush b = new SolidBrush(Color.Red);
                g.FillEllipse(b, 242, 173, 5, 5);
            }
        }
    }
    
    Вот это рисуется
    [​IMG]
    А надо примерно вот так
    [​IMG]
     
    1. tailer73

      tailer73 New Member

      Joined:
      16 Sep 2015
      Messages:
      11
      Likes Received:
      4
      Reputations:
      0
      Эм... а на нижнем рисунке окружность вписана в какой-то треугольник? если да, то в какой?
      Насколько я помню, центр вписанной окружности - точка пересечения серединных перпендикуляров.
      Зная координаты вершин треугольника:
      1) находим координаты середин всех сторон
      2) составляем уравнения в координатах для перпендикуляров 2-х любых сторон и решаем систему из 2-х уравнений с 2-мя неизвестными.

      Если есть решение проще - буду рад его услышать.
      Это способ, который первым пришел на ум.
       
      1. qwerty283003

        qwerty283003 New Member

        Joined:
        30 Mar 2016
        Messages:
        2
        Likes Received:
        0
        Reputations:
        0
        Хочу мочь получать https странички, что для этого нужно?
        Умею не шифрованные сокетами.
         
        1. Aleks90

          Aleks90 New Member

          Joined:
          28 Mar 2016
          Messages:
          1
          Likes Received:
          0
          Reputations:
          0
          Прошу помощи, как можно заблокировать USB порты на стационарнике (windows 7)? Отблагодарю рубликами.
           
          1. Kaimi

            Kaimi Well-Known Member

            Joined:
            23 Aug 2007
            Messages:
            1,732
            Likes Received:
            811
            Reputations:
            231
            https://exploit.in/forum/index.php?showtopic=101258&hl=
             
            _________________________
            1. Kaimi

              Kaimi Well-Known Member

              Joined:
              23 Aug 2007
              Messages:
              1,732
              Likes Received:
              811
              Reputations:
              231
              WinINET
              или
              http://darkoff.ru/2012/02/ssl-на-сокетах-в-c/
              или
              OpenSSL (в качестве примера https://kaimi.ru/2012/01/http-https-cpp-classes/)
               
              _________________________
              qwerty283003 likes this.
              1. qwerty283003

                qwerty283003 New Member

                Joined:
                30 Mar 2016
                Messages:
                2
                Likes Received:
                0
                Reputations:
                0
                Спасибо большое, то что надо
                 
                1. KiritoRL

                  KiritoRL Banned

                  Joined:
                  22 Sep 2016
                  Messages:
                  1
                  Likes Received:
                  0
                  Reputations:
                  0
                  Code:
                  #include <Windows.h>
                  #include <TlHelp32.h>
                  
                  class Hackprocess
                  {
                  public:
                  
                      PROCESSENTRY32 gameProcess;
                      HANDLE HandleProcess;
                      HWND HWNDCsgo;
                      DWORD dwordClient;
                      DWORD dwordEngine;
                      DWORD dwordOverlay;
                      DWORD dwordVGui;
                      DWORD dwordServer;
                      DWORD dwordLibCef;
                      DWORD dwordSteam;
                      DWORD FindProcessName(const char *ProcessName, PROCESSENTRY32 *pEntry)
                      {
                          PROCESSENTRY32 ProcessEntry;
                          ProcessEntry.dwSize = sizeof(PROCESSENTRY32);
                          HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
                          if (hSnapshot == INVALID_HANDLE_VALUE) return 0;        if (!Process32First(hSnapshot, &ProcessEntry))
                          {
                              CloseHandle(hSnapshot);
                              return 0;
                          }
                          do {
                              if (!_strcmpi(ProcessEntry.szExeFile, ProcessName))
                              {
                                  memcpy((void *)pEntry, (void *)&ProcessEntry, sizeof(PROCESSENTRY32));
                                  CloseHandle(hSnapshot);
                                  return ProcessEntry.th32ProcessID;
                              }
                          } while (Process32Next(hSnapshot, &ProcessEntry));
                          CloseHandle(hSnapshot);
                          return 0;
                      }
                  
                      DWORD getThreadByProcess(DWORD DwordProcess)
                      {
                          THREADENTRY32 ThreadEntry;
                          ThreadEntry.dwSize = sizeof(THREADENTRY32);
                          HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
                          if (hSnapshot == INVALID_HANDLE_VALUE) return 0;
                  
                          if (!Thread32First(hSnapshot, &ThreadEntry)) { CloseHandle(hSnapshot); return 0; }
                  
                          do {
                              if (ThreadEntry.th32OwnerProcessID == DwordProcess)
                              {
                                  CloseHandle(hSnapshot);
                                  return ThreadEntry.th32ThreadID;
                              }
                          } while (Thread32Next(hSnapshot, &ThreadEntry));
                          CloseHandle(hSnapshot);
                          return 0;
                      }
                  
                      DWORD GetModuleNamePointer(LPSTR LPSTRModuleName, DWORD DwordProcessId)
                      {
                          MODULEENTRY32 lpModuleEntry = { 0 };
                          HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, DwordProcessId);
                          if (!hSnapShot)
                              return NULL;
                          lpModuleEntry.dwSize = sizeof(lpModuleEntry);
                          BOOL RunModule = Module32First(hSnapShot, &lpModuleEntry);
                          while (RunModule)
                          {
                              if (!strcmp(lpModuleEntry.szModule, LPSTRModuleName))
                              {
                                  CloseHandle(hSnapShot);
                                  return (DWORD)lpModuleEntry.modBaseAddr;
                              }
                              RunModule = Module32Next(hSnapShot, &lpModuleEntry);
                          }
                          CloseHandle(hSnapShot);
                          return NULL;
                      }
                  
                      void runSetDebugPrivs()
                      {
                          HANDLE HandleProcess = GetCurrentProcess(), HandleToken;
                          TOKEN_PRIVILEGES priv;
                          LUID LUID;
                          OpenProcessToken(HandleProcess, TOKEN_ADJUST_PRIVILEGES, &HandleToken);
                          LookupPrivilegeValue(0, "seDebugPrivilege", &LUID);
                          priv.PrivilegeCount = 1;
                          priv.Privileges[0].Luid = LUID;
                          priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
                          AdjustTokenPrivileges(HandleToken, false, &priv, 0, 0, 0);
                          CloseHandle(HandleToken);
                          CloseHandle(HandleProcess);
                          return;
                      }
                  
                      void memoryType()
                      {
                          runSetDebugPrivs();
                          while (!FindProcessName("csgo.exe", &gameProcess)) Sleep(12);
                          while (!(getThreadByProcess(gameProcess.th32ProcessID))) Sleep(12);
                          HandleProcess = OpenProcess(PROCESS_ALL_ACCESS, false, gameProcess.th32ProcessID);
                          while (dwordClient == 0x0) dwordClient = GetModuleNamePointer("client.dll", gameProcess.th32ProcessID);
                          while (dwordEngine == 0x0) dwordEngine = GetModuleNamePointer("engine.dll", gameProcess.th32ProcessID);
                          while (dwordVGui == 0x0) dwordVGui = GetModuleNamePointer("vguimatsurface.dll", gameProcess.th32ProcessID);
                          while (dwordServer == 0x0)dwordServer = GetModuleNamePointer("server.dll", gameProcess.th32ProcessID);
                          HWNDCsgo = FindWindow(NULL, "Counter-Strike: Global Offensive");
                          return;
                      }
                  };
                  
                  extern Hackprocess CSSource;
                  Здрастье я начала изучать взлом игр и хотел бы что означает GetModuleNamePointer
                   
                  1. binarymaster

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

                    Joined:
                    11 Dec 2010
                    Messages:
                    4,717
                    Likes Received:
                    10,195
                    Reputations:
                    126
                    Как правило, процесс (в данном случае игра) подгружает динамические библиотеки в память и использует их функции.

                    Эти динамические библиотеки (в данном случае client.dll, engine.dll, и др.), загруженные в память, называются модулями. Функция GetModuleNamePointer выдаёт, по какому адресу в памяти расположен тот или иной модуль. Pointer - это указатель на область в оперативной памяти.
                     
                    1. shellcoder

                      shellcoder New Member

                      Joined:
                      12 Sep 2016
                      Messages:
                      6
                      Likes Received:
                      0
                      Reputations:
                      0
                      программирую на си. хочу написать что то с библиотекой gtk. Есть какая нибудь книжка толковая или цикл статей?
                       
                      1. shellcoder

                        shellcoder New Member

                        Joined:
                        12 Sep 2016
                        Messages:
                        6
                        Likes Received:
                        0
                        Reputations:
                        0
                        Помогите задачку решить 2 дня бьюсь...

                        надо чтоб вот так было

                        A
                        BC
                        DEF
                        GHIJ
                        KLMNO
                        PQRSTU

                        а получается так

                        A
                        BC
                        CDE
                        DEFG
                        EFGHI
                        FGHIJK
                        GHIJKLM
                        HIJKLMNO
                        IJKLMNOPQ
                        JKLMNOPQRS
                        KLMNOPQRSTU

                        Code:
                            printf("\n\n");
                            printf("Задача №4\n");
                            unsigned char abc[SIZE] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                            short x, i;
                            for (x = 0; x < 11; x++)
                            {
                                for (i=(0 +x); i <= x+x; i+=1)
                                    printf("%c", abc[i]);
                                printf("\n");
                            }
                        Задача по циклам по идее простая, но у меня не получается. Сначала даже посимвольное присвоение делал, например char ch = 'A'; и цикл до 'U'; но результат тот же.
                         
                        1. GRRRL Power

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

                          Joined:
                          13 Jul 2010
                          Messages:
                          823
                          Likes Received:
                          185
                          Reputations:
                          84
                          PHP:
                          #include <stdio.h>

                          int main()
                          {
                              const 
                          char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                              const 
                          charptr letters;
                              
                          int i;
                              
                          int count 0;
                              while(*
                          ptr)
                              {
                                  
                          = ++count;
                                  while(
                          i-- && *ptr)
                                      
                          printf("%c", *ptr++);
                                
                                  
                          printf("\n");
                              }
                              return 
                          0;
                          }
                           
                          shellcoder likes this.
                          1. Aleks12345

                            Aleks12345 New Member

                            Joined:
                            26 Oct 2016
                            Messages:
                            1
                            Likes Received:
                            0
                            Reputations:
                            0
                            Доброго дня. такой вопрос "мне нужно заинжектить мою длл написанную на С# в процесс через сторонюю длл написанную на С++" возможно ли такое и как это сделать?
                             
                            1. 0xchatter

                              0xchatter New Member

                              Joined:
                              6 Nov 2016
                              Messages:
                              1
                              Likes Received:
                              0
                              Reputations:
                              0
                              Делаешь LoadLibrary твоей c#-повской dll в DLL_PROCESS_ATTACH той, что на С++, пишешь прототип (typedef int (*MyFunc) (int a, int b)) необходимой тебе для вызова функции в той же с++, потом - Прототип var=(Прототип)GetProcAddress(handle(который вернул LoadLibrary), название функции). var(int a, int b)
                               
                              1. sato

                                sato New Member

                                Joined:
                                27 Sep 2016
                                Messages:
                                3
                                Likes Received:
                                0
                                Reputations:
                                0
                                CemuleDlg dlg;
                                dlg.DoModal();
                                как узнать название функции обрабатывающей сообщения? ,никогда не пользовался этой библиотекой.
                                 
                                1. roman921

                                  roman921 Member

                                  Joined:
                                  24 May 2015
                                  Messages:
                                  316
                                  Likes Received:
                                  22
                                  Reputations:
                                  0
                                  Ребят, подскажите как вызвать функцию нативную напрямую из ядра.
                                  Пробую так:
                                  _ZwAllocateVirtualMemory zwalloc=GetProcAddress(LoadLibraryA("ntkrnlpa.exe"),"ZwAllocateVirtualMemory");
                                  zwalloc( ( HANDLE ) -1,&addr, 0, &size, MEM_COMMIT | MEM_RESERVE , PAGE_EXECUTE_READWRITE ); //тут падает.
                                   
                                  1. neviens

                                    neviens Member

                                    Joined:
                                    9 Oct 2013
                                    Messages:
                                    82
                                    Likes Received:
                                    28
                                    Reputations:
                                    3
                                    Code:
                                    typedef int (__stdcall *ptrMyFunc)(int x, int y);
                                    //...
                                    
                                    ptrMyFunc MyFunc;
                                    
                                    //...
                                    
                                    MyFunc = ExAllocatePoolWithTag(NonPagedPool, 0x40, 'kcaH');
                                    if(MyFunc)
                                    {
                                       *(int*)MyFunc = 0xc30a048d;     //lea eax, [ecx+edx]; ret;
                                       buff[0] = MyFunc(buff[0], buff[1]);
                                       ExFreePoolWithTag(MyFunc, 'kcaH');
                                    }
                                    //...
                                    
                                     
                                    1. karkajoi

                                      karkajoi Well-Known Member

                                      Joined:
                                      26 Oct 2016
                                      Messages:
                                      488
                                      Likes Received:
                                      459
                                      Reputations:
                                      8
                                      Как сделать что б программа работала в фоновом режиме ? То есть принимала команды в неактивном окне. К пример запустил программу переключился на другое окно и нажал комбинацию клавиш или клавишу и прога начала выполнять действия . Полазив по инету натыкался на темы что надо делать hook в процесс или что-то такое. Разложите по полочкам пож. с чего начать копать ?
                                       
                                      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
                                          Не совсем правильно. Есть вот такой способ: RegisterHotKey function.