ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

13.05.2009, 00:54
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
А я что постом выше написал в блоке кода?)
|
|
|

13.05.2009, 01:06
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
ну это я тоже знаю, что можно делать структуры данных и туда значения заносить.
но допустим буффер - 50000 байт
заголовок пакета 44
unsigned char buffer[50000]; // 50000 выделеные в памяти (.data? buffer db 50000 dup(?))
str_paket *paket; // указатель на структуру пакета
paket=(str_paket *)&buffer[0]; // теперь указатель ссылкается на смещение buffer в памяти (offset buffer)
и мы можем крута и удобно юзать структуру ниче не перемещая не копируя и не заполняя
pkaet->zagolovok будет эквивалентно по offset buffer + 4
pkaet->zagolovok2 offset buffer + 8 там и тд
.... эм вопрос все тот же
|
|
|

13.05.2009, 01:23
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Я, видимо, не настолько хорошо знаю си, чтобы найти какое-либо существенное отличие этого кода от того, что я написал. Да и зачем структуре в 44 байта буфер в 50000?
|
|
|

13.05.2009, 01:32
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
лан закроем тему нашу 
пока нашел вот нечно подобное что я хочу получить
Применить определенную Вами структуру можно также и к набору дан-
ных, который создан не Вами. Например, получить доступ к первым
22 байтам PSP (префикс программного сегмента), которые MS-DOS по-
мещает в начало выполняемых файлов, можно через следующую струк-
туру:
PSP STRUC
INT32 DB 2 DUP (?) ; 2 байта
MemSize DW (?) ; 1 слово
Reserved DB (?) ; 1 байт
DOSCall DB 5 DUP (?) ; 5 байтов
TermVctr DW 2 DUP (?) ; 2 слова
BreakVctr DW 2 DUP (?) ; 2 слова
ErrorVctr DW 2 DUP (?) ; 2 слова
PSP ENDS
Получить доступ к PSP можно при помощи следующего программного
фрагмента:
mov di,0 ; PSP начинается со смещения 0
push cs ; сегмент PSP в cs
pop ds ; сегмент PSP -> ds
mov si,[di].MemSize ; размер памяти программы ->
; экстра сегмент
но вот как заставить ссылатся структуру другой адрес пока не придумал ) а тут тупо копирование ( похоже...
простым языком я хочу "наложить" свою структуру на уже имеющиеся данные ...
эх бум искать, уже хоть что-то
Последний раз редактировалось Gar|k; 13.05.2009 в 01:36..
|
|
|

13.05.2009, 02:12
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Как вариант придумал такое (не очень удобно, но копирования не производится и в масме работает):
Код:
s STRUCT ;описание структуры
aaaa WORD ?
bbbb WORD ?
cccc BYTE ?
dddd DWORD ?
eeee BYTE 8 dup(?)
s ENDS
.data ;имеющиеся у нас данные
buf db "aa"
db "bb"
db "c"
db "dddd"
db "eeeeeeee"
data ?
temp db 10 dup(?)
.code
start:
mov edi,offset buf
add edi,offset s.eeee ;получили доступ к последнему полю без какого-либо копирования данных
;это указывает на байты "eeeeeeee".
;или
mov edi,offset buf+offset s.bbbb
;если где-то нужно использовать структуру из памяти целиком, то можно написать просто offset buf...
Наверняка можно как-то более красиво написать)
Последний раз редактировалось d_x; 13.05.2009 в 08:19..
|
|
|

13.05.2009, 11:16
|
|
Новичок
Регистрация: 04.08.2008
Сообщений: 29
Провел на форуме: 167800
Репутация:
15
|
|
Сообщение от Gar|k
лан закроем тему нашу 
но вот как заставить ссылатся структуру другой адрес пока не придумал ) а тут тупо копирование ( похоже...
простым языком я хочу "наложить" свою структуру на уже имеющиеся данные ...
эх бум искать, уже хоть что-то
Доо, это прям анреальная задача. xD
Все что тебе нужно знать - это как работают перфикс rep и команды loads[b,d,w]/stos[b,d,w] или аналогичные movs[b,d,w].
|
|
|

13.05.2009, 21:02
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
2 SmanxX1
это конечно все хорошо, но одна закавыка - данные копируются...
мне правда очень понравилась функция SCAS - полезная
2 d_x
пока ниче круче констант equ не придумал... например
psp_INT32 equ 0
psp_MemSize equ 2
psp_Reserved equ 4
потом
lea esi,buffer
mov eax,[esi+psp_MemSize]
тоесть описывать смещения в структуре... наглядно выходит, но не очень удобно
всеравно все сводится к работе с регистрами а туда больше 4 байт запихнуть не получится... а так хоть наглядно
а в твоем примере драгоценные байты и такты тратятся на add
хм а можно интересно offset buff + offset s.eee
оказывается можно!!!
mov edi,offset buf + offset s.eee
работает!! )
Последний раз редактировалось Gar|k; 13.05.2009 в 21:10..
|
|
|

13.05.2009, 21:54
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
а в твоем примере драгоценные байты и такты тратятся на add
хм а можно интересно offset buff + offset s.eee
оказывается можно!!!
mov edi,offset buf + offset s.eee
работает!! )
Ты посты невнимательно читаешь)
|
|
|

13.05.2009, 22:11
|
|
Новичок
Регистрация: 04.08.2008
Сообщений: 29
Провел на форуме: 167800
Репутация:
15
|
|
Сообщение от Gar|k
это конечно все хорошо, но одна закавыка - данные копируются...
И что? Ты представляешь себе альтернативный способ, хотябы в теории? Память все же не абстрактное пространство, в любом случаее, если что-то куда-то "перенести", то на прежднем месте что-нибудь останится, пусть даже те же нули.
Сообщение от Gar|k
...работе с регистрами а туда больше 4 байт запихнуть не получится
А как же 8ми битные регистры в 64ех разрядной архитектуре? (rax,rbx,rcx,rdx и т.д.). Пора бы их задействовать, т.к. процессоры с 32ух разрядной архитектурой уже как бэ давно не выпускаются.
(ну и что, что полно юзеров с древними компами, нужно двигать прогресс и неи**т D)
|
|
|

13.05.2009, 22:53
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
А как же 8ми битные регистры в 64ех разрядной архитектуре? (rax,rbx,rcx,rdx и т.д.). Пора бы их задействовать, т.к. процессоры с 32ух разрядной архитектурой уже как бэ давно не выпускаются.
Ну и зачем это? Автор добивался наоборот, что бы каждый заюзать мог. Да и написанное под 32 будет нормально пахать и под 64.
PS: ТС ты мазахист  Большое спс за ддлку
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|