ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 13.05.2009, 00:54
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

А я что постом выше написал в блоке кода?)
 
Ответить с цитированием

  #12  
Старый 13.05.2009, 01:06
Gar|k
Постоянный
Регистрация: 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  
Старый 13.05.2009, 01:23
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Я, видимо, не настолько хорошо знаю си, чтобы найти какое-либо существенное отличие этого кода от того, что я написал. Да и зачем структуре в 44 байта буфер в 50000?
 
Ответить с цитированием

  #14  
Старый 13.05.2009, 01:32
Gar|k
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #15  
Старый 13.05.2009, 02:12
d_x
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..
 
Ответить с цитированием

  #16  
Старый 13.05.2009, 11:16
SmanxX1
Новичок
Регистрация: 04.08.2008
Сообщений: 29
Провел на форуме:
167800

Репутация: 15
По умолчанию

Цитата:
Сообщение от Gar|k  
лан закроем тему нашу
но вот как заставить ссылатся структуру другой адрес пока не придумал ) а тут тупо копирование ( похоже...

простым языком я хочу "наложить" свою структуру на уже имеющиеся данные ...

эх бум искать, уже хоть что-то
Доо, это прям анреальная задача. xD
Все что тебе нужно знать - это как работают перфикс rep и команды loads[b,d,w]/stos[b,d,w] или аналогичные movs[b,d,w].
 
Ответить с цитированием

  #17  
Старый 13.05.2009, 21:02
Gar|k
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #18  
Старый 13.05.2009, 21:54
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Цитата:
а в твоем примере драгоценные байты и такты тратятся на add
хм а можно интересно offset buff + offset s.eee

оказывается можно!!!

mov edi,offset buf + offset s.eee

работает!! )
Ты посты невнимательно читаешь)
 
Ответить с цитированием

  #19  
Старый 13.05.2009, 22:11
SmanxX1
Новичок
Регистрация: 04.08.2008
Сообщений: 29
Провел на форуме:
167800

Репутация: 15
По умолчанию

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

  #20  
Старый 13.05.2009, 22:53
St0nX
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме:
2823587

Репутация: 106
Отправить сообщение для St0nX с помощью ICQ
По умолчанию

Цитата:
А как же 8ми битные регистры в 64ех разрядной архитектуре? (rax,rbx,rcx,rdx и т.д.). Пора бы их задействовать, т.к. процессоры с 32ух разрядной архитектурой уже как бэ давно не выпускаются.
Ну и зачем это? Автор добивался наоборот, что бы каждый заюзать мог. Да и написанное под 32 будет нормально пахать и под 64.

PS: ТС ты мазахист Большое спс за ддлку
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование регулярных выражений в ассемблере. BUG(O)R Авторские статьи 0 15.09.2006 15:40



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ