Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.05.04;
Скачать: CL | DM;

Вниз

threadvar, _GetTls, FS:tlsArray   Найти похожие ветки 

 
DevilDevil ©   (2013-11-05 22:21) [40]

> Rouse_ ©   (05.11.13 18:19) [37]

Розыч, в чём наши точки зрения различаются
Ты считаешь, даже в рамках Win32 различается. Более того одни и те же поля могут и перемещаются на разные смещения в TEB в зависимости от версии Windows. Если я наврал - скажи.

Я предполагаю, что сама структура строго не регламентирована, расширяется, но имеет на Win32 режим обратной совместимости. Т.е. условно говоря на какой-то ранней версии Windows поле было вообще никак не помечено, а в современных версиях детализация полей и размер самой структуры - больше.

Я обнаружил определённые поля, названные UserReserved, которые занимают 20 байт на Win32 в диапазоне 0x700 - 0x714. Пытаюсь определить, константный ли диапазон имеют эти поля, и можно ли реально их использовать под свои нужды.

В свою очередь ты начал выводить логи. И я предположил, что это логи софта, который отслеживает занятые поля в TEB и индивидуально для каждой ОС выводит названия полей, зарегистрированных в ней. Т.е. условно говоря если мы занимаем поля из UserReserved[], то твой софт должен явно на это указать.

Теперь скажи, в чём я заблуждаюсь. И если твой (или другой твой используемый) софт с такой задачей справляется - прогони пожалуйста через него 2 моих экзешника: http://zalil.ru/34795905. Чтобы не было разночтений. Exe-шники как раз заполняют ожидаемую область.

Если конечно не сложно


 
Rouse_ ©   (2013-11-05 22:40) [41]


> Я обнаружил определённые поля, названные UserReserved, которые
> занимают 20 байт на Win32 в диапазоне 0x700 - 0x714. Пытаюсь
> определить, константный ли диапазон имеют эти поля, и можно
> ли реально их использовать под свои нужды.

Ты оперируешь неверной информацией.


> В свою очередь ты начал выводить логи. И я предположил,
> что это логи софта, который отслеживает занятые поля в TEB
> и индивидуально для каждой ОС выводит названия полей, зарегистрированных
> в ней. Т.е. условно говоря если мы занимаем поля из UserReserved[],
>  то твой софт должен явно на это указать.

Именно это он и делает.


> Теперь скажи, в чём я заблуждаюсь. И если твой (или другой
> твой используемый) софт с такой задачей справляется - прогони
> пожалуйста через него 2 моих экзешника: http://zalil.ru/34795905.
>  Чтобы не было разночтений. Exe-шники как раз заполняют
> ожидаемую область.

1. Ты оперируешь неверной информацией.
2. Я тебе все дал, включая исполняемый файл. Зачем мне прогонять, когда ты сам можешь это сделать? :)


 
Rouse_ ©   (2013-11-05 22:47) [42]

ЗЫ: если у тебя затруднения в использовании моего софта для детекта - это решаемо в аське (а судя по всему это оно и есть).
Пиши завтра - решим, но лучше через форум, конечно...


 
DevilDevil ©   (2013-11-05 22:51) [43]

> Rouse_ ©   (05.11.13 22:40) [41]

> Ты оперируешь неверной информацией.
> 1. Ты оперируешь неверной информацией.

я предполагаю, что ты обладаешь недостаточно детализированной информацией
я думаю, что описанный тобой Win32ClientInfo внутри содержит описанный мной UserReserved

> Именно это он и делает.
> 2. Я тебе все дал, включая исполняемый файл. Зачем мне прогонять,
>  когда ты сам можешь это сделать? :)


если у в программе указано, что с 0x6cc по 0x7c4 располагается Win32ClientInfo - то запускать программу действительно не имеет смысла


 
Rouse_ ©   (2013-11-05 22:53) [44]


> DevilDevil ©   (05.11.13 22:51) [43]
> я предполагаю, что ты обладаешь недостаточно детализированной
> информацией
> я думаю, что описанный тобой Win32ClientInfo внутри содержит
> описанный мной UserReserved

Думаю ты ошибаешся. Оффсет UserReserved фиксирован.


> если у в программе указано, что с 0x6cc по 0x7c4 располагается
> Win32ClientInfo - то запускать программу действительно не
> имеет смысла

Не буду спорить с твоим мнением...


 
DevilDevil ©   (2013-11-05 22:56) [45]

> Rouse_ ©   (05.11.13 22:53) [44]
> Думаю ты ошибаешся. Оффсет UserReserved фиксирован.

тогда об чём мы спорим ? )
он с 0x700 по 0x714 под x86 и с 0x878 по 0x890 под x64 ?


 
Rouse_ ©   (2013-11-05 23:24) [46]


> DevilDevil ©   (05.11.13 22:56) [45]
> тогда об чём мы спорим ? )
> он с 0x700 по 0x714 под x86 и с 0x878 по 0x890 под x64 ?

Хочешь краснеть на релизе - вперед. Ты сам так решил...


 
DevilDevil ©   (2013-11-05 23:25) [47]

Ну я спросил
Ты же сам сказал, что "Оффсет UserReserved фиксирован."


 
Rouse_ ©   (2013-11-05 23:26) [48]


> Ты же сам сказал, что "Оффсет UserReserved фиксирован."

Есесно, только я приводил немного не те оффсеты :)


 
DevilDevil ©   (2013-11-05 23:41) [49]

> Rouse_ ©   (05.11.13 23:26) [48]

ну дак ты не тяни
чему равны фиксированные оффсеты UserReserved и каков их размер ?


 
Rouse_ ©   (2013-11-05 23:48) [50]


> DevilDevil ©   (05.11.13 23:41) [49]
> ну дак ты не тяни
> чему равны фиксированные оффсеты UserReserved и каков их
> размер ?

Хм...
Писатель явно не читатель...
По моим ссылкам оффсет данного параметра тоже видимо непонятен.
Беда.
Ты не вникаешь в суть того, что тебе пишут - это смело и забавно.
Я думаю на этой ноте я прекращу нашу беседу.


 
DevilDevil ©   (2013-11-05 23:53) [51]

Ясно
По какой-то непонятной причине опять оказался я виноват :)


 
DevilDevil ©   (2013-11-06 00:14) [52]

И да
Я тут как бы тоже ссылочки приводил

http://en.wikipedia.org/wiki/Win32_Thread_Information_Block
http://source.winehq.org/source/include/winternl.h#L297
http://code.ohloh.net/file?fid=--ONVyuzSJsn_16mM5LU8NcCz2A&cid=4x157wI30IQ&s=teb&browser=Default&fp=363563&mp&pro %20jSelected=true#L172

И все они в один голос говорят о UserReserved в диапазоне с 0x700 по 0x714 под x86
И каждый из источников - православный английский. Два источника из трёх содержат полные описания структур на языке С++. Чего не скажешь например об источнике авторства redp


 
Rouse__   (2013-11-06 00:46) [53]

Крайне печально то, что дампу kd перестают верить, заменяя это ссылочками :))


 
DevilDevil ©   (2013-11-06 00:56) [54]

> Rouse__   (06.11.13 00:46) [53]

Я не сказал, что не верю. Но я и не должен верить каждому источнику. На кону ставки 3:1. Очевидно и ты, и господин redp могут ошибаться. Первое проверено временем, второго я вообще вижу первый раз

Более того, я подчеркнул, что и твоя ссылка может быть верна. Ты видел структуру Win32ClientInfo? Я нет. Но ты почему то намекаешь, что все вокруг врут, а я обязан верить тебе на слово. Нет. Это как минимум не логично


 
Rouse_ ©   (2013-11-06 16:11) [55]


> Ты видел структуру Win32ClientInfo? Я нет


#define CVKKEYCACHE                 32
#define CBKEYCACHE                  (CVKKEYCACHE >> 2)
#define CVKASYNCKEYCACHE            16
#define CBASYNCKEYCACHE             (CVKASYNCKEYCACHE >> 2)

typedef struct _CLIENTINFO {
   DWORD               CI_flags;               // Needs to be first because CSR
   DWORD               cSpins;
   DWORD               dwExpWinVer;
   DWORD       dwUnknownFlags;
   DWORD               dwCompatFlags;
   DWORD               dwTIFlags;
   PVOID       pDeskInfo;
   ULONG               ulClientDelta;
   PVOID               phkCurrent;
   DWORD               fsHooks;
   CALLBACKWND         CallbackWnd;
   DWORD               dwHookCurrent;
   int                 cInDDEMLCallback;
   HANDLE              hDdemlCallbackInst;
   PVOID               pClientThreadInfo;
   DWORD               dwHookData;
   DWORD               dwKeyCache;
   BYTE                afKeyState[CBKEYCACHE];
   DWORD               dwAsyncKeyCache;
   BYTE                afAsyncKeyState[CBASYNCKEYCACHE];
   BYTE                afAsyncKeyStateRecentDown[CBASYNCKEYCACHE];
   WORD                CodePage;
   HKL                 hKL;
   BYTE                achDbcsCF[2];
   MSG                 msgDbcsCB;
} CLIENTINFO, *PCLIENTINFO;


 
DevilDevil ©   (2013-11-06 17:24) [56]

Спустя часы разбирательств по теме в аське, пришли к выводу, что в Windows забили на поля UserReserved[] по смещению 0x700 и используют их как хотят

Зато нашли поле ArbitraryUserPointer по смещениям FS:[0x14] и GS:[0x28] соответственно. Комментарий по сему полю такой:
Normally, the ArbitraryUserPointer field is reserved exclusively for use by user mode as a sort of “free TLS slot” that is available at a known location for every thread.

В вики скромнее:
FS:[0x14] 4 Win9x and NT Arbitrary data slot

Но в любом случае - именно то, что нам (мне) нужно. Легально, совместимо, по константному смещению.

В связи с этим хочу поблагодарить светлую голову Розыча, а так же всех участвующих - за желание разобраться, помочь, за продуктивную дискуссию


 
Rouse_ ©   (2013-11-06 17:43) [57]

Незчт, главное что я смог до тебя донести информацию в правильном виде, особливо по поводу полей TEB под разными ОС :)


 
DevilDevil ©   (2013-11-06 22:46) [58]

> Rouse_ ©   (06.11.13 17:43) [57]
> Незчт, главное что я смог до тебя донести информацию в правильном
> виде, особливо по поводу полей TEB под разными ОС :)


ну TEB как таковой мне не был интересен
нужно было только поле, которое можно юзать
а вообще интересно, да



Страницы: 1 2 вся ветка

Текущий архив: 2014.05.04;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.008 c
15-1383748436
SergP
2013-11-06 18:33
2014.05.04
Динамический массив записей со строками. подскажите


15-1383220486
DevilDevil
2013-10-31 15:54
2014.05.04
СТРОКИ НЕ ПОТОКОБЕЗОПАСНЫ


2-1374653973
delphistorm
2013-07-24 12:19
2014.05.04
Как правильнее?


15-1383518806
DevilDevil
2013-11-04 02:46
2014.05.04
threadvar, _GetTls, FS:tlsArray


2-1374665706
Стас258
2013-07-24 15:35
2014.05.04
Как в мемо проймать прокрутку?