Objects in memory
Jifunze na zoezi la AWS Hacking:Mafunzo ya HackTricks AWS Timu Nyekundu Mtaalam (ARTE)
Jifunze na zoezi la GCP Hacking:
Mafunzo ya HackTricks GCP Timu Nyekundu Mtaalam (GRTE)
CFRuntimeClass
Vitu vya CF* vinatoka kwa CoreFOundation, ambayo hutoa zaidi ya darasa 50 za vitu kama vile CFString
, CFNumber
au CFAllocatior
.
Darasa zote hizi ni mifano ya darasa CFRuntimeClass
, ambayo ikichukuliwa inarudisha kiashiria kwa __CFRuntimeClassTable
. CFRuntimeClass imedefiniwa katika CFRuntime.h:
Objective-C
Sehemu za kumbukumbu zinazotumiwa
Kiwango kikubwa cha data inayotumiwa na runtime ya ObjectiveC itabadilika wakati wa utekelezaji, hivyo hutumia baadhi ya sehemu kutoka kwenye sehemu ya __DATA kwenye kumbukumbu:
__objc_msgrefs
(message_ref_t
): Marejeleo ya ujumbe__objc_ivar
(ivar
): Vipengele vya kielelezo__objc_data
(...
): Data inayoweza kubadilishwa__objc_classrefs
(Class
): Marejeleo ya darasa__objc_superrefs
(Class
): Marejeleo ya darasa la juu__objc_protorefs
(protocol_t *
): Marejeleo ya itifaki__objc_selrefs
(SEL
): Marejeleo ya chaguo__objc_const
(...
): Data ya darasar/o
na nyingine (kwa matumaini) data ya kudumu__objc_imageinfo
(version, flags
): Hutumiwa wakati wa kupakia picha: Toleo kwa sasa ni0
; Bendera hufafanua msaada wa GC ulioandaliwa mapema, n.k.__objc_protolist
(protocol_t *
): Orodha ya itifaki__objc_nlcatlist
(category_t
): Kiashiria kwa Jamii Zisizo za uvivu zilizoelezwa katika faili hii__objc_catlist
(category_t
): Kiashiria kwa Jamii zilizoelezwa katika faili hii__objc_nlclslist
(classref_t
): Kiashiria kwa Darasa za Objective-C Zisizo za uvivu zilizoelezwa katika faili hii__objc_classlist
(classref_t
): Viashiria kwa darasa zote za Objective-C zilizoelezwa katika faili hii
Pia hutumia sehemu chache katika sehemu ya __TEXT
kuhifadhi thamani za kudumu ambazo haiwezekani kuandika kwenye sehemu hii:
__objc_methname
(C-String): Majina ya mbinu__objc_classname
(C-String): Majina ya darasa__objc_methtype
(C-String): Aina za mbinu
Ufichamishaji wa Aina
Objective-C hutumia ufichamishaji fulani kuweka alama aina za chaguo na za pembejeo za aina rahisi na ngumu:
Aina za msingi hutumia herufi yao ya kwanza ya aina
i
kwaint
,c
kwachar
,l
kwalong
... na hutumia herufi kubwa ikiwa ni ishara ya kutokuwa na saini (L
kwaunsigned Long
).Aina nyingine za data ambazo herufi zake hutumiwa au ni maalum, hutumia herufi au alama nyingine kama
q
kwalong long
,b
kwabitfields
,B
kwabooleans
,#
kwaclasses
,@
kwaid
,*
kwachar pointers
,^
kwapointers
za jumla na?
kwaisiyojulikana
.Vipindi, muundo na muungano hutumia
[
,{
na(
Mfano wa Tangazo la Mbinu
Mchaguzi ungekuwa processString:withOptions:andError:
Aina ya Ufichamishi
id
imefichamishwa kama@
char *
imefichamishwa kama*
Ufichamishi kamili wa aina kwa njia ni:
Uchambuzi wa Kina
Aina ya Kurudi (
NSString *
): Imeandikwa kama@
na urefu wa 24self
(kifaa cha kielezo): Imeandikwa kama@
, kwenye nafasi ya 0_cmd
(chaguo): Imeandikwa kama:
, kwenye nafasi ya 8Hoja ya Kwanza (
char * input
): Imeandikwa kama*
, kwenye nafasi ya 16Hoja ya Pili (
NSDictionary * options
): Imeandikwa kama@
, kwenye nafasi ya 20Hoja ya Tatu (
NSError ** error
): Imeandikwa kama^@
, kwenye nafasi ya 24
Kwa chaguo + uandishi unaweza kujenga upya njia.
Madarasa
Madarasa katika Objective-C ni muundo wenye mali, pointa za njia... Inawezekana kupata muundo objc_class
katika michocheo:
Darasa hili hutumia baadhi ya bits za uga wa isa kuonyesha taarifa fulani kuhusu darasa hilo.
Kisha, muundo una pointer kwenda kwa muundo class_ro_t
uliowekwa kwenye diski ambao una sifa za darasa kama jina lake, mbinu za msingi, mali na variables za kesi.
Wakati wa uendeshaji na muundo wa ziada class_rw_t
hutumiwa ukiwa na pointers ambazo zinaweza kubadilishwa kama vile mbinu, itifaki, mali...
Last updated