|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.06.2016, 15:48 | #1 |
Регистрация: 30.08.2009
Сообщений: 7
|
вопрос delphi -> ReadProcessMemory + Double - как вывести?
15:39 22.06.2016
Всем здраствуйте. Прошу помощи. Возник вопрос. пишу своего бота. вижу в AtrMany и CheatEngine 6.4. нужную ячейку. в CheatEngine при отсеивании и поиске указателя вижу вверху combo_box там можно выбрать тип числа -что мы хотим увидеть и при выборе: 4 byte: 2405181686 а типа double - видим то что и должны видеть ( то что в ячейке лежит ).. double: 2774,88 в делфи у меня получается считывыать ТОЛЬКО тип 4byte. ( исходник ниже ) ( т.е на форме лежит лейбл куда пишется то что беру из ячейки памяти). и вижу я там число 4 byte: 2405181686 а в ячейке тестовой программы лежит ( double: 2774,88 ) - и если я его меняю, то и в CheatEngine - число тоже меняется, и если я в CheatEngine меняю тип числа на 4byte - то и вижу тоже что и на своей форме в лейбле... возник вопрос ( ищу уже давно ответ ): как считать данные типа double. или каким алгоритмом из числа 4byte = 2405181686 получить число типа double: 2774,88 т.е. как правильно считать из памяти число с плавающей точкой типа double. ------- ниже исходинк делфи ( 2006, winxp_sp3) форма имеет 2 лейбла и один таймер. вся инфа выводится в 1-й лебл. -------------- Код:
как вывести число в формате Double с точкой.? спасибо. Последний раз редактировалось Вадим Мошев; 24.06.2016 в 05:10. |
22.06.2016, 16:47 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
а ты не пробовал сделать так
Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 22.06.2016 в 16:49. |
22.06.2016, 23:30 | #3 |
Регистрация: 30.08.2009
Сообщений: 7
|
Спасибо за участие, но этот вариант я пробовал в 1- ю очередь. И либо я не понял как это сделать, либо этот вариант не подошол. Если есть возможность напишите пример реализации кода пожалуйста. Т. К. Код я уже написал выше - если не сложно - укажите как это правильно реализовать. Т.к. именно в этом и состоит вопрос: как это сделать? Если тип сингл, то как будет выглядеть строка вЫвода? Была: label1.Caption := FloatToStr(Adress);// тип word А как вывести тип single? Ибо вместо числа с точкой из ячейки "2774,88" Выводится число: "2405181686" И стоит вопрос - как же вывести число в правильном формате? Последний раз редактировалось doneto; 23.06.2016 в 00:46. |
23.06.2016, 00:50 | #4 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Код:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
23.06.2016, 10:46 | #5 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
для учебы (пока не научишься делать правильно) лучше не крохоборствовать
для КАЖДОЙ из операций чтения памяти выделить СВОЮ переменную и давать ей ПРАВИЛЬНЫЕ типы. Заодно появится возможность и проверить (отследить) переходы адресов. (Вывести ВСЕ адреса использованные в цепочке). Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 23.06.2016 в 14:10. |
24.06.2016, 00:37 | #6 |
Регистрация: 30.08.2009
Сообщений: 7
|
Спасибо. Буду пробовать. Пытался понять процедуру ReadProcessMemory winApi MSDN на сайте майкрософта, Но там только скудное описание без примеров, на ангийском языке. А все примеры в сети под целые типы.
Например в примере кот я привел ( котрорый взял из сети и идаптировал путем СаМоТыка в конце написана переменная readwrite. А в примере min@y™ Цифровой кот Написано nil ReadProcessMemory(hProc, pointer(Adress+$2fc), @buff, sizeof(buff), nil) Спасибо за участие. Если есть возможность дайте ссылку на нормальный хелп по этой процедуре. Что бы хоть примерно понимать какие операторы для каких действий нужны. Спасибо. |
24.06.2016, 01:06 | #7 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
И лучшего хэлпа, чем этот, в природе нет! Остальное - высеры для блондинок и чайников или тупой гугол-транслэйт. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
24.06.2016, 23:51 | #8 |
Регистрация: 30.08.2009
Сообщений: 7
|
Спасибо. Все получилось. Основываясь на ваших постах видоизменил свой мсходник и все прекрасно прочиталось и вывелось на моей форме в лейбл. Задача почти решена. Т.е. решена, но все же не совсем я понял , как же перевести из 4 байта в double. Цифры есть, а математическую ф-лу для перевода я не нашел( в сети и по форумам).
Но как то же каклькуляторы это делают, значит и формула есть.... Спасибо за помощь. p.s. К сожалению не нашел как сказать спасибо, за оказанную помощь. ( т.е. лайк или +). Та что напишу словами: спасибо за помощь. Последний раз редактировалось doneto; 25.06.2016 в 00:20. Причина: дополнил |
25.06.2016, 03:05 | #9 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
25.06.2016, 11:49 | #10 |
Регистрация: 30.08.2009
Сообщений: 7
|
Т.к. я кода код снета брал, то мог читать только 4 байта , т.е. целое число. В проге cheatEngene выбирал тип 4 байта и видел число( выше описано), а когда менял его на тип доубл, то видел уже число с точкой - как и в тестовой программе. Сейчас я уже получаю число типа доубл, с точкой, но числа каким- то образом высчитываются...
--------- в CheatEngine при отсеивании и поиске указателя вижу вверху combo_box там можно выбрать тип числа -что мы хотим увидеть и при выборе: 4 byte: 2405181686 а типа double - видим то что и должны видеть ( то что в ячейке лежит ).. double: 2774,88 ------- Сам то код как получить тип доубл из ячеки уже есть. Но что почитать что бы понять как перевести число из 4 байта в доубл , чтобы получилось число 2774,88 Хотя это уже только для знания теории. Практическое применение уже осуществлено. Переводы между системами счисления не подходят, т.к. при выбоборе типа float,real,я вижу другие числа, хотя тоже с точкой. Значит 4 байта float, single,real Отличаются от 8 байтов double И какой формулой эти числа переводят - вот это вопрос. Спасибо. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос от новичка по ReadProcessMemory | Drabadan | Общие вопросы Delphi | 1 | 21.03.2014 00:56 |
Вопрос по ReadProcessMemory | Alexey_68 | Общие вопросы C/C++ | 5 | 28.03.2013 03:33 |
File -> double [вопрос] | Tahoma | Visual C++ | 5 | 02.10.2012 19:13 |
Как вывести long double на экран при использование компилятора Intel w_cproc_p_11.1.065 под Visual Studio | FPU128bit | Visual C++ | 9 | 13.05.2010 10:49 |
Вопрос по setiosflags() и double | fs444 | Общие вопросы C/C++ | 1 | 25.12.2009 11:37 |