Если мне не изменяет память, то в безоконных приложениях и неактивных окнах хоткеи не работают, могу и ошибаться)
Скомпилировал 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. Подскажите, где ошибка?
У инфектора плохо с математикой. Не верно получает пишет адрес MessageBoxA, нужно сделать + 0xA. Почему у тебя вышла кривая EP на семпле я сказать не могу, тестил под W7x64, обрабатывал сапера из WinXP, ЕП встала норм, стаб записался, но колл как я уже сказал выше был на неверный адрес. p.s.: компиль с параметром -DYNAMICBASE, чтобы ASLR не подрубался
Благодарю за ответ. К сожалению, не получилось. Провожу отладку инспектора, нашел возможно причинное место. После кода: Code: entry = (char*)GetEntryOffset(mapping); в дебагере в значении entry написано: неправильный указатель. GetEntryOffset вроде бы правильный указатель возвращает. П.С. На windows 10 не запускается. Если скомпилировать без: Code: #pragma comment(linker, "/ENTRY:main /MERGE:.rdata=.text /MERGE:.data=.text /ALIGN:512") то инфектор работает. Может в этом проблема?
Не так давно начал изучать C++ и всё было понятно, но возник такой вопрос:как написать алгоритм получение вещественных чисел, например от 0.01 до 0.5 ? Заранее спасибо.
Есть ещё один вопрос,а может C++ использовать числа с 30 знаками после запятой?Если нет,то какой максимум есть?
Зависит от архитектуры и разрядности компилятора. Есть стандартные типы, например float. Лучше всего прочитать тут: https://en.wikipedia.org/wiki/Single-precision_floating-point_format Для более высоких точностей возможно потребуется свою структуру данных создавать.
Сколько будет чисел после запятой в MSVC2017? Так возьми и пощитай: Code: #include <stdlib.h> #include <stdio.h> int main() { double e = 1.0; printf("%.30f\n", e / 3.0); } Сколько троек будет, такая и точность. Если надо больше, подключай стороннюю библиотеку для больших чисел с запятой (MAPM, MPFR, итд).
Искал в интернете как установить MPIR на visual studio 2017 community,так и не нашёл нормальной инструкции,не могли бы вы мне объяснить как это можно сделать?
На 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 и запустить.
В VS 2017 community получилось чуть-чуть иначе,но по сути также,короче,спасибо за помощь,а то уже третий день не мог разобраться))))