интересует формат записей таблицы.
Ну так в 2015 студии можно собирать такие бинарники да разобрать, пример приатачил.
ConsoleApplication2.zip
Code:dumpbin /loadconfig ConsoleApplication2.exe Dump of file ConsoleApplication2.exe File Type: EXECUTABLE IMAGE Section contains the following load config: 0000005C size 0 time date stamp 0.00 Version 0 GlobalFlags Clear 0 GlobalFlags Set 0 Critical Section Default Timeout 0 Decommit Free Block Threshold 0 Decommit Total Free Threshold 00000000 Lock Prefix Table 0 Maximum Allocation Size 0 Virtual Memory Threshold 0 Process Heap Flags 0 Process Affinity Mask 0 CSD Version 0000 Reserved 00000000 Edit list 00403004 Security Cookie 00402200 Safe Exception Handler Table 1 Safe Exception Handler Count 004020C8 Guard CF address of check-function pointer 00000000 Guard CF address of dispatch-function pointer 004020F8 Guard CF function table A Guard CF function count 00003500 Guard Flags CF Instrumented FID table present Protect delayload IAT Delayload IAT in its own section Safe Exception Handler Table Address -------- 00401A50 Guard CF Function Table Address -------- 004010C0 004010E0 00401180 00401190 00401320 00401760 00401790 00401940 004019B0 00401A50 Summary 1000 .data 1000 .rdata 1000 .reloc 1000 .rsrc 1000 .text
High tech, low life
Dark Koder (31-01-2016)
вопрос именно о формате таблицы Guard CF Function Table
ntdll.dll w10 64
..
.rdata:00000001801057F0 08 E0 0F 80 01 00 00 00 dq offset __guard_fids_table ; GuardCFFunctionTable
.rdata:00000001801057F8 66 07 00 00 00 00 00 00 dq 766h ; GuardCFFunctionCount
..
.rdata:00000001800FE008 10 10 00 00 __guard_fids_table dd rva RtlFindClearBits
.rdata:00000001800FE008 ; DATA XREF: .rdata:00000001801057F0o
.rdata:00000001800FE00C 00 40 15 00 ?! dd rva stru_180153FF8.UnwindInfo
.rdata:00000001800FE010 00 00 80 17 ?! dd 17800000h
.rdata:00000001800FE014 00 00 00 20 ?! dd 20000000h
.rdata:00000001800FE018 1C 00 00 00 ?! dd rva unk_18000001C
.rdata:00000001800FE01C A0 25 00 00 dd rva RtlpMergeSecurityAttributeInformation
.rdata:00000001800FE020 00 90 2A 00 dd 2A9000h
.rdata:00000001800FE024 00 00 B0 2E dd 2EB00000h
.rdata:00000001800FE028 00 00 00 F0 dd 0F0000000h
.rdata:00000001800FE02C 2F 00 00 00 dd rva unk_18000002F
..
из 5ти записей элемента таблицы очевидна только первая.
Last edited by nosos; 28-01-2016 at 11:00.
Dark Koder (31-01-2016)
Windows 10 Control Flow Guard Internals
Windows New Security Features - Control Flow Guard
Exploring Control Flow Guard in Windows 10 - Trend Micro
Matin Abadi, “Control0Flow Integrity - Principle, Implementations, and Applications
Zhang Yunhai, BYPASS CONTROL FLOW GUARD COMPREHENSIVELY
deroko of ARTeam, Sample code how to use Control Flow Guard to intercept all indirect calls/jumps in CFG enabled binaries (ZIP)
http://deroko.phearless.org/cfgicall.txt
Dark Koder (31-01-2016) Darwin (29-01-2016) JKornev (29-01-2016) ximera (29-01-2016)
а в каком из документов ответ на вопрос? я довольно быстро пролистал их все но описание элементов таблицы GuardCFFunctionTable не увидел.
Вам скинули достаточно информации, в чём ваша проблема? У вас возникли трудности с реверсом определённых полей структуры или вы ещё не запускали отладчик?
High tech, low life
я ведь задал обсалютно конткретный вопрос по конкректной структуре. не про то как работает механизм CFG, где его слабости, как его хукать, обходить и тд. а именно по конкректной структуре. в результате мне подкинули документов которые не сложно гуглятся и большинство из которых я уже видел до того как задать вопрос. вопрос задавался именно по той конкректной структуре информации по которой я найти не смог. реверс и отладчик тут вообще при чем? если бы у меня было - время|возможность|желание| пособность|квалификация это реверсить я бы не задавал вопрос вообще а сидел и реверсил. ваше возмущение по поводу того что мне яко бы все выдали а я чем то недоволен по меньшей мере неадекватно. а проблема очевидна но специально для вас скажу. проблема в том что я самостоятельно не смог найти описание элементов таблицы GuardCFFunctionTable (кроме первого элемента смысл которого очевиден). что бы мой ответ не покзался вам неблагодарно агрессивным (мне думается он вам именно таким покажется) поставлю точки над и - я не требую отвечать на мой вопрос. я не прошу (не являюсь просителем) отвечать на мой вопрос. я предлагаю ответить на мой вопрос тому кто может и считает нужным это сделать .
Last edited by nosos; 29-01-2016 at 11:46.
Dark Koder (31-01-2016)