[ 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]
     
  2. tailer73

    tailer73 New Member

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

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

    qwerty283003 New Member

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

    Aleks90 New Member

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

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    _________________________
  6. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    _________________________
    qwerty283003 likes this.
  7. qwerty283003

    qwerty283003 New Member

    Joined:
    30 Mar 2016
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
  8. 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
     
  9. binarymaster

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

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

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

    shellcoder New Member

    Joined:
    12 Sep 2016
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    программирую на си. хочу написать что то с библиотекой gtk. Есть какая нибудь книжка толковая или цикл статей?
     
  11. 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'; но результат тот же.
     
  12. 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.
  13. Aleks12345

    Aleks12345 New Member

    Joined:
    26 Oct 2016
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Доброго дня. такой вопрос "мне нужно заинжектить мою длл написанную на С# в процесс через сторонюю длл написанную на С++" возможно ли такое и как это сделать?
     
  14. 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)
     
  15. sato

    sato New Member

    Joined:
    27 Sep 2016
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    CemuleDlg dlg;
    dlg.DoModal();
    как узнать название функции обрабатывающей сообщения? ,никогда не пользовался этой библиотекой.
     
  16. 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 ); //тут падает.
     
  17. 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');
    }
    //...
    
     
  18. karkajoi

    karkajoi Well-Known Member

    Joined:
    26 Oct 2016
    Messages:
    488
    Likes Received:
    459
    Reputations:
    8
    Как сделать что б программа работала в фоновом режиме ? То есть принимала команды в неактивном окне. К пример запустил программу переключился на другое окно и нажал комбинацию клавиш или клавишу и прога начала выполнять действия . Полазив по инету натыкался на темы что надо делать hook в процесс или что-то такое. Разложите по полочкам пож. с чего начать копать ?
     
  19. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Все правильно читал. Нужно установить глобальный хук на клаву.
     
  20. GRRRL Power

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

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84