macOS IPC - Inter Process Communication
Ujumbe wa Mach kupitia Bandari
Taarifa Msingi
Mach hutumia kazi kama kitengo kidogo cha kugawana rasilimali, na kila kazi inaweza kuwa na vijiti vingi. Hizi kazi na vijiti vinahusishwa 1:1 na michakato na vijiti vya POSIX.
Mawasiliano kati ya kazi hufanyika kupitia Mawasiliano ya Michakato ya Mach (IPC), kwa kutumia njia za mawasiliano ya njia moja. Ujumbe hupitishwa kati ya bandari, ambazo hufanya kama aina ya safu za ujumbe zinazosimamiwa na kernel.
Bandari ni elementi msingi ya Mach IPC. Inaweza kutumika kutuma ujumbe na kupokea.
Kila mchakato una jedwali la IPC, ambapo inawezekana kupata bandari za mach za mchakato. Jina la bandari ya mach ni kweli nambari (kielekezi kwa kitu cha kernel).
Mchakato pia unaweza kutuma jina la bandari na baadhi ya haki kwa kazi tofauti na kernel itafanya kuingia hii katika jedwali la IPC la kazi nyingine ionekane.
Haki za Bandari
Haki za bandari, ambazo hufafanua ni operesheni gani kazi inaweza kufanya, ni muhimu katika mawasiliano haya. Haki za bandari zinaweza kuwa (maelezo kutoka hapa):
Haki ya Kupokea, ambayo inaruhusu kupokea ujumbe uliotumwa kwa bandari. Bandari za Mach ni safu za MPSC (wazalishaji wengi, mtumiaji mmoja) safu, ambayo inamaanisha kwamba inaweza kuwepo haki moja ya kupokea kwa kila bandari katika mfumo mzima (tofauti na mabomba, ambapo michakato mingi inaweza kushikilia viashiria vya faili kwa mwisho wa kusoma wa bomba moja).
Kazi yenye Haki ya Kupokea inaweza kupokea ujumbe na kuunda Haki za Kutuma, kuruhusu kutuma ujumbe. Awali tu kazi yenyewe ina Haki ya Kupokea juu ya bandari yake.
Ikiwa mmiliki wa Haki ya Kupokea anakufa au kuifunga, haki ya kutuma inakuwa bure (jina lililokufa).
Haki ya Kutuma, inayoruhusu kutuma ujumbe kwa bandari.
Haki ya Kutuma inaweza kufanyiwa nakala ili kazi ikiwa na Haki ya Kutuma inaweza kufanya nakala ya haki hiyo na kuipatia kazi ya tatu.
Kumbuka kwamba haki za bandari pia zinaweza kupitishwa kupitia ujumbe wa Mac.
Haki ya Kutuma mara moja, inayoruhusu kutuma ujumbe moja kwa bandari na kisha kutoweka.
Haki hii haiwezi kufanyiwa nakala, lakini inaweza kuhamishwa.
Haki ya Seti ya Bandari, inayotambulisha seti ya bandari badala ya bandari moja. Kutoa ujumbe kutoka kwa seti ya bandari kunatoa ujumbe kutoka kwa moja ya bandari inayojumuisha. Seti za bandari zinaweza kutumika kusikiliza bandari kadhaa kwa wakati mmoja, kama
chagua
/piga kura
/epoll
/kqueue
katika Unix.Jina lililokufa, ambalo sio haki halisi ya bandari, bali ni nafasi tupu. Wakati bandari inaharibiwa, haki zote za bandari zilizopo kwa bandari hiyo zinageuka kuwa majina yaliyokufa.
Kazi zinaweza kusafirisha HAKI ZA KUTUMA kwa wengine, kuwaruhusu kutuma ujumbe nyuma. HAKI ZA KUTUMA pia zinaweza kufanyiwa nakala, hivyo kazi inaweza kuzidisha na kumpa haki ya tatu. Hii, pamoja na mchakato wa kati unaojulikana kama seva ya bootstrap, inaruhusu mawasiliano yenye ufanisi kati ya kazi.
Bandari za Faili
Bandari za faili huruhusu kufunga viashiria vya faili katika bandari za Mac (kwa kutumia Haki za Bandari za Mach). Inawezekana kuunda fileport
kutoka kwa FD iliyopewa kutumia fileport_makeport
na kuunda FD kutoka kwa fileport kutumia fileport_makefd
.
Kuweka Mawasiliano
Kama ilivyotajwa hapo awali, inawezekana kutuma haki kutumia ujumbe wa Mach, hata hivyo, hauwezi kutuma haki bila kuwa na haki ya kutuma ujumbe wa Mach. Kwa hivyo, mawasiliano ya kwanza yanathibitishwaje?
Kwa hili, seva ya bootstrap (launchd kwenye mac) inahusika, kwani kila mtu anaweza kupata HAKI YA KUTUMA kwa seva ya bootstrap, inawezekana kuomba haki ya kutuma ujumbe kwa mchakato mwingine:
Kazi A inaunda bandari mpya, ikipata HAKI YA KUPOKEA juu yake.
Kazi A, ikiwa mmiliki wa HAKI YA KUPOKEA, inazalisha HAKI YA KUTUMA kwa bandari.
Kazi A inathibitisha mawasiliano na seva ya bootstrap, na kupeleka HAKI YA KUTUMA kwa bandari iliyozalishwa mwanzoni.
Kumbuka kwamba mtu yeyote anaweza kupata HAKI YA KUTUMA kwa seva ya bootstrap.
Kazi A inatuma ujumbe wa
bootstrap_register
kwa seva ya bootstrap ili kuhusisha bandari iliyotolewa na jina kamacom.apple.taska
Kazi B inaingiliana na seva ya bootstrap kutekeleza utaftaji wa bootstrap kwa jina la huduma (
bootstrap_lookup
). Kwa hivyo seva ya bootstrap inaweza kujibu, kazi B itatuma HAKI YA KUTUMA kwa bandari iliyoundwa hapo awali ndani ya ujumbe wa utaftaji. Ikiwa utaftaji unafanikiwa, seva inadua HAKI YA KUTUMA iliyopokelewa kutoka kwa Kazi A na kuhamisha kwa Kazi B.
Kumbuka kwamba mtu yeyote anaweza kupata HAKI YA KUTUMA kwa seva ya bootstrap.
Kwa HAKI HII YA KUTUMA, Kazi B inaweza kutuma ujumbe kwa Kazi A.
Kwa mawasiliano ya pande zote kawaida kazi B inazalisha bandari mpya na HAKI YA KUPOKEA na HAKI YA KUTUMA, na kumpa HAKI YA KUTUMA kwa Kazi A ili iweze kutuma ujumbe kwa KAZI B (mawasiliano ya pande zote).
Seva ya bootstrap haiwezi kuthibitisha jina la huduma lililodaiwa na kazi. Hii inamaanisha kazi inaweza kwa uwezekano kujifanya kuwa kazi yoyote ya mfumo, kama vile kudai jina la huduma ya idhini na kisha kuidhinisha kila ombi.
Kisha, Apple huhifadhi majina ya huduma zilizotolewa na mfumo katika faili za usanidi salama, zilizoko katika miongozo iliyolindwa na SIP: /System/Library/LaunchDaemons
na /System/Library/LaunchAgents
. Pamoja na kila jina la huduma, binary inayohusiana pia imehifadhiwa. Seva ya bootstrap, itaunda na kushikilia HAKI YA KUPOKEA kwa kila moja ya majina haya ya huduma.
Kwa huduma hizi zilizopangwa mapema, mchakato wa utaftaji unatofautiana kidogo. Wakati jina la huduma linatafutwa, launchd huanzisha huduma hiyo kwa muda. Mchakato mpya ni kama ifuatavyo:
Kazi B inaanzisha utaftaji wa bootstrap kwa jina la huduma.
launchd inachunguza ikiwa kazi inaendeshwa na ikiwa haiko, inaianzisha.
Kazi A (huduma) inatekeleza kuangalia bootstrap (
bootstrap_check_in()
). Hapa, **seva ya bootstrap inaunda HAKI YA KUTUMA, inaishikilia, na inahamisha HAKI YA KUPOKEA kwa Kazi A.launchd inazidisha HAKI YA KUTUMA na kupeleka kwa Kazi B.
Kazi B inazalisha bandari mpya na HAKI YA KUPOKEA na HAKI YA KUTUMA, na kumpa HAKI YA KUTUMA kwa Kazi A (huduma) ili iweze kutuma ujumbe kwa KAZI B (mawasiliano ya pande zote).
Walakini, mchakato huu unatumika tu kwa kazi za mfumo zilizopangwa mapema. Kazi zisizo za mfumo bado zinaendesha kama ilivyoelezwa awali, ambayo inaweza kwa uwezekano kuruhusu udanganyifu.
Kwa hivyo, launchd kamwe haipaswi kugonga au mfumo mzima utaanguka.
Ujumbe wa Mach
Kazi ya mach_msg
, kimsingi ni wito wa mfumo, hutumiwa kutuma na kupokea ujumbe wa Mach. Kazi inahitaji ujumbe utumwe kama hoja ya awali. Ujumbe huu lazima uanze na muundo wa mach_msg_header_t
, ukifuatiwa na maudhui ya ujumbe halisi. Muundo huo umedefiniwa kama ifuatavyo:
Mchakato unaomiliki haki ya kupokea inaweza kupokea ujumbe kwenye mlango wa Mach. Kinyume chake, wapelekaji wanapewa haki ya kutuma au haki ya kutuma mara moja. Haki ya kutuma mara moja ni kwa ajili ya kutuma ujumbe mmoja tu, baada ya hapo inakuwa batili.
Uga wa awali msgh_bits
ni ramani ya biti:
Biti ya kwanza (yenye maana zaidi) hutumiwa kuonyesha kuwa ujumbe ni mgumu (zaidi kuhusu hili chini)
Ya 3 na 4 hutumiwa na kernel
Biti 5 zilizo na thamani ndogo zaidi za byte ya 2 zinaweza kutumika kwa voucher: aina nyingine ya mlango wa kutuma mchanganyiko wa funguo/thamani.
Biti 5 zilizo na thamani ndogo zaidi za byte ya 3 zinaweza kutumika kwa mlango wa ndani
Biti 5 zilizo na thamani ndogo zaidi za byte ya 4 zinaweza kutumika kwa mlango wa mbali
Aina zinazoweza kutajwa katika voucher, milango ya ndani na ya mbali ni (kutoka mach/message.h):
Kwa mfano, MACH_MSG_TYPE_MAKE_SEND_ONCE
inaweza kutumika kuashiria kwamba haki ya kutuma mara moja inapaswa kuletwa na kuhamishiwa kwa ajili ya bandari hii. Inaweza pia kutajwa MACH_PORT_NULL
ili kuzuia mpokeaji kuweza kujibu.
Ili kufanikisha mawasiliano ya pande zote kwa urahisi, mchakato unaweza kutaja bandari ya mach katika kichwa cha ujumbe wa mach kinachoitwa bandari ya jibu (msgh_local_port
) ambapo mpokeaji wa ujumbe anaweza kutuma jibu kwa ujumbe huu.
Tafadhali elewa kwamba aina hii ya mawasiliano ya pande zote hutumiwa katika ujumbe wa XPC ambao unatarajia jibu (xpc_connection_send_message_with_reply
na xpc_connection_send_message_with_reply_sync
). Lakini kawaida bandari tofauti huzalishwa kama ilivyoelezwa hapo awali ili kuunda mawasiliano ya pande zote.
Vitengo vingine vya kichwa cha ujumbe ni:
msgh_size
: ukubwa wa pakiti nzima.msgh_remote_port
: bandari ambayo ujumbe huu unatumwa.msgh_voucher_port
: vifungo vya mach.msgh_id
: kitambulisho cha ujumbe huu, ambacho huchambuliwa na mpokeaji.
Tafadhali elewa kwamba ujumbe wa mach hutumwa kupitia bandari ya mach
, ambayo ni njia ya mawasiliano ya mpokeaji mmoja, watumaji wengi iliyojengwa ndani ya kernel ya mach. Mchakato mwingi unaweza kutuma ujumbe kwa bandari ya mach, lakini wakati wowote ni mchakato mmoja tu unaweza kusoma kutoka kwake.
Ujumbe kisha hufanywa na kichwa cha mach_msg_header_t
kifuatiwa na mwili na na trailer (ikiwa ipo) na inaweza kutoa idhini ya kujibu. Katika kesi hizi, kernel inahitaji tu kusafirisha ujumbe kutoka kazi moja hadi nyingine.
Trailer ni taarifa iliyowekwa kwenye ujumbe na kernel (haiwezi kuwekwa na mtumiaji) ambayo inaweza kuhitajika wakati wa kupokea ujumbe kwa kutumia bendera MACH_RCV_TRAILER_<trailer_opt>
(kuna taarifa tofauti zinazoweza kuhitajika).
Ujumbe Wenye Utata
Hata hivyo, kuna ujumbe mwingine wenye utata zaidi, kama vile wale wanaopitisha haki za bandari za ziada au kugawana kumbukumbu, ambapo kernel pia unahitaji kutuma vitu hivi kwa mpokeaji. Katika kesi hizi, biti muhimu zaidi ya kichwa msgh_bits
inawekwa.
Maelezo yanayowezekana ya kupitisha yanatambuliwa katika mach/message.h
:
Mac Ports APIs
Tafadhali kumbuka kuwa bandari zinaunganishwa na jina la kazi, kwa hivyo ili kuunda au kutafuta bandari, jina la kazi pia linahitajika (zaidi katika mach/mach_port.h
):
mach_port_allocate
|mach_port_construct
: Unda bandari.mach_port_allocate
inaweza pia kuunda seti ya bandari: haki ya kupokea juu ya kikundi cha bandari. Kila wakati ujumbe unapopokelewa inaonyeshwa bandari kutoka ambapo ulitumwa.mach_port_allocate_name
: Badilisha jina la bandari (kwa chaguo msingi nambari ya 32bit)mach_port_names
: Pata majina ya bandari kutoka kwa lengomach_port_type
: Pata haki za kazi juu ya jinamach_port_rename
: Badilisha jina la bandari (kama dup2 kwa FDs)mach_port_allocate
: Tenga kupokea mpya, PORT_SET au DEAD_NAMEmach_port_insert_right
: Unda haki mpya katika bandari ambapo una PATAmach_port_...
mach_msg
|mach_msg_overwrite
: Vipengele vinavyotumiwa kutuma na kupokea ujumbe wa mach. Toleo la kubadilisha linaruhusu kutaja buffer tofauti kwa kupokea ujumbe (toleo lingine litaitumia tena).
Debug mach_msg
Kwa kuwa kazi mach_msg
na mach_msg_overwrite
ndizo hutumiwa kutuma na kupokea ujumbe, kuweka kizuizi juu yao kunaweza kuruhusu kupekua ujumbe uliotumwa na ule uliopokelewa.
Kwa mfano, anza kudebugi programu yoyote unayoweza kudebugi kwani itapakia libSystem.B
ambayo itatumia kazi hii.
Ili kupata hoja za mach_msg
angalia rejista. Hizi ndizo hoja (kutoka mach/message.h):
Pata thamani kutoka kwenye rejisti:
Chunguza kichwa cha ujumbe ukichunguza hoja ya kwanza:
Aina hiyo ya mach_msg_bits_t
ni ya kawaida sana kuruhusu jibu.
Piga namba za bandari
Jina ni jina la chaguo-msingi linalopewa mlango (angalia jinsi inavyo ongezeka katika herufi 3 za kwanza). ipc-object
ni kitambulisho cha kipekee kilichofichwa cha mlango.
Pia kumbuka jinsi milango yenye haki za kutuma pekee inavyo tambulisha mmiliki wake (jina la mlango + pid).
Pia kumbuka matumizi ya +
kuonyesha kazi nyingine zilizounganishwa na mlango huo huo.
Pia niwezekana kutumia procesxp kuona pia majina ya huduma zilizosajiliwa (ikiwa SIP imelemazwa kutokana na hitaji la com.apple.system-task-port
):
Unaweza kusakinisha zana hii kwenye iOS kwa kuipakua kutoka http://newosxbook.com/tools/binpack64-256.tar.gz
Mfano wa Kanuni
Tafadhali angalia jinsi mtumaji anavyo tenga bandari, anajenga haki ya kutuma kwa jina org.darlinghq.example
na kuituma kwa seva ya bootstrap wakati mtumaji alipoomba haki ya kutuma ya jina hilo na kuitumia kutuma ujumbe.
Mawasiliano ya Mchakato kwa Mchakato (IPC) kwenye macOS
Hii ni mifano ya programu ya kutumia mawasiliano ya mchakato kwa mchakato (IPC) kwenye macOS. Programu hizi zinaonyesha jinsi mchakato mmoja unaweza kushirikiana na mchakato mwingine kwa kutumia njia za IPC kama vile mistari ya mawasiliano (pipes) na mizunguko ya ujumbe (message queues).
Kwa maelezo zaidi, tafadhali angalia maoni ndani ya vipande vya programu.
Jinsi ya Kutumia
Kukusanya programu kwa kutumia amri
make
.Anza mpokeaji kwa kufanya
./receiver
.Anza mtumaji kwa kufanya
./sender
.
Sasa mtumaji atatuma ujumbe kwa mpokeaji kupitia njia ya IPC iliyochaguliwa.
Kumbuka
Hizi ni mifano tu na hazijajaribiwa kwa usalama kamili. Tumia kwa uangalifu na uelewe hatari zinazowezekana za usalama zinazohusiana na mawasiliano ya mchakato kwa mchakato.
Vioja Vya Kipekee
Kuna baadhi ya vioja maalum vinavyoruhusu kutekeleza vitendo fulani nyeti au kupata ufikivu wa data nyeti fulani ikiwa kazi ina ruhusa ya KUTUMA juu yao. Hii inafanya vioja hivi kuwa vya kuvutia sana kutoka mtazamo wa mshambuliaji si tu kwa sababu ya uwezo bali pia kwa sababu ni rahisi kushiriki ruhusa ya KUTUMA kati ya kazi.
Vioja Maalum vya Mwenyeji
Vioja hivi vinawakilishwa na nambari.
Haki za KUTUMA zinaweza kupatikana kwa kuita host_get_special_port
na haki za KUPATA kwa kuita host_set_special_port
. Hata hivyo, wito wote unahitaji vioja vya host_priv
ambavyo vinaweza kupatikana tu na root. Zaidi ya hayo, hapo awali root alikuwa na uwezo wa kuita host_set_special_port
na kuteka vioja vyovyote vilivyowezesha kwa mfano kukiuka saini za nambari kwa kuteka HOST_KEXTD_PORT
(SIP sasa inazuia hili).
Vioja hivi vimegawanywa katika makundi 2: vioja 7 vya kwanza vinamilikiwa na kernel ikiwa 1 ni HOST_PORT
, 2 ni HOST_PRIV_PORT
, 3 ni HOST_IO_MASTER_PORT
na 7 ni HOST_MAX_SPECIAL_KERNEL_PORT
.
Vioja vinavyoanza kutoka nambari 8 vinamilikiwa na daemons ya mfumo na vinaweza kupatikana vikiwa vimeorodheshwa katika host_special_ports.h
.
Vioja vya Mwenyeji: Ikiwa mchakato una ruhusa ya KUTUMA juu ya vioja hivi, unaweza kupata taarifa kuhusu mfumo kwa kuita rutini zake kama vile:
host_processor_info
: Pata taarifa za processorhost_info
: Pata taarifa za mwenyejihost_virtual_physical_table_info
: Jedwali la kurasa la Kivinjari/Kimwili (inahitaji MACH_VMDEBUG)host_statistics
: Pata takwimu za mwenyejimach_memory_info
: Pata muundo wa kumbukumbu ya kernelVioja vya Mwenyeji Priv: Mchakato wenye haki ya KUTUMA juu ya vioja hivi anaweza kutekeleza vitendo vya kipekee kama kuonyesha data ya kuanza au jaribu la kupakia nyongeza ya kernel. Mchakato unahitaji kuwa root kupata ruhusa hii.
Zaidi ya hayo, ili kuita API ya
kext_request
ni lazima kuwa na ruhusa nyingine zacom.apple.private.kext*
ambazo hupewa tu programu za Apple.Rutini zingine zinazoweza kuitwa ni:
host_get_boot_info
: Patamachine_boot_info()
host_priv_statistics
: Pata takwimu za kipekeevm_allocate_cpm
: Tenga Kumbukumbu Fizi halisihost_processors
: Tuma haki kwa waendeshaji wa mwenyejimach_vm_wire
: Fanya kumbukumbu iweze kukaaKwa kuwa root anaweza kupata ruhusa hii, inaweza kuita
host_set_[special/exception]_port[s]
ili kuteka vioja vya mwenyeji maalum au vioja vya kipekee.
Inawezekana kuona vioja vyote vya mwenyeji maalum kwa kukimbia:
Violezo vya Kazi
Awali Mach haikuwa na "mchakato" ilikuwa na "kazi" ambayo ilichukuliwa zaidi kama chombo cha nyuzi. Wakati Mach ilipounganishwa na BSD kila kazi ilihusishwa na mchakato wa BSD. Kwa hivyo kila mchakato wa BSD una maelezo yanayohitajika kuwa mchakato na kila kazi ya Mach pia ina kazi zake za ndani (isipokuwa kwa pid 0 isiyokuwepo ambayo ni kernel_task
).
Kuna kazi mbili za kuvutia sana zinazohusiana na hii:
task_for_pid(target_task_port, pid, &task_port_of_pid)
: Pata haki ya KUTUMA kwa kazi ya kazi inayohusiana na ile iliyotajwa napid
na itoe kwatarget_task_port
iliyotajwa (ambayo kawaida ni kazi ya mwito ambayo imeitumiamach_task_self()
, lakini inaweza kuwa bandari ya KUTUMA juu ya kazi tofauti.)pid_for_task(task, &pid)
: Ukipewa haki ya KUTUMA kwa kazi, pata PID gani kazi hii inahusiana nayo.
Ili kutekeleza vitendo ndani ya kazi, kazi ilihitaji haki ya KUTUMA
kwake yenyewe kwa kuita mach_task_self()
(ambayo hutumia task_self_trap
(28)). Kwa idhini hii, kazi inaweza kutekeleza vitendo kadhaa kama:
task_threads
: Pata haki ya KUTUMA juu ya bandari zote za kazi za nyuzi za kazitask_info
: Pata habari kuhusu kazitask_suspend/resume
: Lemaza au rudisha kazitask_[get/set]_special_port
thread_create
: Unda nyuzitask_[get/set]_state
: Dhibiti hali ya kazina zaidi inaweza kupatikana katika mach/task.h
Tambua kwamba ukiwa na haki ya KUTUMA juu ya bandari ya kazi ya kazi tofauti, inawezekana kutekeleza vitendo kama hivyo juu ya kazi tofauti.
Zaidi ya hayo, bandari ya kazi ni pia bandari ya vm_map
ambayo inaruhusu kusoma na kubadilisha kumbukumbu ndani ya kazi kwa kutumia kazi kama vm_read()
na vm_write()
. Hii kimsingi inamaanisha kwamba kazi yenye haki za KUTUMA juu ya bandari ya kazi ya kazi tofauti itaweza kuingiza namna ndani ya kazi hiyo.
Kumbuka kwamba kwa sababu kernel pia ni kazi, ikiwa mtu anafanikiwa kupata idhini ya KUTUMA juu ya kernel_task
, itaweza kufanya kernel kutekeleza chochote (jailbreaks).
Piga simu
mach_task_self()
ili pate jina kwa bandari hii kwa kazi ya mwito. Bandari hii inarithiwa tu wakati waexec()
; kazi mpya iliyoumbwa nafork()
inapata bandari mpya ya kazi (kama kesi maalum, kazi pia inapata bandari mpya ya kazi baada yaexec()
katika binary ya suid). Njia pekee ya kuzalisha kazi na kupata bandari yake ni kufanya "port swap dance" wakati wa kufanyafork()
.Hizi ni vizuizi vya kupata bandari (kutoka
macos_task_policy
kutoka kwa binaryAppleMobileFileIntegrity
):Ikiwa programu ina ruhusa ya
com.apple.security.get-task-allow
mchakato kutoka kwa mtumiaji huyo anaweza kupata bandari ya kazi (kawaida huongezwa na Xcode kwa madhumuni ya kurekebisha makosa). Mchakato wa kuidhinisha hautaruhusu hii kwa matoleo ya uzalishaji.Programu zenye ruhusa ya
com.apple.system-task-ports
inaweza kupata bandari ya kazi kwa mchakato wowote, isipokuwa kernel. Katika toleo za zamani ilikuwa inaitwatask_for_pid-allow
. Hii inatolewa tu kwa programu za Apple.Root anaweza kupata bandari za kazi za programu zisizotumiwa na kukusanywa na mazingira ya kazi imara (na sio kutoka Apple).
Jina la bandari ya kazi: Toleo lisiloruhusiwa la bandari ya kazi. Inahusisha kazi, lakini haimruhusu kuidhibiti. Kitu pekee kinachoonekana kupitia hii ni task_info()
.
Uingizaji wa Shellcode katika nyuzi kupitia Bandari ya Kazi
Unaweza kupata shellcode kutoka:
Maelezo
Faili hii ina orodha ya ruhusa zinazohitajika kwa mchakato wa programu. Kwa mfano, ruhusa ya kufikia kamera au kusoma data kutoka kwa mtumiaji. Kwa kawaida, ruhusa hizi zinahitajika ili mchakato uweze kufanya kazi kwa usahihi kwenye mfumo wa macOS.
Kupasha programu iliyopita na ongeza haki za kipekee ili uweze kuingiza msimbo na mtumiaji huyo huyo (kama sivyo utahitaji kutumia sudo).
Last updated