Поинтеры.
Добрый день.
Мне в функцию приходит извне byte ptr в котором находится адрес на нужную мне функцию в памяти, приблизительно это выглядит так: buf1:byte ptr = [искомый адрес функции] buf2:byte ptr = varptr buf1 теперь в buf2[0], buf2[1], buf2[2], buf2[3] зашит адрес в памяти по которому находится buf1. Вот этот buf2 мне и приходит в функцию (доступа к самому buf1 нет, он формируется в другом приложении в которое я делаю инжект длл, я привел его для наглядности) function test(buf2:byte ptr) как получить buf1? т.е сделать обратную операцию от varptr Очень долго мучаюсь, единственное что придумал - делать ReadMemory по адресу в buf2 но это жуткие костыли, помогите сделать красиво... |
Ответ: Поинтеры.
Апну
|
Ответ: Поинтеры.
Цитата:
|
Ответ: Поинтеры.
Ошибка - ожидается выражение, а найден ptr
или я не так понял? Можешь код привести? Strict Framework BRL.system Import BRL.StandardIO Import BRL.Retro Global buf1:Byte Ptr = MemAlloc(4) buf1[0]=1 buf1[1]=2 buf1[2]=3 buf1[3]=4 Global buf2:Byte Ptr = Varptr buf1 Global buf3:Byte Ptr = Ptr buf2 |
Ответ: Поинтеры.
Надо указать тип того, на что указывает поинтер, это есть в официальной документации.
Varptr - возвращает адрес памяти а Ptr - возвращает указатель https://en.wikibooks.org/wiki/BlitzM...guage/Pointers |
Ответ: Поинтеры.
В итоге в buf3 получается адрес, а не содержимое...
Strict Framework BRL.system Import BRL.StandardIO Import BRL.Retro Global buf1:Byte Ptr = MemAlloc(4) buf1[0]=1 buf1[1]=2 buf1[2]=3 buf1[3]=4 Global buf2:Byte Ptr = Varptr buf1 Global buf3:Byte Ptr = Byte Ptr buf2 Print Hex(buf3[0]) Print Hex(buf3[1]) |
Ответ: Поинтеры.
В итоге в buf3 получается адрес, а не содержимое...
Strict Framework BRL.system Import BRL.StandardIO Import BRL.Retro Global buf1:Byte Ptr = MemAlloc(4) buf1[0]=1 buf1[1]=2 buf1[2]=3 buf1[3]=4 Global buf2:Byte Ptr = Varptr buf1[0] Global buf3:Byte Ptr = Byte Ptr buf2 Print Hex(buf3[0]) Print Hex(buf3[1]) |
Часовой пояс GMT +4, время: 07:11. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot