You are on page 1of 75

‫‪Machine Translated by Google‬‬

‫ﺘﻤﻬﻴﺪ ‪iOS‬‬
‫ﺗﺸﻮﻳ ﺶ ﻣﺤﻤﻞ اﻟ‬
‫‪Emmutaler:‬‬
‫ﺑﻜﺎﻟﻮرﻳﻮس‬‫رﺳﺎﻟ ﺔ‬

‫اﻟﻤﺆﻟﻒ‪ :‬ﻟﻴﻮﻧﺎردو ﺟﺎﻟ ﻲ‬

‫اﻟﻤﻌﻠﻢ‪ :‬ﻓﻴﻦ دي رﻳﺪر‬

‫اﻟﻤﺸﺮف‪ :‬أ‪ .‬د‪ .‬ﻛﺎﻓﻴﻪ رﺿﻮي‬

‫ﺒﺮ ‪2021‬‬
‫ﺘﻤ‬‫ﺒ‬
‫ﻣﺎرس ‪2021‬إﱃﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺧﻼﺻ ﺔ‬

‫ﺘﺮوﻧﻴ ﺔ‪.‬ﺗﺪﻋ ﻲ أﺟﻬﺰة ‪iPhone‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص أﻧﻬﺎ آﻣﻨ ﺔ‬


‫ﺘﺰاﻳﺪًا ﻟﻠﻬﺠﻤﺎ ت اﻹﻟﻜ‬ ‫ً‬
‫ﻫﺪﻓﺎ ﻣ‬ ‫ﺒﺤ ﺖ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘﻬﺎ ﻓ ﻲ اﻟﺤﻴﺎة اﻟﻴﻮﻣﻴ ﺔ ‪ ،‬أﺻ‬
‫ﺗﻒ اﻟﺬﻛﻴ ﺔ وأ ﻫﻤﻴ‬
‫ﻣﻊ ﻇﻬﻮر اﻟﻬﻮا‬
‫ﺜﻘ ﺔ ﻫﺬهﺳﻴﻜﻮن ذا‬
‫ﺛﻘ ﺔ ﻗﻮﻳ ﺔ‪ .‬وﻣﻦ اﻟﻤﻨﻄﻘ ﻲ أن ﻛ ﺴﺮﺳﻠ ﺴﻠ ﺔ اﻟ‬‫ﺑﺪاﻳ ﺔﺳﻠ ﺴﻠ ﺔ‬‫ﺘﻤﻬﻴﺪ اﻵﻣﻦ ‪ ،‬واﻟﺬيﻳﺸﻜﻞ‬
‫ﺒﺪأ ﻫﺬا ﻣﻦ ﻣﺤﻤﻞ اﻟ‬ ‫ﺗﺮﻛﺰ أ ً‬
‫ﻳﻀﺎ ﻋﲆ اﻟﺨﺼﻮﺻﻴ ﺔ‪.‬ﻳ‬ ‫ﻟﻠﻐﺎﻳ ﺔ و‬
‫أ ﻫﻤﻴ ﺔ ﺧﺎﺻ ﺔ ﻟﻠﺨﺼﻮم‪.‬‬

‫ﺘﻤﻜﻴﻦﺗﺸﻮﻳ ﺶ ﻣﺤﻤﻞ إﻗﻼع ‪iPhone.‬‬


‫ﻓ ﻲ ﻫﺬه اﻷﻃﺮوﺣ ﺔ ‪ ،‬ﻧﻘﺪم ‪emmutaler ،‬ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷدوا ت ﻟ‬
‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺑﺸﻜﻞ ﻣﺮﻳﺢ ‪،‬‬‫ﺘﺸﻮﻳ ﺶ أﺟﺰاء ﻣﻌﻴﻨ ﺔ‬
‫ﺑ‬‫ﺘﻮي ﻋﻠﻴﻪ‪ .‬ﻫﺬاﻳ ﺴﻤﺢ ﻟﻨﺎ‬
‫ﺑﺈﻧﺸﺎء ‪Linux ELF‬ﻋﺎديﻳﺤ‬
‫ﺜﻒ ﻟﻤﺤﻤﻞ اﻹﻗﻼع ‪،‬ﻳ ﺴﻤﺢ ﻟﻨﺎ ‪emmutaler‬‬
‫ﺑ ﺖ ﻣﻜ‬
‫ﺛﺎ‬‫ﺑﻌﺪﺗﺤﻠﻴﻞ‬
‫ﺘﻘﻠﻴﺪﻳ ﺔ‪.‬‬
‫زﻏ ﺐ ‪Linux‬اﻟ‬
‫ﺘ ﺔ‪ .‬ﻋﻼوة‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺜﻞﺗﺸﻮﻳ ﺶ ‪USB‬وﻣﻜﺪسﺗﺤﻠﻴﻞ اﻟ‬
‫ﺘﺨﺪاﻣﻪ ‪ ،‬ﻣ‬
‫ﺑﺎﺳ‬‫ﺘ ﻲﺗﻢ إﺟﺮاؤ ﻫﺎ‬
‫ﺑﻜ ﺔ اﻟ‬
‫ﺘﺠﺎر ب اﻟﻤﺮ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟ‬
‫ﺗﻨﻔﻴﺬ ‪emmutaler ،‬‬
‫ﻧﻘﺪمﺗﺼﻤﻴﻢ و‬
‫ﺒﻞ ﻣﺨﺼﺼﻴﻦ‬
‫ﺘﺸﺎف ﻧﻘﺎط اﻟﻀﻌﻒ ﻓ ﻲ اﻟﻜﻮﻣ ﺔ اﻟﻤﺨﻔﻴ ﺔ ﻣﻦ ﻗ‬
‫ﺘﻴﺢ اﻛ‬
‫ﺘﺸﻮﻳ ﺶ ‪ ،‬واﻟﺬيﻳ‬
‫ﺧﺼﻴﺼﺎ ﻟﻠ‬
‫ً‬ ‫ﻋﲆ ذﻟﻚ ‪ ،‬ﻧﻘﺪم ‪FETA ،‬و ﻫﻮ ﻣﺨﺼﺺ ﺟﺪﻳﺪ وآﻣﻦ ﻟﻠﺨﻴﻮط ﻣﺼﻤﻢ‬
‫ﺛﻢ أﻇﻬﺮﻧﺎ أﻧﻬﺎ ﻻﺗﺰال ﻣﻮﺟﻮدة ﻓ ﻲ رﻗﺎﺋﻖ‬‫ﺘﺨﺪام ‪FETA‬وﻣﻦ‬
‫ﺑﺎﺳ‬‫ﺑ ًﻘﺎ ‪-‬ﻓﻘﻂ‬
‫ﺛﻐﺮة ‪UAF‬ﻣﻌﺮوﻓ ﺔﺳﺎ‬
‫ﺜﻮر ﻋﲆ ‪"checkm8" [3] -‬‬
‫آﺧﺮﻳﻦ‪ .‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪،‬ﺗﻤﻜﻨﺎ ﻣﻦ اﻟﻌ‬
‫ﺛﻨﺎءﺗﻄﻮﻳﺮ ‪emmutaler.‬‬
‫ﺘ ﻲ وﺟﺪﻧﺎ ﻫﺎ أ‬
‫ﺑﺮاﻣﺞﺗﺤﻤﻴﻞﺗﻤﻬﻴﺪ ‪iPhone ،‬واﻟ‬‫ﺑﻮاﺳﻄ ﺔ‬‫ﺘﺨﺪﻣ ﺔ‬
‫ﺘﻜﺮة اﻟﻤ ﺴ‬
‫ﺒ‬‫ﺘﺨﻔﻴﻒ اﻟﻤ‬
‫ﺑﻌﺾ وﺳﺎﺋﻞ اﻟ‬‫‪A13.‬أﺧﻴ ﺮًا ‪ ،‬ﻧﻨﺎﻗ ﺶ‬

‫أﻧﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻘﺪﻳﺮ‬
‫ﺷﻜﺮ و‬

‫ﺑ ﻲ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬أود أن أﺷﻜﺮ‬‫ﺒ ﺔ اﻟﺨﺎﺻ ﺔ‬


‫ﺋﻤﺎ ﻣﻊ اﻟﻤﻨﺎﻃﻖ اﻟﺰﻣﻨﻴ ﺔ اﻟﻐﺮﻳ‬
‫ﺘﻜﻴﻒ دا ً‬
‫ﺘﻤﺮ واﻟﺪﻋﻢ واﻟ‬
‫ﺘﻮﺟﻴﻪ اﻟﻤ ﺴ‬
‫ﺘ ﻲ ‪Finn de Ridder ، ،‬ﻋﲆﺗﻮﻓﻴﺮ اﻟ‬
‫أود أن أﺷﻜﺮ ﻣﺪرﺳ‬
‫ﻣﺸﺮﻓ ﻲ ‪ ،‬أ‪.‬د‪.‬‬
‫ﺑﻘﻴ ﺔ ﻣﺠﻤﻮﻋ ﺔ‬ ‫ﺘﺮاﺣﺎ ت راﺋﻌ ﺔ‪ .‬أود أ ً‬
‫ﻳﻀﺎ أن أﺷﻜﺮ ‪Patrick Jattke‬و‬ ‫ﺗﻘﺪﻳﻢ اﻗ‬
‫ﺘﻤﺎم و‬
‫ﺑﺪاء اﻻ ﻫ‬
‫ﺋﻤﺎ ﻹ‬
‫ﺑ ﺔ ﻫﺬه اﻷﻃﺮوﺣ ﺔ ‪ ،‬وﻟﻜﻦ دا ً‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﻛﺎﻓﻴﻪ رﺿﻮي ‪ ،‬ﻟﻴ ﺲ ﻓﻘﻂ ﻟﻠ ﺴﻤﺎح ﻟ ﻲ‬
‫ﺗﺤﻤﻞﺗﻌﻄﻠ ﻲ ﻟﻬﺎ‪.‬‬
‫ﺘﺠﺎر ب و‬
‫ﺘﺨﺪام ﺧﻮادﻣﻬﻢ ﻹﺟﺮاء اﻟ‬
‫ﺑﺎﺳ‬‫‪COMSEC‬ﻋﲆ اﻟ ﺴﻤﺎح ﻟ ﻲ‬

‫ﺒﺎ ت‬
‫ﺛ‬‫ﺗﻴ ﺐ ﻣﻌﻴﻦ ‪ ،‬أﺷﻜﺮ ﻟﻮﻛﺎس ﻋﲆ إ‬
‫ﺑﺪونﺗﺮ‬‫ﺒ ﺔ‪.‬‬
‫ﺘﻰ ﻓ ﻲ اﻷوﻗﺎ ت اﻟﻌﺼﻴ‬
‫ﺋﻤﺎ ﻫﻨﺎك وداﻋﻤﻴﻦ ‪ ،‬ﺣ‬
‫ﺑﺸﻜﺮ ﺧﺎص إﱃ أﺻﺪﻗﺎﺋ ﻲ وزﻣﻼﺋ ﻲ ﻓ ﻲ اﻟ ﺴﻜﻦ اﻟﻤﻮﺟﻮدﻳﻦ دا ً‬‫ﺗﻮﺟﻪ‬
‫أ‬
‫ﺑ ﺔ اﻟﻨﻮاة اﻟﻌﺎﻣ ﺔ‪ .‬أﺷﻜﺮ ﻟﻮﻛﺎ ‪،‬ﻷﻧﻪ‬
‫ﺒﻖ اﻟﻤﻄﺎﻃ ﻲ ‪QEMU‬وﻏﺮا‬
‫ﺗ ﻲ ﻓ ﻲ اﻟ‬
‫ﺘﺮاح وأﻃﺮوﺣ ﺔ ودﻋﻢ ﻛﻞ ﻣﺎ أﻓﻌﻠﻪ‪ .‬أﺷﻜﺮ ‪Matteo ،‬ﻟﻤ ﺴﺎﻋﺪ‬
‫ﺘﺮوﻧ ﻲ واﻗ‬
‫ﺑﺮﻳﺪ إﻟﻜ‬‫ﺗﻪ ﻟﻜﻞ رﺳﺎﻟ ﺔ‬
‫ﻗﺮاء‬
‫ﺘﻌﻠﻘ ﺔ‬
‫ﺘﺮدد اﻷﻓﻜﺎر اﻟﻤ‬
‫ﺑ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷﺷﻴﺎء اﻟﺼﻐﻴﺮة‪ .‬أﺷﻜﺮ ﻧﻮح ﻋﲆ اﻟ ﺴﻤﺎح ﻟ ﻲ‬‫ﺘﺮاح اﻷوﻟ ﻲ ‪،‬‬
‫ﺗ ﻲ ﻓ ﻲ اﻻﻗ‬
‫ﺘﺤﺪ ث ﻋﻦ أي ﺷ ﻲء وﻣ ﺴﺎﻋﺪ‬
‫ﺑﺎﻟ‬‫ﺳﻤﺢ ﻟ ﻲ‬
‫ﺘﻜﺎر اﺳﻢ ‪"Emmutaler" ،‬و ]‪ParmeSAN [30‬ﻟﻺﻟﻬﺎم‪.‬‬
‫ﺑ‬‫ﺑﻴﺎن ﻋﲆ ا‬
‫ﺘﺎﺋﺞ‪ .‬أﺷﻜﺮ ﻓﺎ‬
‫ﺗﻪ اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻨ‬ ‫ﺒﻴﻘﺎ ت اﻟﻜﻮﻣ ﺔ و ‪USB‬وأ ً‬
‫ﻳﻀﺎﺗﻘﺪﻳﻢ ﻣﺪﺧﻼ‬ ‫ﺘﻄ‬‫ﺑ‬

‫ﺑﺎﻟﺬ ﻫﺎ ب إﱃ ‪CON CTF‬‬‫ﺑﻴﻦ وﻳﺠﻌﻞ ﺣﻠﻤ ﻲ‬


‫ُﺼﺪق ﻣﻦ اﻷﺷﺨﺎص اﻟﻤﻮ ﻫﻮ‬
‫أﺧﻴ ًﺮا ‪ ،‬أود أن أذﻛﺮ ﻓﺮﻳﻘ ﻲ "‪CTF ، "flagbot‬و "اﻟﻤﻨﻈﻤﻮن" ‪ ،‬اﻟﺬﻳﻦﻳﺆوﻳﻮن ﻋﺪدًا ﻻﻳ‬
‫ﺘﻤﺎم ‪ ،‬واﻟﺬﻳﻦﺳﻴﻘﺪﻣﻮن‬
‫ﺜﻴﺮﻳﻦ ﻟﻼ ﻫ‬
‫ﺑﺎﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺷﺨﺎص اﻟﻤ‬‫ﺘﻘﻴ ﺖ‬
‫ﺒﻮع ﻓ ﻲ ﻟﻌ ﺐ ‪CTF ،‬اﻟ‬
‫ﺑﻴﻨﻤﺎ ﻛﻨ ﺖ أﻗﻀ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻄﻼ ت ﻧﻬﺎﻳ ﺔ اﻷﺳ‬‫‪DEF‬ﺣﻘﻴﻘ ﺔ واﻗﻌ ﺔ‪.‬‬
‫ﺘﺸﻔﻴﺮ‬
‫ﺑﺎﻟ‬‫ﺘﻌﻠﻖ‬
‫ﺒ ﺔﺗ‬
‫ﺋﻤﺎ أن أﺳﺄل ﻋﻦ أي أﺳﺌﻠ ﺔ ﻏﺮﻳ‬
‫ﺋﻤﺎﺗﺤ ٍﺪ ﺟﺎ ﻫﺰ أو ﺧﻤ ﺴ ﺔ ‪ ،‬وﻳﻤﻜﻨﻨ ﻲ دا ً‬
‫ﺑﺄ ﻫﻤﻴ ﺔ ﺧﺎﺻ ﺔ ‪ ،‬ﺣﻴ ﺚﺳﻴﻜﻮن ﻟﺪﻳﻬﺎ دا ً‬
‫ﺗﻬﻢ ﻣﻦ ﺣﻴﻦﻵﺧﺮ‪.‬ﺗﺤﻈﻰ ‪Robin‬‬
‫ﻣ ﺴﺎﻋﺪ‬
‫ﻟﺪي‪.‬‬

‫ﺛﺎﻧﻴﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮﻳﺎ ت‬
‫ﻣﺤ‬

‫‪1‬اﻟﻤﻘﺪﻣ ﺔ‬ ‫‪1‬‬
‫‪1.1‬اﻟﺪاﻓﻊ‪. . . . . . . . . . .‬‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪1‬‬

‫ﺘﺤﺪﻳﺎ ت‪. . . . . . . . . . . .‬‬ ‫‪1.2‬اﻟ‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪2‬‬


‫‪.‬‬ ‫اﻟﺤﻞ‪. . . . . ..‬‬
‫‪. . . 1.3‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪2‬‬
‫ﻋﺎﻣ ‪.‬ﺔ‪. . .‬‬
‫ﻧﻈﺮة ‪. . .‬‬
‫‪. . . 1.4‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪2‬‬

‫ﺗ ﺴﻠ ﺴﻞﺗﻤﻬﻴﺪ ‪iOS. . . . . . .‬‬


‫‪2‬اﻟﺨﻠﻔﻴ ﺔ ‪2.1‬‬ ‫‪3‬‬
‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪3‬‬
‫ﺑﺸﺮﻛ ﺔ ‪Apple.‬‬‫اﻟﻤﺼﻄﻠﺤﺎ ت اﻟﺨﺎﺻ ﺔ‬‫‪. . . 2.2‬‬
‫‪. . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪4‬‬
‫ﺗﻨ‪. .‬‬
‫ﺴﻴﻖ ‪IMG4. . . . . . . . . .‬‬ ‫‪. . . . . . . . . . . . . . . . . .‬‬
‫‪2.3‬‬ ‫‪........‬‬ ‫‪5‬‬
‫‪2.3.1. ASN.1‬و ‪DER. . . . 2.4 checkm8. . . . . . . . . . . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪8‬‬
‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬

‫ﺜ ﺔ ﻋﲆ ‪ARM.‬‬ ‫ﺑﻴﺮ اﻷﻣﻨﻴ ﺔ اﻟﺤﺪﻳ‬ ‫ﺘﺪا‬‫‪2.5‬اﻟ‬ ‫‪. . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪67‬‬


‫‪2.6‬اﻟ‪. .‬‬
‫ﺘﺸﻮﻳ ﺶ‪. . . . . . . . . . . . .‬‬ ‫‪. . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪8‬‬

‫ﺘﻬﺪﻳﺪ ‪3.1‬اﻟﻮﺻﻮل اﻟﻤﺎدي‪. . . . . . .‬‬


‫‪3‬ﻧﻤﻮذج اﻟ‬ ‫‪9‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪9‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪3.2‬اﻟﺠﺬر ﻋﲆ اﻟﺠﻬﺎز‪. . . . . . .‬‬ ‫‪........‬‬ ‫‪10‬‬
‫ﺘﺸﻮﻳ ﺶ‪. . . .‬‬
‫ﺘﺎﺟﺎ ت ﻟﻠ‬
‫ﺘﻨ‬‫‪3.3‬اﺳ‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪10‬‬

‫ﺘﺼﻤﻴﻢ ‪4.1‬اﻟﻬﺪف )اﻷ ﻫﺪاف(‪. . . . . . . . . . . . .‬‬ ‫‪4‬اﻟ‬ ‫‪11‬‬


‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪11‬‬

‫ﺘﺤﺪﻳﺎ‪ .‬ت‪. . . . . . . . . . . .‬‬


‫‪4.2‬اﻟ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪11‬‬
‫‪.‬‬ ‫‪.‬‬
‫ﺛﻨﺎﺋ ﻲ اﻟﻨﻘﻄ ﺔ‪. . . . . . .‬‬ ‫‪4.2.1. . . . . . . . . . . . . . . .‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪........‬‬ ‫‪12‬‬

‫‪4.2.2 . . . . . . . . . . . . . . .‬ﻣﺼﻤﻢ ﻟﻤﻌﺎﻟﺠﺎ ت ‪Apple.‬‬ ‫‪........‬‬ ‫‪12‬‬


‫ﺜﺎل ﻧﺼﻔ ﻲ‪. . .‬‬ ‫اﻟﻤﻌﺪن ‪.‬‬
‫اﻟﻌﺎري أوﺗﻤ‬ ‫‪. . 4.2.3‬‬
‫‪. . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪12‬‬
‫‪. . . 4.3‬‬
‫اﻟﺤﻠﻮل‪. . . . . . . . . . . .‬‬ ‫‪. . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪12‬‬

‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ واﻟﺪﻳﻨﺎﻣﻴﻜ ﻲ‪.‬‬ ‫‪4.3.1 . . . . . . . . . . . . . . . .‬اﻟ‬ ‫‪........‬‬ ‫‪13‬‬


‫ﺜﻨﺎﺋ ﻲ‪. . . .‬‬ ‫‪.‬‬
‫ﺘﺮﻗﻴﻊ اﻟ‬ ‫‪. . . . . . . . . . . . . . . . . . .‬‬
‫‪4.3.2‬اﻟ‬ ‫‪........‬‬ ‫‪13‬‬
‫‪. . ELF.‬‬
‫‪4.3.3 Linux‬‬ ‫‪. ..... . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪13‬‬
‫ﺑ ﻲ‪. . . . . . . . .‬‬
‫ﺒﺎ‬
‫ﺗﺼﻤﻴﻢ ﺿ‬
‫‪4.4‬‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪13‬‬

‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ‪. . . . . . .‬‬


‫ﺘﻨﻔﻴﺬ ‪5.1‬اﻟ‬
‫‪5‬اﻟ‬ ‫‪15‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪15‬‬
‫‪5.1.1‬ﺧﺮﻳﻄ ﺔ اﻟﺬاﻛﺮة‪. . . . . .‬‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪15‬‬
‫‪5.1.2‬اﻟﻨﺼﻮص اﻟﻤ ﺴﺎﻋﺪة‪. . . . .‬‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪16‬‬
‫ﺑﻨﺎء ‪Linux ELF. . . .‬‬
‫‪5.2‬‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪17‬‬
‫‪5.2.1‬إﻧﺸﺎء أﻗ ﺴﺎم ‪ELF.‬‬ ‫‪. . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪17‬‬

‫ﺜﺎ‬
‫ﺛﺎﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮﻳﺎ ت‬
‫ﻣﺤ‬ ‫ﺑﻌﺎ‬
‫را‬

‫ﺜﻨﺎﺋ ‪.‬ﻲ‪. . .‬‬


‫ﺗﺮﻗﻴﻊ ‪.‬اﻟ ‪.‬‬
‫‪. .5.2.2‬‬
‫‪. . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪18‬‬

‫ﺑ ﺖ‪.‬‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺘﺨﺪام اﻟﺮﻣﻮز ﻣﻦ اﻟ‬
‫‪5.2.3‬اﺳ‬ ‫‪. . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪21‬‬
‫‪. 5.2.4‬‬
‫‪. . .Backtrace‬‬
‫ﺑﺮﻣﺰ‪.‬‬ ‫‪. . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪22‬‬
‫إﻧﺸﺎء‪. .‬‬
‫ﻣﺪﺧﻼ ت ‪IMG4. .‬‬ ‫‪. 5.3‬‬
‫‪. . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪23‬‬
‫إﻋﺪاد‪ .‬اﻟ ‪.‬‬
‫ﺘﺸﻮﻳ ﺶ‪. . . . . . . .‬‬ ‫‪. 5.4‬‬
‫‪. . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪24‬‬

‫ﺒﺎ ت‪.‬‬
‫ﺜ‬‫‪5.4.1 AFL ++. . . . . . . . . . . . . . . . . .‬وﺿﻊ اﻟ‬ ‫‪........‬‬ ‫‪24‬‬

‫‪5.4.2‬إﺻﺪارا ت ‪AFL ++‬و ‪QEMU.‬‬ ‫‪. . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪25‬‬


‫‪. . . . IMG4.‬‬
‫إزﻋﺎج‪. . .. . .. . ... . .. . .‬‬
‫‪. 5.5‬‬
‫‪. . . . . . . .‬‬ ‫‪........‬‬ ‫‪25‬‬
‫ﺴﻤﺎح ‪. .‬‬
‫ﺑﺎﻟﻮﺻﻮل ﺧﺎرج اﻟﺤﺪود‪.‬‬ ‫‪.5.5.1‬اﻟ ‪. .‬‬
‫‪. . . . . . . .‬‬ ‫‪........‬‬ ‫‪26‬‬
‫ﺶ‪. . . . . . .‬‬
‫ﻳ ‪.‬‬
‫ﺘﺸﻮ‪.‬‬
‫ﺳﺮﻋ ﺔ‪.‬اﻟ ‪.‬‬
‫ﺴﻴﻦ ‪. .‬‬
‫ﺗﺤ ‪.‬‬
‫‪. 5.6‬‬
‫‪. . . . . . . .‬‬ ‫‪........‬‬ ‫‪26‬‬
‫ﺴﺮﻋ ‪.‬ﺔ‪. . . . .‬‬
‫ﻣﺸﺎﻛﻞ ‪.‬اﻟ ‪.‬‬
‫ﺗﺤﺪﻳﺪ‪. . .‬‬
‫‪. .5.6.1‬‬
‫‪. . . . . . . .‬‬ ‫‪........‬‬ ‫‪26‬‬

‫ﺘﻘﺎطﺳﺮﻳﻊ ﻟﻠﺬاﻛﺮة‪.‬‬
‫‪5.6.2‬وﺣﺪة ‪Kernel‬ﻻﻟ‬ ‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪27‬‬
‫‪. . . . . . USB.‬‬
‫ﺗﺸﻮﻳ‪.‬ﺶ‪. . .. . ... . .. . .‬‬
‫‪. 5.7‬‬
‫‪. . . . . . . .‬‬ ‫‪........‬‬ ‫‪27‬‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬ﻣﺨﺼﺺ‪. .‬‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬
‫‪5.7.1‬‬ ‫‪........‬‬ ‫‪27‬‬
‫‪5.7.2‬ﻟﻠﺬﻋﺮ أو ﻋﺪم اﻟﺬﻋﺮ‪.‬‬ ‫‪. . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪29‬‬
‫ﻣﻠﻒ ‪.‬‬
‫اﻹدﺧﺎل‪.‬‬ ‫ﺴﻴﻖ ‪. .‬‬
‫ﺗﻨ ‪. .‬‬
‫‪.5.7.3‬‬
‫‪. . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪29‬‬

‫ﺘﺸﻮﻳ ﺶ ‪USB.‬‬
‫ﺑﺖ ﻟ‬
‫ﺜﺎ‬
‫‪5.7.4‬اﻟﻮﺿﻊ اﻟ‬ ‫‪. . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪30‬‬

‫ﺗﺨﺼﻴﺺ ‪Fuzzing-Enable Thread-safe Allocator (FETA).‬‬


‫‪5.8‬‬ ‫‪. . . . . . . . .‬‬ ‫‪........‬‬ ‫‪31‬‬
‫ﺘﻐﻄﻴ ‪.‬ﺔ‪. .. . . .. .‬‬
‫ﻣﻌﻠﻮﻣﺎ ‪ .‬ت اﻟ‪. .‬‬
‫‪. . 5.9‬‬
‫‪. . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪31‬‬

‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ‪. . . . . . .‬‬


‫ﺘﻘﻴﻴﻢ ‪6.1‬اﻟ‬
‫‪6‬اﻟ‬ ‫‪34‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪34‬‬
‫اﻟﺠﺮي ﻓ ‪.‬ﻲ ‪.‬‬
‫‪EL0.‬‬ ‫‪. . 1:‬‬‫ﺘﺨﻔﻴﻒ‪. .‬‬
‫‪.6.1.1‬اﻟ ‪. .‬‬
‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪35‬‬

‫ﺘﻴﻘﺎن اﻟﻤﺆﺷﺮ ‪(PAC).‬‬


‫ﺘﺨﻔﻴﻒ ‪2:‬رﻣﻮز اﺳ‬
‫‪6.1.2‬اﻟ‬ ‫‪. . . .‬‬ ‫‪........‬‬ ‫‪36‬‬
‫‪.6.1.3‬اﻟ ‪. .‬‬
‫ﺘﺨﻔﻴﻒ ‪3:‬ﻗﺮاءا ت اﻟﺼﻤﺎﻣﺎ ت اﻟﻤﻌﻘﺪة‪.‬‬ ‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪36‬‬
‫ﻲ‪. . . . . . . . . .. . .. . .. . .‬‬
‫ﺛﻨﺎﺋ ‪.‬‬
‫إﻧﺸﺎء‪. .‬‬
‫‪. 6.2‬‬
‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪36‬‬
‫‪. . . . . IMG4.‬‬
‫ﻏﻤﻮض ‪. . .. . .. . .. . .. . ..‬‬
‫‪. . 6.3‬‬
‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪37‬‬
‫‪. . Fuzzing.‬‬
‫‪6.4 USB‬‬ ‫‪. . . .. . .. . . .. . .6.4.1‬‬
‫‪. . checkm8‬‬
‫‪. . . .A13.‬‬
‫‪. .. . .. . . . .‬‬ ‫‪........‬‬ ‫‪37‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪38‬‬
‫ﺶ‪. . . . . . . . .‬‬
‫ﻳ ‪.‬‬
‫ﺘﺸﻮ‪.‬‬
‫ﺳﺮﻋ ﺔ‪.‬اﻟ ‪.‬‬
‫ﺴﻴﻦ ‪. .‬‬
‫ﺗﺤ ‪.‬‬
‫‪. 6.5‬‬
‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪43‬‬
‫ﺘﻐﻄﻴ ﺔ‪. . . . . . . .. . .. . .. . . .. . .. . ..‬‬
‫‪6.6‬اﻟ ‪. .‬‬
‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪41‬‬
‫‪. . . . . . . IMG4.‬‬
‫ﺒﺎ ‪.‬ب ‪. . .. . .. .‬‬
‫‪.6.6.1‬ﺿ ‪.‬‬
‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪40‬‬
‫‪. . . . . . . USB.‬‬
‫ﺒﺎ ‪.‬ب ‪. . . .. . .. .‬‬
‫‪.6.6.2‬ﺿ ‪.‬‬
‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪39‬‬
‫ﺒ ‪.‬ﺔ‪. . . . . . . . . .‬‬‫ﺘﻐﻄﻴ ﺔ ‪. .‬‬
‫اﻟﻤﺮﻛ‬ ‫‪.6.6.3‬اﻟ ‪. .‬‬
‫‪. . . . . .‬‬ ‫‪........‬‬ ‫‪44‬‬

‫‪7‬اﻟﻤﻨﺎﻗﺸ ﺔ ‪7.1‬اﻟﻘﻴﻮد‪. . . . . . . . . . .‬‬ ‫‪46‬‬


‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪46‬‬
‫ﺒﻠﻴ ﺔ‪. . . . . . .‬‬
‫ﺘﻘ‬‫ﺘﻤﺎﻻ ت اﻟﻤ ﺴ‬
‫‪7.2‬اﻻﺣ‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪46‬‬

‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺗﺤ ﺴﻴﻨﺎ تﺳﺮﻋ ﺔ اﻟ‬
‫‪7.3‬‬ ‫‪. . . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪47‬‬

‫‪8‬اﻷﻋﻤﺎل ذا ت اﻟﺼﻠ ﺔ‬ ‫‪48‬‬


‫ﺗﻌﻮﻳ ‪.‬ﺶ ‪. . . .. . ..‬‬
‫‪USB Blackbox.‬‬ ‫‪. 8.1‬‬
‫‪. . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪48‬‬

‫‪8.2 Fuzzing Whitebox‬ﻣﻦ ‪Android Boot Loaders.‬‬ ‫‪. . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪48‬‬
‫ﺋﻴ ﺔ ‪. .‬‬
‫ﻋﲆ ‪ARM.‬‬ ‫ﺜﻨﺎ ‪.‬‬
‫ﺑ‪.‬ﺔ اﻟ‪.‬‬‫إﻋﺎدة‪ .‬اﻟﻜ‪.‬‬
‫ﺘﺎ‬ ‫‪. 8.3‬‬
‫‪. . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫‪49‬‬

‫‪9‬اﻟﺨﻼﺻ ﺔ‬ ‫‪50‬‬

‫ﻓﻬﺮس‬ ‫‪51‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮﻳﺎ ت‬
‫ﻣﺤ‬ ‫ﻓﻲ‬

‫ﺧﺮﻳﻄ ﺔ ذاﻛﺮة ‪SecureROM‬‬ ‫أﻧﺎ‬

‫‪A.1. . . . . . . . . . . . . . . . . . . .‬اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻮﺻﻔﻴ ﺔ داﺧﻞ ‪SecureROM.‬‬ ‫‪........‬‬ ‫أﻧﺎ‬

‫‪A.2 A13‬ﺧﺮﻳﻄ ﺔ ذاﻛﺮة ‪SecureROM.‬‬ ‫‪. . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫ﺛﺎﻧ ًﻴﺎ‬

‫ﻣﻮاﺻﻔﺎ تﺗﻨ ﺴﻴﻖ ‪B IMG4‬‬ ‫ﺑﻌﺎ‬


‫را‬

‫‪. . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﻨ ﺴﻴﻖ ‪B.1 SET. . . . . . . . . . .‬‬ ‫‪........‬‬ ‫ﺑﻌﺎ‬
‫را‬

‫ﺘﻨ ﺴﻴﻖ ‪IMG4.‬‬


‫‪B.2‬اﻟﻤﻮاﺻﻔﺎ ت اﻟﻜﺎﻣﻠ ﺔ ﻟ‬ ‫‪. . . . . . . . . . . . . . . . . . .‬‬ ‫‪........‬‬ ‫ﺑﻌﺎ‬
‫را‬

‫ﺑﻌﺪ اﻟﻤﻘﺎرﻧ ﺔ‬
‫ﺒﻞ و‬
‫‪C‬أﻃﻮل ﻗ‬ ‫ﺑﻌﺎ‬
‫ﺳﺎ‬

‫ﺘﻐﻄﻴ ﺔ اﻟﻜﺎﻣﻠ ﺔ‬
‫د ﻣﻌﻠﻮﻣﺎ ت اﻟ‬ ‫اﻟﺤﺎدي ﻋﺸﺮ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪1‬‬

‫ﻣﻘﺪﻣ ﺔ‬

‫ﺘﺰاﻳﺪ ﻓ ﻲ ﻛﻞﺳﻴﺎق‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻣﻊ‬


‫ﺑﺸﻜﻞ ﻣ‬‫ﻣﻬﻤﺎ‬
‫ً‬ ‫ﺒﺢ اﻷﻣﺎن‬
‫ﺘ ﻲﺗﺮﻋﺎ ﻫﺎ اﻟﺪوﻟ ﺔ وﻏﻴﺮ اﻟﺤﻜﻮﻣﻴ ﺔ ‪ ،‬أﺻ‬
‫ﺘﺮوﻧﻴ ﺔ اﻷﺧﺮى اﻟ‬
‫ﺑﺮاﻣﺞ اﻟﻔﺪﻳ ﺔ واﻟﻬﺠﻤﺎ ت اﻹﻟﻜ‬‫ﻣﻊﺗﺰاﻳﺪ ﺣﺎﻻ ت‬
‫ﺗﻒ‬ ‫ﺑﻪ أ ً‬
‫ﻳﻀﺎ ﻓ ﻲ ﺷﻜﻞ رﻗﻤ ﻲ‪ .‬ﻣﻦ اﻟﻤﻨﻄﻘ ﻲ أن أﻣﺎن اﻟﻬﻮا‬ ‫ﺘﻔﻆ‬
‫ﺑﻞ ﻧﺤ‬‫ﺗﻨﺎ ﻓﺤ ﺴ ﺐ ‪،‬‬
‫ﺘﺰاﻳﺪًا ﻣﻦ ﺣﻴﺎ‬
‫ﺘﻤﺎﻋ ﻲ ‪ ،‬ﻻ ﻧﻘﻀ ﻲ ﺟﺰءًا ﻣ‬
‫ﺘﻮاﺻﻞ اﻻﺟ‬
‫ﺗﻒ اﻟﺬﻛﻴ ﺔ ووﺳﺎﺋﻞ اﻟ‬
‫ﻇﻬﻮر اﻟﻬﻮا‬
‫ﺜﺎل ‪"Superfish" [27] ،‬‬ ‫ﺛ ﺔ أﺣﺮف ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ ﻟﻠﺠﻤﻬﻮر اﻷوﺳﻊ‪ .‬ﻛﻤﺎ رأﻳﻨﺎ ﻣﻊ أﻣ‬ ‫ﺛﻼ‬‫ﺒﺌﻴﻦ ﻣﻦ اﻟﻮﻛﺎﻻ ت اﻟﻤﻜﻮﻧ ﺔ ﻣﻦ‬
‫ﺘ‬‫اﻟﺬﻛﻴ ﺔ ﻟﻪ أ ﻫﻤﻴ ﺔ ﻗﺼﻮى ‪ ،‬ﻟﻴ ﺲ ﻓﻘﻂ ﻟﻸﺷﺨﺎص اﻟﻤﺨ‬
‫ﺑﺄ ﻫﻤﻴ ﺔ‬
‫ﺗﻚ اﻟﺸﺨﺼﻴ ﺔ‪.‬ﺗﺤﻈﻰ أﺟﻬﺰة ‪iPhone‬‬
‫ﺑﻴﺎﻧﺎ‬‫ﺒﺮاﻣﺞ اﻟﻨﺼﻴ ﺔ"ﻳﻤﻜﻨﻬﻢ اﻟﻮﺻﻮل إﱃ‬
‫ُﻄﻠﻖ ﻋﻠﻴﻬﻢ اﺳﻢ "أﻃﻔﺎل اﻟ‬
‫ﺘﻰ ﻣﻦﻳ‬
‫ﺑﺎﺋﻊ ﻣﻬﻤﻞ وﻓﺠﺄة ﺣ‬‫ﺒﻪ اﻷﻣﺮ ﻫﻮ‬
‫ﺘﻄﻠ‬
‫ﻛﻞ ﻣﺎﻳ‬
‫ﺗﻮاﺻﻞ ‪Apple‬دﻓﻊ ﺣﺪود ﻣﺎ ﻫﻮ ﻣﻤﻜﻦ ﻓ ﻲ اﻷﻣﺎن‬
‫ﺑﻜﻠﻤﺎ ت ‪Apple‬اﻟﺨﺎﺻ ﺔ ‪" ،‬‬‫ﺘﺮﻛﻴﺰ ﻋﲆ اﻟﺨﺼﻮﺻﻴ ﺔ واﻷﻣﺎن‪ .‬أو‬
‫ﺘﻢﺗ ﺴﻮﻳﻘﻬﺎ ﻋﲆ أﻧﻬﺎ ﻣﺼﻤﻤ ﺔ ﻣﻊ اﻟ‬
‫ﺧﺎﺻ ﺔ ‪ ،‬ﺣﻴ ﺚﻳ‬
‫واﻟﺨﺼﻮﺻﻴ ﺔ‪.[31] ".‬‬

‫ُﻔﻘﺪ أي ﺿﻤﺎﻧﺎ ت أﻣﻨﻴ ﺔ وﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ اﻟﺤﺼﻮل ﻋﲆ اﻟ ﺴﻴﻄﺮة اﻟﻜﺎﻣﻠ ﺔ‬


‫ﺘﺮاﻗﻬﺎ ‪ ،‬ﻋﺎدة ﻣﺎﺗ‬
‫ﺑﻤﺠﺮد اﺧ‬‫ﺘﻤﻬﻴﺪ‪.‬‬
‫ﺗﻒ ذﻛ ﻲ ﺣﺪﻳ ﺚ أداةﺗﺤﻤﻴﻞ اﻟ‬
‫ﻳﻮﺟﺪ ﻓ ﻲ ﺻﻤﻴﻢ ﻛﻞ ﻫﺎ‬
‫ﺜﻮر‬
‫ﺜﻐﺮا ت ﻗﺪﺗﻢ اﻟﻌ‬
‫ﺒﺤ ﺚ ﻋﻨﻬﺎ ‪ ،‬ﺧﺎﺻ ﺔ وأن ﻫﺬه اﻟ‬
‫ﺜﻐﺮا ت اﻷﻣﻨﻴ ﺔ واﻟ‬
‫ﺋﻴ ﺴ ًﻴﺎ ﻟﻔﺼﻞ اﻟ‬ ‫ً‬
‫ﻫﺪﻓﺎ ر‬ ‫ﺑـ ‪iPhone‬‬‫ﺘﻤﻬﻴﺪ اﻟﺨﺎﺻ ﺔ‬
‫ﺑﺮاﻣﺞﺗﺤﻤﻴﻞ اﻟ‬‫ﺒﺪو‬
‫ﻋﲆ اﻟﺠﻬﺎز‪ .‬ﻋﲆ ﻫﺬا اﻟﻨﺤﻮ ‪،‬ﺗ‬
‫ﺘﺸﻮﻳ ﺶ ﻋﲆ‬
‫ﺒﻴﻖ اﻟ‬
‫ﺒﻴﻌ ﻲ أنﺗﺮﻏ ﺐ ﻓ ﻲﺗﻄ‬
‫ﺒﻴﻘﻪ ﻋﲆ اﻟﻤﺰﻳﺪ واﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﺠﺎﻻ ت ‪ ،‬ﻣﻦ اﻟﻄ‬
‫ﺗﻄ‬‫ﺘﺸﻮﻳ ﺶ و‬
‫ﺑﺎﻟ‬‫ﺘﻤﺎم ﻣﺆﺧ ﺮًا‬
‫ﻋﻠﻴﻬﺎ ﻫﻨﺎ ﻓ ﻲ اﻟﻤﺎﺿ ﻲ ‪[3 ، 14].‬ﻣﻊﺗﺠﺪد اﻻ ﻫ‬
‫ﻣﺤﻤﻞ إﻗﻼع ‪iPhone‬أ ً‬
‫ﻳﻀﺎ‪.‬‬

‫ﺘﻤﻜﻴﻦﺗﺸﻮﻳ ﺶ ﻣﺤﻤﻞ إﻗﻼع‬


‫ﺜﻴﺮ ﻟ‬
‫ﺑﻜ‬‫ﺜﺮ ﻣﻦ ذﻟﻚ‬
‫ﺘﺼﺤﻴﺤﺎ ت وأﻛ‬
‫ﺗﻨﻔﻴﺬ ‪"emmutaler" 1 ،‬و ﻫﻮ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷدوا ت واﻟ‬
‫ﺒﺤ ﺚ ‪ ،‬ﻧﻘﺪمﺗﺼﻤﻴﻢ و‬
‫ﻓ ﻲ ﻫﺬا اﻟ‬
‫ﺒﻴﺮة ﻓ ﻲ‬
‫ﺗﺤﻘﻴﻖﺗﻐﻄﻴ ﺔ ﻛ‬
‫ﺑﺸﻜﻞ آﻣﻦ ﻟﻠﻐﺎﻳ ﺔ و‬‫ﺘﺨﺪام ‪emmutaler ،‬ﻳﻤﻜﻨﻨﺎﺗﺸﻮﻳ ﺶ أﺟﺰاء ﻣﻌﻴﻨ ﺔ‬
‫ﺑﺎﺳ‬‫ﺘﻐﻄﻴ ﺔ‪ .‬ﻧﻈﻬﺮ أﻧﻪ‬
‫ﺑﺎﻟ‬‫ﺘﻄﻮر ﻣﻮﺟﻪ‬
‫ﺘﺨﺪام ﻣﺼﻬﺮ ﻣ‬
‫ﺑﺎﺳ‬
‫‪iPhone ،‬‬
‫ﺑﻨﻴ ﺔ اﻷﻣﺎن‬‫ﺘﻤﺎم ﺣﻮل‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﺸﺎﻓﺎ ت ﻣ‬
‫ﺑ ﺴﺮﻋ ﺔ‪ .‬أﺧﻴ ًﺮا ‪ ،‬ﻧﻘﺪم اﻛ‬‫ﺑ ًﻘﺎ‬
‫ﺘﺸﻔ ﺔﺳﺎ‬
‫ﺜﻮر ﻋﲆ ﻧﻘﺎط اﻟﻀﻌﻒ اﻟﻤﻜ‬
‫ﺘﻰ اﻟﻌ‬
‫ﺘﻬﺪﻓ ﺔ ﻣﻦ ﻣﺤﻤﻞ إﻗﻼع ‪iPhone‬وﺣ‬
‫اﻟﻤﻨﺎﻃﻖ اﻟﻤ ﺴ‬
‫ﺛﻨﺎءﺗﻄﻮﻳﺮ ‪emmutaler.‬‬
‫ﺘ ﻲﺗﻢ إﺟﺮاؤ ﻫﺎ أ‬
‫ﺘﻤﻬﻴﺪ ‪ ،‬واﻟ‬
‫ﻟﻤﺤﻤﻞ اﻟ‬

‫‪1.1‬اﻟﺪاﻓﻊ‬

‫ﺑﺮﻧﺎﻣﺞ ﻣﻮﺟﻮد ﻓ ﻲ أﺟﻬﺰة ‪iPhone.‬ﻋﲆ ﺣﺪ ﻋﻠﻤﻨﺎ ‪ ،‬ﻓﺈن ﻫﺬه‬‫ﺒﺎ راﺋﻌً ﺎ ﻟﻔﺼﻞ أي‬
‫ﺒً‬
‫ﺗﻒ اﻟﺬﻛﻴ ﺔﺗﻮﻓﺮﺳ‬
‫ﺑﺄﻣﺎن اﻟﻬﻮا‬‫ﺘﻤﺎم‬
‫ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ أﻋﻼه ‪ ،‬ﻓﺈن اﻟﺰﻳﺎدة اﻷﺧﻴﺮة ﻓ ﻲ اﻻ ﻫ‬
‫ً‬
‫ﻫﺪﻓﺎ‬ ‫ﺘﻤﻬﻴﺪ‬
‫ﺋﻴ ﺴﻴﺎن ﻟﻜﻮن أداةﺗﺤﻤﻴﻞ اﻟ‬
‫ﺒﺎن ر‬
‫ﺒ‬‫ﺑﺸﻜﻞ ﻋﺎم أﺣﺪ ث ﺣﺎﻟ ﺔ ﻣﻦ اﻟﻐﻤﻮض ﻋﲆ ﻣﺤﻤﻞ إﻗﻼع ‪ iPhone.‬ﻫﻨﺎكﺳ‬‫ﺒﻖ‬
‫ﺘ ﻲﺗﻄ‬
‫اﻷﻃﺮوﺣ ﺔ ﻫ ﻲ اﻷوﱃ ﻣﻦ ﻧﻮﻋﻬﺎ اﻟ‬
‫ﺘﻨ ﺴﻴﻘﺎ ت اﻟﻤﻌﻘﺪة‬
‫ﺑﺸﻜﻞ ﺧﺎص ﻟﻸﺧﻄﺎء ‪-‬ﻣﻦ اﻟ‬‫ﺘ ﻲﺗﻤﻴﻞ إﱃ أنﺗﻜﻮن ﻣﻌﺮﺿ ﺔ‬
‫ﺘﺤﻠﻴﻞ ‪-‬واﻟ‬
‫ﺑﺎﻟ‬‫ﺘﻌﻠﻘ ﺔ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬ ‫ﺘﺸﻮﻳ ﺶ‪ .‬أوﻻ ً ‪ ،‬ﻫﻨﺎك اﻟﻜ‬
‫ﺜﻴﺮ ﻣﻦ اﻟ‬ ‫ﺟﻴﺪًا ﻟﻠ‬
‫ﺜﻞ رﺳﺎﺋﻞ ‪USB‬أو ‪ASN.1.‬‬
‫ﺘﻠﻔ ﺔ ‪ ،‬ﻣ‬
‫اﻟﻤﺨ‬

‫ﺛﻘ ﺔ ﻗﻮﻳ ﺔ‪.‬‬ ‫ً‬


‫أﺻﻼ ﻟ ﺴﻠ ﺴﻠ ﺔ‬ ‫ﺛﺎﻧ ًﻴﺎ ‪ ،‬ﻣﻦ وﺟﻬ ﺔ ﻧﻈﺮ اﻟﺨﺼﻢ ‪،‬ﻳﺸﻜﻞ ﻣﺤﻤﻞ اﻹﻗﻼع‬
‫ﺒﻴﺮة‪.‬‬
‫ﻳﻤﻜﻦ أنﺗﻜﻮن اﻟﻤ ﺴﺎوﻣ ﺔ ﻋﻠﻴﻬﺎ ذا ت ﻗﻴﻤ ﺔ ﻛ‬

‫ﺒﻦﺳﻮﻳ ﺴﺮي ﺷﻬﻴﺮ‪.‬‬


‫ﺘﺎﻟﺮ" ‪ ،‬ﺟ‬
‫‪1‬ﻣﺰﻳﺞ ﻣﻦ "ﻣﻀﺎ ﻫﺎة" و "إﻳﻤﻨ‬

‫‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺤﺪﻳﺎ ت‬
‫‪1.2‬اﻟ‬ ‫‪2‬‬

‫ﺘﺤﺪﻳﺎ ت‬
‫‪1.2‬اﻟ‬

‫ﺑﺪون أي رﻣﺰ أو ﻣﻌﻠﻮﻣﺎ ت‬‫ﺑﺖ‬


‫ﺛﺎ‬‫ﺑﺸﻜﻞ‬‫ﺒﻂ‬
‫ﺗ‬‫ﺑﻌﺎد ﻣﺮ‬
‫ﺛﻨﺎﺋ ﻲ اﻷ‬‫ﺛﻨﺎﺋ ﻲ‬‫ﺒﺎرة ﻋﻦ ﻛﺎﺋﻦ‬
‫ﺋﻴ ﺴﻴ ﺔ‪ .‬ﻣﺤﻤﻞ اﻹﻗﻼع ﻋ‬
‫ﺛ ﺔﺗﺤﺪﻳﺎ ت ر‬
‫ﺛﻼ‬‫ﺘﻤﻬﻴﺪ ‪ ،‬ﻧﻮاﺟﻪ‬
‫ﻋﻨﺪ ﻣﺤﺎوﻟ ﺔﺗﺸﻮﻳ ﺶ أداةﺗﺤﻤﻴﻞ اﻟ‬
‫ﺧﺼﻴﺼﺎ ﻟﻠﻌﻤﻞ ﻋﲆ‬
‫ً‬ ‫ﺘﺸﻮﻳ ﺶ اﻟﻌﺎدﻳ ﺔ ‪ ،‬ﺣﻴ ﺚﻳﻤﻜﻦ ﻟﻠﻤﺮء اﻟﻮﺻﻮل إﱃ اﻟﻜﻮد اﻟﻤﺼﺪري‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻓﻬﻮ ﻣﺼﻤﻢ‬
‫ﻗ ﺴﻢ‪ .‬ﻫﺬاﻳﻘﻒ ﻓ ﻲﺗﻨﺎﻗﺾ ﺻﺎرخ ﻣﻊ ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺗﻌﻠﻴﻤﺎ ت ﻣﺨﺼﺼ ﺔ ﻣﻦ‬
‫ﺘﻰ ﻋﲆﺳﺠﻼ ت و‬
‫ﺘﻮي ﺣ‬
‫ﺘﻮﺳﻴﻊ ‪ ،‬ﻓﺈﻧﻪﻳﺤ‬
‫ﺑﻞ ﻟﻠ‬
‫ﺘﻨﻔﻴﺬ‪ .‬ﻧﻈ ﺮًاﻷن ﻣﻌﻴﺎر ‪ARM‬ﻗﺎ‬
‫ﺘﻤﺪ ﻋﲆ اﻟ ﺴﻠﻮك اﻟﻤﺤﺪد ﻟﻠ‬
‫ﺒﺎ ﻣﺎﻳﻌ‬
‫ﻣﻌﺎﻟﺠﺎ ت ‪Apple ،‬ﻟﺬﻟﻚ ﻏﺎﻟ ً‬
‫ﺘﺨﺪام‬
‫ﺛﻢ ‪ ،‬ﻻﻳﻤﻜﻨﻨﺎ اﺳ‬‫ﺘﻌﺪدة‪ .‬وﻣﻦ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻟﻮﺻﻮل اﻟﻜﺎﻣﻞ إﱃ ذاﻛﺮة اﻟﻮﺻﻮل اﻟﻌﺸﻮاﺋ ﻲ واﻷﺟﻬﺰة اﻟﻤ‬‫ﺘﻢﺗﺸﻐﻴﻠﻪ ﻋﲆ اﻟﻤﻌﺪن ‪،‬‬
‫ﺘﻮﻗﻊ أنﻳ‬
‫‪Apple.‬أﺧﻴ ﺮًا ‪ ،‬ﻣﻦ اﻟﻤ‬
‫ﺒﺎر‪.‬‬
‫ﺘ‬‫ﺘﺨﺪم ﻓ ﻲ اﻻﻋ‬
‫ﺛﻨﺎﺋﻴﺎ ت ﻣ ﺴﺎﺣ ﺔ اﻟﻤ ﺴ‬‫ﺘﻘﻠﻴﺪﻳ ﺔ ‪،‬ﻷﻧﻬﺎ ﻣﺼﻨﻮﻋ ﺔ ﻣﻊ وﺿﻊ‬
‫ﺘﺸﻮﻳ ﺶ اﻟ‬
‫أدوا ت اﻟ‬

‫‪1.3‬اﻟﺤﻞ‬

‫ﺘﻤﻬﻴﺪ‪ .‬إﺣﺪى‬
‫ﺘﺪﻋﺎء أﺟﺰاء ﻣﻌﻴﻨ ﺔ ﻣﻦ أداةﺗﺤﻤﻴﻞ اﻟ‬
‫ﺛﻨﺎﺋ ﻲ ﻋﺎديﻳﻤﻜﻨﻪ اﺳ‬
‫ﺘ ﻲﺗ ﺴﺎﻋﺪ ﻓ ﻲ إﻧﺸﺎء ﻧﻈﺎم ‪Linux ELF‬‬
‫ﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷدوا ت اﻟ‬
‫ﺣﻠﻨﺎ ‪- emmutaler -‬ﻋ‬
‫ﺑﻔﻀﻞ اﻟﺠﻬﻮد‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬‬‫ﺑﺸﺮﻛ ﺔ ‪Apple‬أو أﺟﻬﺰة ﻣﻔﻘﻮدة‪.‬‬‫ﺘﻌﺎﻣﻞ ﻣﻊ أيﺗﻔﺎﺻﻴﻞ ﺧﺎﺻ ﺔ‬
‫ﺑﺎﻟ‬‫ﺘ ﻲﺗ ﺴﻤﺢ ﻟﻨﺎ‬
‫ﺜﻨﺎﺋﻴ ﺔ اﻟ‬
‫ﺘﺼﺤﻴﺢ اﻟ‬
‫اﻷدوا ت اﻟﻤﻬﻤ ﺔ ‪ ،‬ﻫ ﻲ أداة اﻟ‬
‫ﺑﻮاﺳﻄ ﺔ ‪Linux ELF.‬‬‫ﺘﺨﺪام اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺟﺰاء‬
‫ﺘﺮداد ﻣﻌﻈﻢ اﻟﺮﻣﻮز وﻳﻤﻜﻦ اﺳ‬
‫ﺒﻴﺮة ‪،‬ﻳﻤﻜﻦ اﺳ‬
‫اﻟﻬﻨﺪﺳﻴ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ اﻟﻜ‬

‫ﺘﺨﺪام أﺣﺪ ث ﻣﺰاﻣﻴﺮ دون أيﺗﻌﺪﻳﻼ ت ﻋﲆ اﻷﻟﻮاح ﻧﻔ ﺴﻬﺎ‪.‬‬


‫ﺑﺎﺳ‬‫ﺑﺸﻜﻞ ﻋﺎم ‪ ،‬ﻫﺬاﻳ ﺴﻤﺢ ﻟﻨﺎ‬

‫‪1.4‬ﻧﻈﺮة ﻋﺎﻣ ﺔ‬

‫ﺘﺮض‪.‬‬
‫ﺘﻬﺪﻳﺪ اﻟﻤﻔ‬
‫ﺗﺼﻤﻴﻢ ‪emmutaler ،‬ﻳﻘﺪم اﻟﻔﺼﻞ ‪3‬ﻧﻤﻮذج اﻟ‬
‫ﺒﻞ أنﻳﻘﺪم اﻟﻔﺼﻞ ‪4‬‬
‫ﺘﺎﻟﻴ ﺔ‪ .‬ﻗ‬
‫ﻳﻘﺪم اﻟﻔﺼﻞ ‪2‬اﻟﻤﻌﻠﻮﻣﺎ ت اﻷﺳﺎﺳﻴ ﺔ اﻟﻼزﻣ ﺔ ﻟﻔﻬﻢ اﻟﻔﺼﻮل اﻟ‬

‫ﺘ ﻲﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ‬


‫ﺑﻜ ﺔ اﻟ‬
‫ﺘﺎﺋﺞ اﻟﻤﺮ‬
‫ﺒﺎ إﱃ ﺟﻨ ﺐ ﻣﻊﺗﻔﺎﺻﻴﻞ اﻹﻋﺪاد اﻟﻐﺎﻣﺾ ﻟﺪﻳﻨﺎ‪.‬ﻳﻘﺪم اﻟﻔﺼﻞ ‪6‬اﻟﻨ‬
‫ﺘﻔﺼﻴﻞ ‪ ،‬ﺟﻨ ً‬
‫ﺑﺎﻟ‬
‫ﺗﻨﻔﻴﺬ ‪emmutaler‬‬
‫ﺑﻌﺪ ذﻟﻚ ‪،‬ﻳﺼﻒ اﻟﻔﺼﻞ ‪5‬‬
‫ﺘﻤﻞ‪ .‬أﺧﻴ ﺮًا ‪،‬ﻳﻀﻊ اﻟﻔﺼﻞ ‪ 8‬ﻫﺬه اﻷﻃﺮوﺣ ﺔ ﻓ ﻲﺳﻴﺎق اﻷﻋﻤﺎل ذا ت اﻟﺼﻠ ﺔ‪.‬‬
‫ﺒﻠ ﻲ اﻟﻤﺤ‬
‫ﺘﻘ‬‫ﺒﺤ ﺚ اﻟﻤ ﺴ‬
‫ﻣﻊ ‪emmutaler ،‬وﻳﻨﺎﻗ ﺶ اﻟﻔﺼﻞ ‪7‬أوﺟﻪ اﻟﻘﺼﻮر ﻓ ﻲ ﺣﻠﻨﺎ وﻛﺬﻟﻚ اﻟ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪2‬‬

‫ﺧﻠﻔﻴ ﺔ‬

‫ﺘﻤﻬﻴﺪ‬
‫ﺘﻮي أﺣﺪ ث أﺟﻬﺰة ‪ARM Mac‬ﻋﲆ ﻧﻔ ﺲ أداةﺗﺤﻤﻴﻞ اﻟ‬
‫ﺗﺤ‬‫ﺘﻰ ﻣﻌﻈﻢ ‪OS1 [16].‬‬
‫ﺘﻤﻬﻴﺪ اﻟﺸﺎﺋﻌ ﺔ وﺣ‬
‫ﺒﺎ ﻓ ﻲ ﻧﻔ ﺲ أداةﺗﺤﻤﻴﻞ اﻟ‬
‫ﺗﻘﺮﻳ ً‬
‫ﺘﺮك ﺟﻤﻴﻊ أﺟﻬﺰة ‪Apple‬‬
‫ﺗﺸ‬
‫ﺑﻌﺾ‬‫ﺗﻬﻢ ‪ ،‬ﻣﻊ‬
‫ﺘﻪ ﻣﻦ اﻵن ﻓﺼﺎﻋﺪًا ﺣﻮل أﺟﻬﺰة ‪iPhone / iOS‬ﻋﲆ ﻣﻌﻈﻢ أﺟﻬﺰ‬
‫ﺒﻖ أي ﺷ ﻲءﺗﻤ ﺖ ﻣﻨﺎﻗﺸ‬
‫ﺜﻞ أﺣﺪ ث أﺟﻬﺰة ‪iPhone [18].‬ﻟﺬﻟﻚ ‪،‬ﻳﺠ ﺐ أنﻳﻨﻄ‬
‫ﻣ‬
‫ﺘﻼﻓﺎ ت‪.‬‬
‫اﻻﺧ‬

‫ﺗﻨ ﺴﻴﻖ ﺻﻮرة‬


‫ﺘﻤﻬﻴﺪ اﻟﻜﺎﻣﻞ ﻟﻨﻈﺎم ‪iOS ،‬و‬
‫ﺗ ﺴﻠ ﺴﻞ اﻟ‬
‫ﺑﺸﺮﻛ ﺔ ‪Apple ،‬و‬‫ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎ ت اﻷﺳﺎﺳﻴ ﺔ ﺣﻮل اﻟﻤﺼﻄﻠﺤﺎ ت اﻟﺨﺎﺻ ﺔ‬‫ﻣﻦ أﺟﻞ ﻓﻬﻢ أﻓﻀﻞ ‪ ،‬ﻧﻘﺪم‬
‫ﺘﺸﻮﻳ ﺶ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﺳﻴﻜﻮن ﻫﻨﺎك ﻟﻤﺤ ﺔ ﻣﻮﺟﺰة ﻋﻦ أ ﻫﻢ ﺟﻮاﻧ ﺐ اﻟ‬‫ﺘﺸﺎﻓﻬﺎ ﻣﺆﺧ ﺮًا‪.‬‬
‫ﺘ ﻲﺗﻢ اﻛ‬
‫ﺘﻤﻬﻴﺪ اﻟ‬ ‫ﺘﺨﺪﻣﻪ ‪ ،‬وأﺧﻴﺮا ً‬
‫ﺛﻐﺮة ﻓ ﻲ أداةﺗﺤﻤﻴﻞ اﻟ‬ ‫ﺘﻤﻬﻴﺪ اﻟﺬيﻳ ﺴ‬
‫اﻟ‬
‫ﺘﺨﺪﻣ ﺔ ﻓ ﻲ ﻫﺬه اﻷﻃﺮوﺣ ﺔ‪.‬‬
‫اﻟﻤ ﺴ‬

‫ﺗ ﺴﻠ ﺴﻞﺗﻤﻬﻴﺪ ‪iOS‬‬
‫‪2.1‬‬

‫ﺘﻠﻔ ﺔ ﻟﻬﺎ أﺳﻤﺎء‬


‫ﺘﻜﻮن ﻣﻦ ﻋﺪة ﻣﺮاﺣﻞ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن اﻟﻤﺮاﺣﻞ اﻟﻤﺨ‬
‫ﺘﻤﻬﻴﺪ ﻋﲆ أﺟﻬﺰة ‪Apple‬ﻣﻦ أداةﺗﺤﻤﻴﻞﺗﻤﻬﻴﺪ أﺣﺎدﻳ ﺔ اﻟﻤﺮﺣﻠ ﺔ ‪ ،‬وﻟﻜﻨﻬﺎﺗ‬
‫ﺘﻜﻮنﺗ ﺴﻠ ﺴﻞ اﻟ‬
‫ﻻﻳ‬
‫ﺘﺮداد‬
‫ﺜﻞ اﻻﺳ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻷﺣﺪا ث ﻣ‬‫ﺑﺪءًا ﻣﻦﺗﺸﻐﻴﻞ اﻟﺠﻬﺎز ‪،‬‬‫ﺘﻤﻬﻴﺪ ‪،‬‬
‫ﺒﻊ ﻣﻦ ﻧﻔ ﺲ ﻗﺎﻋﺪة اﻟﺸﻔﺮة‪.‬ﻳﻮﺿﺢ اﻟﺸﻜﻞ ‪2.1‬ﻛﻴﻔﻴ ﺔ ﻋﻤﻞﺗ ﺴﻠ ﺴﻞ اﻟ‬
‫ﺘﻠﻔ ﺔ ‪ ،‬إﻻ أﻧﻬﺎﺗﻨ‬
‫وأﻏﺮاض ﻣﺨ‬
‫ﺜﺮ‬
‫ﺒﻊ وﺻﻒ أﻛ‬
‫ﺘ‬‫ﺘﺎﻟﻴ ﺔ‪.‬ﻳ‬
‫ﺘﺤﻘﻖ ‪-‬ﻓ ﻲ اﻟﻤﺮﺣﻠ ﺔ اﻟ‬
‫ﺗﻨﻔﻴﺬ ﻫﺎ ‪-‬إذا ﻧﺠﺢ اﻟ‬
‫ﺘﺤﻘﻖ ﻣﻨﻬﺎ و‬
‫ﺛﻢ اﻟ‬‫ﺘﻢﺗﺤﻤﻴﻞ ﻛﻞ ﻣﺮﺣﻠ ﺔ ‪،‬‬
‫ﺘﻠﻔ ﺔ ﻣﻌً ﺎﺳﻠ ﺴﻠ ﺔﺗﻤﻬﻴﺪ آﻣﻨ ﺔ‪.‬ﻳ‬
‫ﺘﺮﻗﻴ ﺔ‪.‬ﺗﺸﻜﻞ اﻟﻤﺮاﺣﻞ اﻟﻤﺨ‬
‫أو اﻟ‬
‫ﺗﻔﺼﻴ ﻼ ً ﻟﻠ‬
‫ﺘﺤﻘﻖ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪2.3.‬‬

‫ﺘﻠﻔ ﺔ واﻟﻌﻤﻠﻴﺎ ت ذا ت اﻟﺼﻠ ﺔ ﻫ ﻲ ﻛﻤﺎﻳﻠ ﻲ‪:‬‬


‫إن أﻏﺮاض اﻟﻤﺮاﺣﻞ اﻟﻤﺨ‬

‫ﺘﻤﻬﻴﺪ اﻷوﻟ ﻲ وﻟﺪﻳﻪ أﻗﻞ ﻗﺪر ﻣﻤﻜﻦ ﻣﻦ‬


‫ﺜﻬﺎ أوﺗﻐﻴﻴﺮ ﻫﺎ‪ .‬إﻧﻪ ﻣﺤﻤﻞ اﻟ‬
‫ﺘﺎﻟ ﻲ ﻻﻳﻤﻜﻦﺗﺤﺪﻳ‬
‫ﺑﺎﻟ‬
‫ﺘﻢ ﻧ ﺴﺦ ‪SecureROM‬ﻓ ﻲ ذاﻛﺮة اﻟﻘﺮاءة ﻓﻘﻂ ﻟﻠﺠﻬﺎز ‪(ROM) 2‬و‬
‫•ﻳ‬
‫ﺘﻮي ﻋﲆ ﺷﻬﺎدة ﺟﺬر ‪Apple‬اﻟﻤﺸﻔﺮة‪.‬‬
‫ﺘﻤﻬﻴﺪ اﻵﻣﻨ ﺔ ‪،‬ﺗﺤ‬
‫ﺘﺄﺳﻴ ﺲﺳﻠ ﺴﻠ ﺔ اﻟ‬
‫ﺑ ﺔ‪ .‬ﻟ‬
‫اﻟﻮﻇﺎﺋﻒ اﻟﻤﻄﻠﻮ‬

‫ﺜﺎل ﺻﻮرة ‪iBoot‬ﻏﻴﺮ ﺻﺎﻟﺤ ﺔ‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺤﻤﻴﻞ ‪iBSS‬ﻓ ﻲ ﺣﺎﻟ ﺔ اﻟﻔﺸﻞ ‪-‬ﻋﲆﺳ‬
‫ﺗﻮﻛﻮل ‪USB‬ﻟ‬
‫ﺑﺮو‬‫ﺘ ﺔ ﻟﻠﺠﻬﺎز )‪ (DFU‬ﻫ ﻲ ﺟﺰء ﻣﻦ ‪SecureROM.‬إﻧﻪ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺗﺮﻗﻴ ﺔ اﻟ‬
‫•‬
‫‪-‬أو ﻋﻦ ﻗﺼﺪ ﻣﻦ ﺧﻼل اﻟﻀﻐﻂ ﻋﲆ أزرار ﻣﺤﺪدة ‪3.‬‬

‫ﺘﻰ‬
‫ﺘﺤﺪﻳ ﺚ ‪ ،‬وﺣ‬
‫ﺘﺮداد أو اﻟ‬
‫ﺑﺪء ﻋﻤﻠﻴ ﺔ اﻻﺳ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚﺗﺤﻤﻴﻞ ‪kernelcache ،‬و‬‫ﺘﻮي ﻋﲆ ﻣﻌﻈﻢ اﻟﻮﻇﺎﺋﻒ ‪،‬‬
‫ﺋﻴ ﺴ ﻲ ﻣﻦ ﻣﺤﻤﻞ اﻹﻗﻼع‪.‬ﻳﺤ‬
‫‪ • iBoot‬ﻫﻮ اﻟﺠﺰء اﻟﺮ‬
‫ﺘﺸﺨﻴﺺ‪.‬‬
‫اﻟ‬

‫ﺘﺤﻤﻴﻞ‬
‫)‪ • iBoot Single Stage (iBSS‬ﻫﻮ إﺻﺪارُﻣﺠﺮد ﻣﻦ ‪iBEC‬و ﻫﻮ ﻣ ﺴﺆول ﻋﻦ اﻟ‬
‫ﻫﻮ ‪ -‬ﻫ ﻲ‪.‬‬

‫ﺘﻠﻒ‪.‬‬
‫ﺘ ﺴﻮﻳﻖ ﻗﺪﻳﺨ‬
‫‪1‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻗ ﺴﻢ اﻟ‬
‫ﺗ ﻲ اﻻﺳﻢ‪.‬‬
‫‪2‬ﻣﻦ أﻳﻦﻳﺄ‬

‫ﺛﻮان أﺧﺮى‪.‬‬
‫ٍ‬ ‫ﺘﻤﺮار ﻓ ﻲ اﻟﻀﻐﻂ ﻋﲆ زر ﺧﻔﺾ اﻟﺼﻮ ت ﻟﻤﺪة ‪5‬‬
‫ﺛﻢﺗﺤﺮﻳﺮ زر اﻟﻄﺎﻗ ﺔ واﻻﺳ‬‫ﺛﻮان ‪،‬‬
‫ٍ‬ ‫ﺜﺎل ‪ ،‬ﻓ ﻲ ﺟﻬﺎز ‪iPhone X ،‬ﻋﻠﻴﻚ اﻟﻀﻐﻂ ﻋﲆ زري اﻟﻄﺎﻗ ﺔ وﺧﻔﺾ اﻟﺼﻮ ت ﻟﻤﺪة ‪5‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫‪3‬ﻋﲆﺳ‬

‫‪3‬‬
‫‪Machine Translated by Google‬‬

‫‪2.2.‬ﻣﺼﻄﻠﺤﺎ ت ‪Apple‬اﻟﺨﺎﺻ ﺔ‬ ‫‪4‬‬

‫ﺘﺮداد‬
‫ﺘﺮﻗﻴ ﺔ واﻻﺳ‬
‫)‪• iBoot Epoch Change (iBEC‬ﻣ ﺴﺆول ﻋﻦﺗﻨﻔﻴﺬ اﻟ‬
‫اﻟﻌﻤﻠﻴﺎ ت‪.‬‬

‫ﺘﺪادا ت ‪kernel‬اﻟﻤﺤﻤﻠ ﺔ ﻣﺪﻣﺠ ﺔ ﻓ ﻲ ﻣﻠﻒ واﺣﺪ‪.‬‬


‫‪ • Kernelcache‬ﻫﻮ ﻧﻮاة داروﻳﻦ وﺟﻤﻴﻊ اﻣ‬
‫ﺜﻞ أي ﺟﻬﺎز آﺧﺮ‪.‬‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﺘﺸﻐﻴﻞ أﺧﻴ ًﺮا ‪،‬‬
‫ﺘﻢﺗﺸﻐﻴﻞ ﻧﻈﺎم اﻟ‬
‫ﺘﺤﻜﻢ إﱃ ‪kernelcache ،‬ﻳ‬
‫ﺑﻤﺠﺮد ﻧﻘﻞ اﻟ‬

‫ﺗﺸﻐﻴﻞ اﻟﺠﻬﺎز‬ ‫‪SecureROM‬‬ ‫‪iBoot‬‬ ‫ﻛﻴﺮﻧﻠﻜﺎ ش‬

‫ﺘﺸﻐﻴﻞ‬
‫ﺘﺤﻘﻖ واﻟ‬
‫ﺘﺤﻤﻴﻞ واﻟ‬
‫اﻟ‬ ‫‪DFU‬‬ ‫ﺘﺮﻗﻴ ﺔ‬
‫ﺘﺮداد ‪ /‬اﻟ‬
‫اﻻﺳ‬
‫ﻳﺠﺮي‬

‫‪iBSS‬‬ ‫‪iBEC‬‬

‫ﺒ ﺲ ﻣﻦ ‪[16].‬‬
‫ﺘ‬‫ﺘﻤﻬﻴﺪ ﻟﺠﻬﺎز ‪iPhone ،‬ﻣﻘ‬
‫ﺗ ﺴﻠ ﺴﻞ اﻟ‬
‫اﻟﺸﻜﻞ ‪2.1:‬‬

‫ﺑﺸﺮﻛ ﺔ ‪Apple‬‬‫‪2.2‬اﻟﻤﺼﻄﻠﺤﺎ ت اﻟﺨﺎﺻ ﺔ‬


‫ﺘﻢ ﺟﻤﻊ أ ﻫﻤﻬﺎ ﻓ ﻲ ﻫﺬا اﻟﻘ ﺴﻢ‪.‬‬
‫ﺘﺼﺎرا ت ﻣﺤﺪدة ﻣﻦ ‪Apple.‬ﻳ‬
‫ﺒﺎ ﻣﺼﻄﻠﺤﺎ ت واﺧ‬
‫ﺘﺨﺪم ﻏﺎﻟ ً‬
‫ﺧﻼل ﻫﺬه اﻟﺮﺳﺎﻟ ﺔ ‪،‬ﺳﻨ ﺴ‬

‫ﺘﻮي ﻣﻌﻈﻢ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﺗﺤ‬‫ﺒﻴﻘﺎ ت اﻟﻔﻌﻠﻴ ﺔ‪.‬‬
‫ﺘﻄ‬‫ﺜﺎلﺗﻨﻔﻴﺬ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻢ ﻋﲆﺳ‬
‫ﺋﻴ ﺴ ﻲ ﻓ ﻲ اﻟﺠﻬﺎز ‪ ،‬ﺣﻴ ﺚﻳ‬
‫ﺒﻴﻘﺎ ت )‪(AP‬إﱃ اﻟﻤﻌﺎﻟﺞ اﻟﺮ‬
‫ﺘﻄ‬‫ﻳﺸﻴﺮ ﻣﻌﺎﻟﺞ اﻟ‬
‫ﺑﻴﻦ اﻟﻤﻬﺎم اﻷﺧﺮى ذا ت‬‫ﺘﺨﺪم ﻣﻦ‬
‫ﺑﻴﺎﻧﺎ ت اﻟﻤ ﺴ‬‫ﺘﺮك ﻣ ﺴﺆول ﻋﻦﺗﺸﻔﻴﺮ‬
‫ﺑـ ‪Secure Enclave Processor (SEP) ،‬و ﻫﻮ ﻣﻌﺎﻟﺞ ﻣﺸ‬‫اﻷﺟﻬﺰة ﻋﲆ ﻣﺎﻳ ﺴﻤﻰ‬
‫ﺑﺎﻷﻣﺎن‪.‬‬‫اﻟﺼﻠ ﺔ‬
‫ﺑﻞ ﻣﺤﻞ ﻣﻌﻠﻮﻣﺎ ت إﺻﺪار‬
‫ﺒﺎ ﻣﺎﻳﺤﻞ اﺳﻢﺗ ﺴﻮﻳﻖ ‪AP‬اﻟﻤﻘﺎ‬
‫ﺘﺼﻨﻴﻊ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻏﺎﻟ ً‬
‫ﺛﻨﺎء اﻟ‬
‫ﺘﻢ ﺣﺮﻗﻪ ﻓ ﻲ ﻧﻘﻄ ﺔ اﻟﻮﺻﻮل أ‬
‫ﺘﻢ ﻗﺮاءة ‪SecureROM‬ﻓﻘﻂ ‪،‬ﻳ‬
‫ﻧﻈ ﺮًاﻷﻧﻪﻳ‬
‫‪SecureROM‬اﻟﻤﻄﻮﻟ ﺔ‪.‬‬
‫ﺑﻴﻦ أﺳﻤﺎء ‪AP‬وإﺻﺪارا ت ‪iPhone4‬و ‪SecureROM.‬‬‫راﺟﻊ اﻟﺠﺪول ‪2.1‬ﻟﻼﻃﻼع ﻋﲆ اﻟﻤﺮاﺳﻼ ت‬

‫ﺗ ﺴﻮﻳﻖ ‪iPhone AP /‬اﻻﺳﻢ اﻟﺪاﺧﻠ ﻲ ‪SecureROM‬اﻹﺻﺪار ‪T8015 iPhone XS A12 / T8020 iPhone 11 A13 / T8030 iPhone 12 A14 / T8101‬‬

‫‪A iBoot-3332.0.0.1.23‬‬
‫‪5 ISA iPhone 7 A10ARMv8.2-‬‬ ‫‪A ARMv8.3-‬‬
‫‪/ T8010 iPhone‬‬ ‫‪X A11‬‬‫‪A/‬‬
‫‪iBoot-2696.0.0.1.33 ARMv8.1-‬‬
‫‪iBoot-3865.0.0.4.7‬‬
‫‪ARMv8.4-A iBoot-5281.0.0.100.22 ARMv8.5-A‬‬
‫‪iBoot-4479.0.0.100.4‬‬

‫ﺑﻞ ﻟﻬﺎ وأﺣﺪ ث إﺻﺪار ‪SecureROM‬ﻣﻦ ﻛﻞ ﻧﻘﻄ ﺔ وﺻﻮل ﻟﺪﻳﻨﺎ‪.‬‬


‫ﺘ ﺴﻮﻳﻘﻴ ﺔ ﻟﻨﻘﺎط اﻟﻮﺻﻮل وﺟﻬﺎز ‪iPhone‬اﻟﻤﻘﺎ‬
‫اﻟﺠﺪول ‪2.1:‬اﻷﺳﻤﺎء اﻟ‬

‫ﺘﻮي ﻣﻌﺎﻟﺠﺎ ت ‪Apple‬ﻋﲆ‬


‫ﺜ ﺔ ‪،‬ﺗﺤ‬
‫ﺜﻞ أي ﺷﺮﻳﺤ ﺔ ﺣﺪﻳ‬
‫ﺑﻨﻘﺎط اﻟﻮﺻﻮل ﻫ ﻲ ﻣﺎﻳ ﺴﻤﻰ ب "اﻟﺼﻤﺎﻣﺎ ت"‪ .‬ﻣ‬‫ﺘﻌﻠﻖ‬
‫ﺘﺨﺪام ﻓﻴﻤﺎﻳ‬
‫اﻟﻤﺼﻄﻠﺤﺎ ت اﻷﺧﺮى اﻟﺸﺎﺋﻌ ﺔ اﻻﺳ‬
‫ﺑﻮاﺳﻄ ﺔ ﻧﻘﻄ ﺔ اﻟﻮﺻﻮل ﻣﻦ ﺧﻼل ﻫﺬه اﻟﻤﻮاﻗﻊ‪.‬‬‫ﺘﻢﺗﻌﻴﻴﻦ اﻟﺬاﻛﺮة إﱃ ﻣﻮاﻗﻊ ﻣﺤﺪدة وﻳﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻴﻬﺎ‬
‫ﺘﻜﻮﻳﻦ‪.‬ﻳ‬
‫ﺘﺨﺰﻳﻦ ﻣﻌﻠﻤﺎ ت اﻟ‬
‫ﺘﺨﺪم ﻟ‬
‫ﺗﺴ‬‫اﻟﻌﺪﻳﺪ ﻣﻦ ﻫﺬه ‪ ،‬و‬
‫ﺘﺎج‪.‬ﻳﺸﻴﺮ وﺿﻊ اﻷﻣﺎن ﻟﻠﺠﻬﺎز إﱃ ﻣﺎ إذا ﻛﺎنﻳﻤﻜﻨﻪﺗﺤﻤﻴﻞ رﻣﺰ ّ‬
‫ﻣﻮﻗﻊ ﻣﻦ ‪Apple‬أو أي‬ ‫ﺘﻜﻮﻳﻨﺎ ت اﻟﻤﻬﻤ ﺔ اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﻟﻤﺼﺎ ﻫﺮ وﺿﻊ اﻷﻣﺎن وﺣﺎﻟ ﺔ اﻹﻧ‬
‫ﺑﻌﺾ اﻟ‬‫ﺘﻀﻤﻦ‬
‫ﺗ‬
‫رﻣﺰ ﻓﻘﻂ‪ .‬ﻏﻴﺮ آﻣﻦ‬

‫ﺑﺸﻜﻞ أﺳﺎﺳ ﻲ ﻋﲆ أﺟﻬﺰة ‪iPhone.‬‬ ‫ﺒﻊﺗﻮﺟﺪ ‪SecureROM‬و ‪APs‬أ ً‬


‫ﻳﻀﺎ ﻓ ﻲ اﻷﺟﻬﺰة اﻷﺧﺮى ‪ ،‬ﻟﻜﻦ ﻫﺬه اﻷﻃﺮوﺣ ﺔﺗﺮﻛﺰ‬ ‫ﺑﺎﻟﻄ‬
‫‪4‬‬
‫ﺘﻮي ﻋﲆ ‪iBoot ،‬إﻻ أن ﻫﺬه ﻫ ﻲﺳﻠ ﺴﻠ ﺔ اﻹﺻﺪار اﻟﻔﻌﻠﻴ ﺔ اﻟﻤﻮﺟﻮدة داﺧﻞ ﺻﻮرة ‪SecureROM.‬‬
‫‪5‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أنﺳﻠ ﺴﻠ ﺔ اﻹﺻﺪارﺗﺤ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻨ ﺴﻴﻖ ‪IMG4‬‬


‫‪2.3‬‬ ‫‪5‬‬

‫ﺘﺎﺟﺮ ﻋﲆ "ﺻﻮا ب" وﻳﻜﻮن آﻣﻨًﺎ‪.‬‬


‫ﺑﻴﻌﻪ ﻓ ﻲ اﻟﻤ‬‫ﺘﻢ‬
‫ﺘﺎج أي ﺟﻬﺎزﻳ‬
‫ﺘﻢﺗﻌﻴﻴﻦ ﺣﺎﻟ ﺔ إﻧ‬
‫ﺑﻮاﺳﻄ ﺔ ﻣﻮﻇﻔ ﻲ ‪Apple 6.‬ﺳﻴ‬‫ﺒﺎ‬
‫ﺑﺸﻜﻞ ﺣﺼﺮيﺗﻘﺮﻳ ً‬‫ﺘﺨﺪام اﻷﺟﻬﺰة‬
‫ﺘﻢ اﺳ‬
‫ﻳ‬

‫ﺗﻨ ﺴﻴﻖ ‪IMG4‬‬


‫‪2.3‬‬

‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺜﻮر ﻋﲆ اﻟ‬
‫ﺗﻢ اﻟﻌ‬
‫ﺜﻨﺎء ‪kernelcache ،‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺒﺮﻣﺠﻴ ﺔ واﻟ‬ ‫ﺑ ًﻘﺎ ﻣﻦ ﻛﻞ ﻣﻦ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬ ‫ﺘﻜﻮن ﻛﻞ ﻣﺮﺣﻠ ﺔ ﻣﻦ اﻟﻤﺮاﺣﻞ اﻟﻤﺬﻛﻮرةﺳﺎ‬
‫ﺛﻨﺎﺋ ﻲ ‪،‬ﺗ‬‫ﺒﻴﻖ‬
‫ﺜﻞ أيﺗﻄ‬
‫ﻣ‬
‫ﺒﻴﺎﻧﺎ ت إﱃ‬
‫ﺑﻨﻘﻞ ﺟﺰء اﻟ‬‫ﺜﻨﺎﺋ ﻲ ﻧﻔ ﺴﻪ‬
‫ﺛﻢﻳﻘﻮم اﻟ‬‫ﺜﻨﺎﺋ ﻲ‬
‫ﺑﺪاﻳ ﺔ اﻟﻤﻠﻒ اﻟ‬‫ﺘﻨﻔﻴﺬ ﻓ ﻲ‬
‫ﺒﺪأ اﻟ‬
‫ﺘﺤﻤﻴﻞ ‪،‬ﻳ‬
‫ﺛﻨﺎﺋﻴ ﺔ واﺣﺪة ‪،‬ﺗ ﺴﻤﻰ ﺻﻮرة‪ .‬ﻋﻨﺪ اﻟ‬‫ﺑﻴﺎﻧﺎ ت اﻟﻤﺮﺣﻠ ﺔ ﻣﻌً ﺎ ﻓ ﻲ ﻓﻘﺎﻋ ﺔ‬
‫ﺒﺮﻣﺠﻴ ﺔ و‬
‫اﻟ‬
‫ﺑﻞ ‪ ،‬ﻓﺈن‬
‫ﺜﻨﺎﺋ ﻲ‪ .‬ﻓ ﻲ اﻟﻤﻘﺎ‬
‫ﺜﻞ ﻋﻤﻠﻴﺎ ت اﻟﻨﻘﻞ ‪ ،‬داﺧﻞ اﻟﻨﻈﺎم اﻟ‬
‫ﺑﻴﺎﻧﺎ ت وﺻﻔﻴ ﺔ ﻣﻌﻘﺪة ‪ ،‬ﻣ‬‫ﺜ ﺔ ‪ ،‬ﻻﺗﻮﺟﺪ‬
‫ﺘﺸﻐﻴﻞ اﻟﺤﺪﻳ‬
‫ﺟﺰء آﺧﺮ ﻣﻦ اﻟﺬاﻛﺮة‪ .‬ﻋﲆ ﻋﻜ ﺲ اﻟﻌﺪﻳﺪ ﻣﻦ أﻧﻈﻤ ﺔ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻮﺻﻔﻴ ﺔ‪.‬‬
‫ﺜﻞ ﻫﺬه اﻟ‬
‫‪ kernelcache‬ﻫﻮ ﻣﻠﻒ ‪Mach-O‬ﻋﺎديﻳﻀﻢ ﻣ‬

‫ﺑﻴﺎﻧﺎ ت وﺻﻔﻴ ﺔ‬‫ﺘﻮي ﻫﺬا اﻟﻤﻠﻒ ﻋﲆ أي‬


‫ﺘﻢﺗﻀﻤﻴﻨﻬﺎ ﻓ ﻲ ﻣﺎﻳ ﺴﻤﻰ ﻣﻠﻒ ‪IMG4.‬ﻳﺤ‬
‫ﺑﻞﻳ‬‫ﺘﻢﺗﺨﺰﻳﻦ ﺻﻮرة اﻟﻤﺮﺣﻠ ﺔ ﻣﻦﺗﻠﻘﺎء ﻧﻔ ﺴﻬﺎ ‪،‬‬
‫ﺜﻨﺎء ‪SecureROM ،‬ﻻﻳ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺜﻞ ﺻﻮرة‬ ‫ﺘﻤﻬﻴﺪ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ ﻟﻠﻤﻠﻔﺎ ت اﻟﻤ ﺴﺎﻋﺪة ‪ ،‬ﻣ‬ ‫ﺛﻨﺎﺋﻴﺎ ت أداةﺗﺤﻤﻴﻞ اﻟ‬‫ﺘﺨﺪامﺗﻨ ﺴﻴﻖ ‪IMG4‬ﻓﻘﻂ ﻓ ﻲ‬
‫ﺘﻢ اﺳ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻣﺮﺣﻠ ﺔ ﻣﺎ‪ .‬ﻻﻳ‬
‫ﺑ ﺔ ﻟﻌﻤﻠﻴ ﺔ اﻟ‬
‫إﺿﺎﻓﻴ ﺔ ﻣﻄﻠﻮ‬
‫ﺗﻢﺗﺮﻣﻴﺰ ﻫﺎ ﻛـ ‪DER‬وﻳﻮﺟﺪ وﺻﻒﺗﻔﺼﻴﻠ ﻲ ‪8‬ﻟﻬﺎ ﻓ ﻲ اﻟﻤﻠﺤﻖ ‪B.2.‬‬
‫ﺒﻄﺎرﻳ ﺔ اﻟﻤﻨﺨﻔﻀ ﺔ‪ .‬ﻣﻠﻒ ‪ IMG4‬ﻫﻮ ﻣﺠﺮد ﻗﻴﻤ ﺔ ‪ASN.1‬ذا ت ﻗﻴﻤ ﺔ ‪7‬‬
‫اﻟ‬

‫ﺑﻊ ﻗﻴﻢ ﻣﻬﻤ ﺔ ﻟـ ‪ASN.1:‬‬


‫ﺘﻨ ﺴﻴﻖ ﻣﻦ أر‬
‫ﺘﻜﻮن اﻟ‬
‫ﺘﺼﺎر ‪،‬ﻳ‬
‫ﺑﺎﺧ‬

‫ﺗﻐﻄ ﻲ اﻷﺟﺰاء اﻷﺧﺮى ‪ ،‬ﻣﺎ ﻟﻢﺗﻜﻦ ﻓ ﻲ ﻣﻠﻔﺎ ت ﻣﻨﻔﺼﻠ ﺔ‪.‬‬


‫ﺋﻴ ﺴﻴ ﺔ و‬
‫‪ • IMG4‬ﻫ ﻲ اﻟﻘﻴﻤ ﺔ اﻟﺮ‬

‫ﺘﻮي ﻋﲆ اﻟﻤﻌﻠﻮﻣﺎ ت ذا ت اﻟﺼﻠ ﺔ‪ .‬ﻗﺪ‬


‫ﺜﻨﺎﺋ ﻲ ‪-‬وﻳﺤ‬
‫ﺒﻄﺎرﻳ ﺔ اﻟﻤﻨﺨﻔﻀ ﺔ أو ‪iBoot‬اﻟ‬
‫ﺜﺎل ﺻﻮرة اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫)‪• IMG4 Payload (IM4P‬ﻳﻠﻒ اﻟﺤﻤﻮﻟ ﺔ اﻟﻔﻌﻠﻴ ﺔ ‪-‬ﻋﲆﺳ‬
‫ﺘﺸﻔﻴﺮ ‪9.‬‬
‫ﻳﺸﻤﻞ ذﻟﻚ ‪ ،‬ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﻣﻌﻠﻤﺎ ت اﻟﻀﻐﻂ أو اﻟ‬

‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ‬
‫ﺘﻮي ﻋﲆ ﺟﻤﻴﻊ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻼزﻣ ﺔ ﻟﻠ‬
‫)‪• IMG4 Manifest (IM4M‬ﻳﺤ‬
‫اﻟﺤﻤﻮﻟ ﺔ‪.‬‬

‫ﺘﺮف‬
‫ﺘﻌﺎدة ﻣﺤ‬
‫ﺘﺤﻘﻖ ﻣﻦ اﺳ‬
‫ﺘﻮي ﻋﲆ ﻣﻌﻠﻮﻣﺎ ت إﺿﺎﻓﻴ ﺔ ﺿﺮورﻳ ﺔ ﻟﻠ‬
‫)‪• IMG4 Restore (IM4R‬ﻳﺤ‬
‫ﺘﻴﺎري ‪10.‬‬
‫ﺘﺎﻟ ﻲ ﻓﻬﻮ اﺧ‬
‫ﺑﺎﻟ‬
‫ﺘﻌﺎدة و‬
‫ﺑ ًﺎ ﻓﻘﻂ ﻋﻨﺪ إﺟﺮاء اﺳ‬
‫ﺒ ﺔ‪.‬ﻳﻜﻮن ﻣﻄﻠﻮ‬
‫ﺿﺮﻳ‬

‫ﺑﺪﻣﺠﻬﺎ ﻓ ﻲ ﻣﻠﻒ ‪IMG4‬وﻓﻼﺷﻬﺎ ﻋﲆ‬


‫ﺑﺮاﻣﺞ ‪Apple‬‬‫ﺘﺨﺪم اﻟﻨﻬﺎﺋ ﻲ ‪ ،‬ﺣﻴ ﺚﺗﻘﻮم أدوا تﺗﺤﺪﻳ ﺚ‬
‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ إﱃ اﻟﻤ ﺴ‬
‫ﺘﻢ ﺷﺤﻦ ‪IM4P‬و ‪IM4M‬و ‪IM4R‬‬ ‫ً‬
‫ﻋﺎدة ﻣﺎﻳ‬
‫ﺘﻮي ‪IM4M‬ﻛﺬﻟﻚ ﻋﲆ ﻗﻴﻢ ‪ASN.1‬ﻣﻬﻤ ﺔ‪:‬‬
‫اﻟﺠﻬﺎز‪.‬ﻳﺤ‬

‫ﺘﻮي ﻋﲆ ﺧﺼﺎﺋﺺ اﻟﻤﺎﻧﻴﻔ ﺴ ﺖ )‪(MANP‬و‬


‫)‪• Manifest Body (MANB‬اﻟﺬيﻳﺤ‬
‫ﺜﺮ‬
‫ﻣﻠﺨﺺ ﻟﻌﻨﺼﺮ ‪IM4P‬واﺣﺪ أو أﻛ‬

‫ﺘﻢﺗﻀﻤﻴﻨﻪ‪.‬‬
‫ﺘﻢ ﺣﺮق ﺟﺬر اﻟ ﺴﻠ ﺴﻠ ﺔ ﻓ ﻲ ﻣﺤﻤﻞ اﻹﻗﻼع وﻻﻳ‬
‫ﺗﺸﻜﻞﺳﻠ ﺴﻠ ﺔ ﺷﻬﺎدا ت‪ .‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪،‬ﻳ‬
‫ﺑﺸﻬﺎدا ت ‪X.509‬‬‫•ﻗﺎﺋﻤ ﺔ‬

‫ﺘﺎح اﻟﻌﺎم ﻟﻠﺸﻬﺎدة اﻟﻮرﻗﻴ ﺔ ﻟﻠﺸﻬﺎدة‬


‫ﺑﻮاﺳﻄ ﺔ اﻟﻤﻔ‬‫ﺗﻮﻗﻴﻊ ‪RSA‬ﻟـ ‪MANB ،‬ﻣﻮﻗﻌً ﺎ‬
‫•‬
‫ﺳﻠ ﺴﻠ ﺔ‪.‬‬
‫ﺘﺮﻧ ﺖ‪.‬‬
‫ﺗﻤﺎﻣﺎ ﻋﲆ ﻣﻨﺼﺎ ت اﻹﻧ‬
‫ً‬ ‫‪6‬ﻳﻤﻜﻦ أنﺗﺠﻠ ﺐ اﻷﺟﻬﺰة ﻏﻴﺮ اﻵﻣﻨ ﺔ "اﻟﻤﻔﻘﻮدة" اﻟ ﺴﻌﺮ‬
‫ﺑﻌﺪ ذﻟﻚ‪.‬‬‫ً‬
‫ﺒﺎﺷﺮة‬
‫ﺘﻔﺎﺻﻴﻞ اﻟﺪﻗﻴﻘ ﺔ ﻟﻤﺎ ﻫﻴ ﺔ ﻗﻴﻤ ﺔ ‪ASN.1‬ﻣ‬ ‫ﺘﻢ وﺻﻒ اﻟ‬‫‪7‬ﻳ‬
‫ﺘﻢﺗﺸﻔﻴﺮ ﺻﻮر ‪9iBoot ،‬ﻟﻜﻦ اﻟﻤﺮاﺣﻞ‬ ‫ً‬
‫ﻋﺎدة ﻣﺎﻳ‬ ‫ﺑﻌﺾ اﻟﺤﻘﻮل ﻏﻴﺮ ﻣﻌﺮوﻓ ﺔ أو ﻣﻔﻘﻮدة‪.‬‬‫ﺒ ﺐ ﻗﺪﺗﻜﻮن‬
‫ﺘﺸﻔﻨﺎ اﻟﻤﻮاﺻﻔﺎ ت ﻣﻦ ﺧﻼل ﻋﻜ ﺲ ‪SecureROM ،‬وﻟﻬﺬا اﻟ ﺴ‬
‫‪8‬اﻛ‬
‫ﺜﻞ ‪kernelcache -‬ﻟﻢﺗﻌﺪ ﻛﺬﻟﻚ ‪[6].‬‬
‫اﻟﻼﺣﻘ ﺔ ‪-‬ﻣ‬
‫ﺒﺮ‪.‬‬
‫ﺑﺸﻜﻞ أﻛ‬‫ﺘﻢﺗﻔﺼﻴﻠﻬﺎ‬
‫ﺘﺎﻟ ﻲ ﻟﻢﻳ‬
‫ﺑﺎﻟ‬
‫ﺘﺨﺪام ‪10IM4R‬ﻓ ﻲ ﻫﺬه اﻷﻃﺮوﺣ ﺔ و‬
‫ﺘﻢ اﺳ‬
‫ﻟﻢﻳ‬

‫ﺒﻴﺎن ﻣﻨﻔﺼ ﻼ ً ﻋﻦ اﻟﺤﻤﻮﻟ ﺔ و‬


‫ﺘﻮي ﻋﲆ ‪IM4P‬واﺣﺪ ﻓﻘﻂ ‪ ،‬ﻓﻘﺪﻳﻜﻮن اﻟ‬
‫‪11‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻣﻠﻒ ‪IMG4‬واﺣﺪﻳﻤﻜﻦ أنﻳﺤ‬
‫ﺻﺎﻟﺤ ﺔ ﻟﻌﺪة ﻣﻨﻬﻢ‪.‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻨ ﺴﻴﻖ ‪IMG4‬‬


‫‪2.3‬‬ ‫‪6‬‬

‫ﺘﻢ‬
‫ﺘﻰﻳ‬
‫ﺘﻮﻓﺮة ﻟﻠﺼﻮرة ﺣ‬ ‫ﺒﻴﺌ ﺔ أ ً‬
‫ﻳﻀﺎ ﻣﻊ ﺟﻤﻴﻊ اﻟﺨﺼﺎﺋﺺ اﻟﻤ‬ ‫ﺑﻖ اﻟ‬
‫ﺘﻄﺎ‬
‫ﺘﻮﻗﻴﻊ اﻟﺼﺎﻟﺢ ‪،‬ﻳﺠ ﺐ أنﺗ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ اﻟ‬‫ﺘﺨﺪام اﻟﺼﻮرة‪.‬‬
‫ﺘﻘﻴﻴﺪ اﺳ‬
‫ﺒﻴﺎن ﺧﺼﺎﺋﺺ ﻟ‬
‫ﺗﺤﺪد ﺧﺼﺎﺋﺺ اﻟ‬
‫ﺑﻮاﺳﻄ ﺔ‬‫ﺑﻌﻀﻬﺎ‬‫ﺘﻢﺗﺠﺎوز‬ ‫ً‬
‫ﺒﺎﺷﺮة ‪ ،‬وﻟﻜﻦ ﻗﺪﻳ‬
‫ﺘﺮداد ﻣﻌﻈﻤﻬﺎ ﻣﻦ اﻟﺼﻤﺎﻣﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﺠﻬﺎز ﻣ‬
‫ﺘﻢ اﺳ‬
‫ﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﺨﺼﺎﺋﺺ ‪،‬ﻳ‬
‫ﺒﻴﺌ ﺔ ﻋ‬
‫ﺒﺎر ﻫﺎ ﺻﺎﻟﺤ ﺔ‪ .‬اﻟ‬
‫ﺘ‬‫اﻋ‬
‫ﺒﺮاﻣﺞ‪ .‬أ ﻫﻢ اﻟﺨﺼﺎﺋﺺ‬
‫اﻟ‬

‫ﻧﻜﻮن‪:‬‬

‫ﺘﺎﻟ ﻲ ‪ ،‬ﻣﻠﻔﺎ ت ‪IMG4‬‬


‫ﺑﺎﻟ‬
‫ﺗﺤﺪﻳﺪ ﻫﻮﻳ ﺔ اﻟﺮﻗﺎﻗ ﺔ اﻟﺤﺼﺮي )‪ (ECID‬ﻫﻮ ﻣﻌﺮف ﻓﺮﻳﺪ ﻟﺸﺮﻛ ﺔ ﻧﻔﻂ اﻟﺠﻨﻮ ب ﻣﻦ أي وﻗ ﺖ ﻣﻀﻰ‪ .‬و‬
‫•‬
‫ﻋﺎدة ﻣﺎﺗﻜﻮن ﻣﺨﺼﺼ ﺔ ﻟﺠﻬﺎز ﻓﺮﻳﺪ واﺣﺪ‪.‬‬

‫)‪• Board (BORD‬و )‪ Chip ID (CHIP‬ﻫﻤﺎ رﻗﻤﺎن ﻟﻄﻴﻔﺎنﻳﺤﺪدان اﻟﻠﻮﺣ ﺔ واﻟﺸﺮﻳﺤ ﺔ‬


‫ﺒﻠﻎ ‪0x8030.‬‬
‫ﺗ‬‫ﺜﺎل ‪،‬ﺳﻴﻜﻮن ﻟﺸﺮﻳﺤ ﺔ ‪A13‬ﻗﻴﻤ ﺔ ‪CHIP‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻣﻦ اﻟﺠﻬﺎز‪ .‬ﻋﲆﺳ‬

‫ﺒ ًﻘﺎ‪.‬‬
‫ﺘﺎج ووﺿﻊ اﻷﻣﺎن ﻋﲆ اﻟﻨﺤﻮ اﻟﻤﻮﺿﺢ ﻣ ﺴ‬
‫ﺘﻢﺗﺤﺪﻳﺪ ﺣﺎﻟ ﺔ اﻹﻧ‬
‫•ﻳ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻣﻠﻒ ‪IMG4‬ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺘﻢ اﻟ‬
‫ﻳ‬

‫ﺗﺤﻘﻖ ﻣﻦﺳﻠ ﺴﻠ ﺔ ﺷﻬﺎدا ت ‪X.509‬اﻟﻤﻮﺟﻮدة ﻓ ﻲ ‪IM4M.‬‬


‫‪1.‬‬

‫ﺘﺨﺪام اﻟﺸﻬﺎدة اﻟﻮرﻗﻴ ﺔ‬


‫ﺑﺎﺳ‬
‫ﺗﺤﻘﻖ ﻣﻦﺗﻮﻗﻴﻊ ‪RSA‬اﻟﻤﻮﺟﻮد ﻓ ﻲ ‪IM4M‬ﻣﻊ ﻣﻠﺨﺺ ‪MANB ،‬‬
‫‪2.‬‬
‫ﻣﻦﺳﻠ ﺴﻠ ﺔ اﻟﺸﻬﺎدا ت‪.‬‬

‫ﺒﻴﺌ ﺔ‪.‬‬
‫ﺑﻖ اﻟﺨﺼﺎﺋﺺ ﻣﻦ ‪MANP‬ﻣﻊ اﻟﺨﺼﺎﺋﺺ اﻟﻤﻜﺎﻓﺌ ﺔ ﻓ ﻲ اﻟ‬
‫ﺗﺤﻘﻖ ﻣﻦﺗﻄﺎ‬
‫‪3.‬‬

‫ﺑﻖ ﻣﻠﺨﺺ ‪IM4P.‬‬


‫ﺗﺤﻘﻖ ﻣﻦ أن اﻟﻤﻠﺨﺺ اﻟﻤﻮﺟﻮد ﻓ ﻲ ‪MANB‬ﻳﻄﺎ‬
‫‪4.‬‬

‫‪2.3.1 ASN.1‬و ‪DER‬‬

‫ﺘﻌﺪدة اﻟﻤﻨﺼﺎ ت‪.‬‬


‫ﺑﻄﺮﻳﻘ ﺔ ﻣ‬‫ﺘﺸﻔﻴﺮ‬
‫ﺘﺸﻔﻴﺮ وﻓﻚ اﻟ‬
‫ﺘﻴﺢ اﻟ‬
‫ﺘ ﻲﺗ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻤﺠﺮدة اﻟ‬
‫ﺘﺨﺪﻣ ﺔ ﻟﻮﺻﻒ أﻧﻮاع اﻟ‬
‫ﺘﺮﻣﻴﺰ اﻟﻠﻐﻮي اﻟﻤﺠﺮد اﻷول ]‪ (ASN.1) [26‬ﻫﻮ ﻟﻐ ﺔ وﺻﻒ واﺟﻬ ﺔ ﻣ ﺴ‬
‫اﻟ‬
‫ﺜﺎل ﻟﻮﺻﻒ ‪ASN.1‬ﻓ ﻲ اﻟﻜﻮد ‪2.1.‬‬
‫ﺘﺨﺪاﻣﻪ ﻓ ﻲﺗﺤﺪﻳﺪﺗﻨ ﺴﻴﻖ ﺷﻬﺎدا ت ‪X.509.‬ﻳﻤﻜﻦ رؤﻳ ﺔ ﻣ‬
‫ﺑﺎﺳ‬‫ﺘﻬﺮ‬
‫ﻳﺸ‬

‫ﺋﻴ ﺴﻴ ﺔ‬
‫‪Keybag :: = SEQUENCE { type INTEGER ، IV‬ﺳﻠ ﺴﻠ ﺔ ‪OCTET ،‬ﺳﻠ ﺴﻠ ﺔ ‪OCTET‬اﻟﺮ‬

‫}‬

‫ﺑﻨﻴ ﺔ ‪IM4P.‬‬‫ﺗﻴﺢ اﻟﻤﻮﺟﻮدة ﻓ ﻲ‬


‫ﺒ ﺔ اﻟﻤﻔﺎ‬
‫ﺜﺎل ﻋﲆ ﻣﻮاﺻﻔﺎ ت ﻫﻴﻜﻞ ﺣﻘﻴ‬
‫اﻟﻜﻮد ‪2.1:‬ﻣ‬

‫ﺘﺮﻣﻴﺰ ﻗﻴﻤ ﺔ‬
‫ﺑ‬‫ﺘﺸﻔﻴﺮ اﻟﻤﻤﻴﺰة )‪ (DER‬ﻫ ﻲﺗﺮﻣﻴﺰ ﻣﻦ ﻧﻮع ‪-‬ﻃﻮل ‪-‬ﻗﻴﻤ ﺔ ‪(TLV) ،‬ﻳﻘﻮم‬
‫ﺘ ﺴﻠ ﺴﻞ ‪ASN.1.‬ﻗﻮاﻋﺪ اﻟ‬
‫ﺘﺸﻔﻴﺮ اﻟﻤﻤﻴﺰة ﻟ‬
‫ﺑﻘﻮاﻋﺪ اﻟ‬‫ﺘﺨﺪم ‪Apple‬ﻣﺎﻳ ﺴﻤﻰ‬
‫ﺗﺴ‬
‫ﺑﺔ‬
‫ﺒ ﺐ ﺻﻌﻮ‬
‫ﺘﻮﺿﻴﺢﺳ‬ ‫ﺛﻢ اﻟﻄﻮل وأﺧﻴﺮا ً اﻟ‬
‫ﺒﻴﺎﻧﺎ ت‪ .‬ﻟ‬ ‫ﺘﺸﻔﻴﺮ اﻟﻨﻮع ‪،‬‬
‫ﺑ‬‫ﺗﻘﻮم ‪DER‬أوﻻ ً‬
‫ﺒﺎﻳ ﺖ اﻟﻤﻄﻠﻮ ب‪ .‬ﻟﻜﻞ ﻗﻴﻤ ﺔ ‪ASN.1 ،‬‬
‫ﺒ ﺲ ﻓﻴﻪ ‪ ،‬ﻣﻊﺗﻘﻠﻴﻞ ﻣﻘﺪار اﻟ‬
‫ﺑﺸﻜﻞ ﻻ ﻟ‬
‫‪ASN.1‬‬
‫ﺘﺤﻮﻳﺮ ‪ASN.1 ،‬ﻧﻘﺪم وﺻ ًﻔﺎ ﻣﻮﺟ ًﺰا ﻟﻌﻤﻠﻴ ﺔ اﻟ‬
‫ﺘﺸﻔﻴﺮ‪:‬‬ ‫ﺑ‬‫ﻗﻴﺎم ﻣﺼﻬﺮ‬

‫ﺘﻐﻴﺮ اﻟﻄﻮل‪.‬‬
‫ﺘﺨﺪام ﻣﺨﻄﻂﺗﺸﻔﻴﺮ ﻣ‬
‫ﺑﺎﺳ‬‫ﺑﻪ ‪-‬ﻣﺸﻔﺮ‬‫ﺑﺎﻷﺣﺮى رﻗﻢ اﻟﻮﺳﻢ اﻟﺨﺎص‬‫•اﻟﻨﻮع ‪-‬أو‬
‫ﺘﻢﺗﻌﻴﻴﻦ‬
‫ﺑﺎﻳ ﺖ واﺣﺪ إﺿﺎﻓ ﻲ ﻋﲆ اﻷﻗﻞ ‪ ،‬أو ﻣﺎ ﻫﻮ ﺿﺮوري‪.‬ﻳ‬‫ﺘﺨﺪم‬
‫ﺒﺮ ﻣﻦ ‪30 ،‬اﺳ‬
‫ﺑﺎﻳ ﺖ واﺣﺪ‪ .‬اﻟﻌﻼﻣﺎ ت اﻷﻛ‬‫ﺘﻢﺗﺮﻣﻴﺰ ﻫﺎ ﻋﲆ أﻧﻬﺎ‬
‫أي ﻋﻼﻣ ﺔ أﺻﻐﺮ أوﺗ ﺴﺎوي ‪30‬ﻳ‬
‫ﺑﺎﻳ ﺖ ‪ ،‬واﻟﺬيﺗﻢﺗﻌﻴﻴﻨﻪ ﻋﲆ ‪0.‬‬‫ﺘﻰ آﺧﺮ‬
‫ﺘﺎ ت اﻟﻼﺣﻘ ﺔ ﻋﲆ ‪1 ،‬ﺣ‬
‫ﺒﺎﻳ‬
‫ﺒ ﺖ اﻷﻋﲆ ﻟﻠ‬
‫اﻟ‬

‫ﺑﺎﻳ ﺖ‬‫ﺘﻢﺗﺮﻣﻴﺰه ﻓ ﻲ‬
‫ﺘﺨﺪم ﻟﻠﻮﺳﻢ‪ .‬إذا ﻛﺎن اﻟﻄﻮل أﺻﻐﺮ أوﻳ ﺴﺎوي ‪127 ،‬ﻳ‬
‫ﺘﻠﻒ ﻋﻦ اﻟﻤﺨﻄﻂ اﻟﻤ ﺴ‬
‫ﺘﻐﻴﺮ اﻟﻄﻮل ‪،‬ﻳﺨ‬
‫ﺘﺨﺪام ﻣﺨﻄﻂ ﻣ‬
‫ﺑﺎﺳ‬ ‫ﺘﻢﺗﺸﻔﻴﺮ اﻟﻄﻮل أ ً‬
‫ﻳﻀﺎ‬ ‫•ﻳ‬
‫ﺘﺮﻣﻴﺰ اﻟﻄﻮل‪.‬‬
‫ﺘﺨﺪﻣ ﺔ ﻟ‬
‫ﺘﺎﻟﻴ ﺔ اﻟﻤ ﺴ‬
‫ﺒﺎﻳ ﺖ اﻟ‬
‫ﺒﺎﻳ ﺖ اﻷول ﻋﺪد وﺣﺪا ت اﻟ‬
‫ﺑﺨﻼف ذﻟﻚ ‪،‬ﻳﺤﺪد اﻟ‬‫واﺣﺪ‪.‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﺤﻘﻖ ‪8‬‬
‫‪2.4‬‬ ‫‪7‬‬

‫ﺘﺎ ت اﻟﻤﺸﻔﺮة ﻟﻘﻴﻢ‬


‫ﺒﺎﻳ‬
‫ﺘ ﺴﻠ ﺴﻞ ﻫﻮ ﻣﺠﺮدﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟ‬
‫ﺜﺎل ‪ ،‬اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻤﺎدًا ﻋﲆ ﻧﻮع اﻟﻘﻴﻤ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺘﻠﻔ ﺔ اﻋ‬
‫ﺑﻌﺪة ﻃﺮق ﻣﺨ‬‫ﺘﻮﻳﺎ ت اﻟﻔﻌﻠﻴ ﺔ‬
‫ﺘﻢﺗﺸﻔﻴﺮ اﻟﻤﺤ‬
‫•أﺧﻴ ﺮًا ‪،‬ﻳ‬
‫ﺘﻮا ﻫﺎ‪.‬‬
‫ﻣﺤ‬

‫ﺗﺼﺎﻻ ت ‪" ،‬ﻣﻌﺮف اﻟﻜﺎﺋﻦ ﻫﻮ آﻟﻴ ﺔﺗﺤﺪﻳﺪ‬ ‫ﺘﺨﺪام ‪-‬ﺧﺎﺻ ﺔ ﻓ ﻲﺳﻴﺎق ﺷﻬﺎدا ت ‪ X.509 -‬ﻫﻮ ﻣﺎﻳ ﺴﻤﻰ ﻣﻌﺮف اﻟﻜﺎﺋﻦ ‪(OID).‬وﻓ ًﻘﺎ ﻟﻼ‬
‫ﺗﺤﺎد اﻟﺪوﻟ ﻲ ﻟﻼ‬ ‫ﻧﻮع ‪ASN.1‬ﺷﺎﺋﻊ اﻻﺳ‬
‫ﺑﺎﺳﻢ‬
‫ﺘ ﺴﻤﻴ ﺔ أي ﻧﻮع ﻣﻦ اﻷﺷﻴﺎء أو اﻟﻤﻔﺎ ﻫﻴﻢ أو" اﻟﺸ ﻲء "‬
‫ﺗﺼﺎﻻ ت و ‪ISO / IEC‬ﻟ‬
‫ﺒﻞ ﻗﻄﺎعﺗﻘﻴﻴ ﺲ اﻻ‬
‫ﺘﺮك ﻣﻦ ﻗ‬
‫ﺑﺸﻜﻞ ﻣﺸ‬‫ﺘﺨﺪﻣ ﺔ ﻋﲆ ﻧﻄﺎق واﺳﻊﺗﻢﺗﻄﻮﻳﺮ ﻫﺎ‬
‫ﻣﺴ‬
‫ﺘﺨﺪاﻣﻪ ﻓ ﻲ‬ ‫ّﻓﺎ ت اﻟﻜﺎﺋﻦﺗ ﺴﻠ ﺴ ﻼ ً ﻫﺮﻣ ًﻴﺎ ﻣﻌً ﺎ ‪ ،‬ﻣﺎﻳ ﺴﻤﻰ "ﺷﺠﺮة ‪OID".‬ﻳ‬
‫ﺘﻢ اﺳ‬ ‫ﺗﺸﻜﻞ ﺟﻤﻴﻊ ﻣﻌ ﺮ‬
‫ﺘًﺎ )ﻃﻮﻳﻞ اﻟﻌﻤﺮ‪ -‬اﻟﻮﻗ ﺖ( ‪"[20].‬‬
‫ﺑ‬‫ﺛﺎ‬‫ﺳﻤﺎ‬
‫ﺘﻄﻠ ﺐ ا ً‬
‫ﺒ ﺲ ﻓﻴﻪﻳ‬
‫ﻋﺎﻟﻤ ﻲ ﻻ ﻟ‬
‫ﺘﻜﻮن ﻣﻦ اﻟﻮاﻟﺪﻳﻦ‬
‫ﺘﺨﺪام ‪SHA-384‬ﻣﻊﺗﺸﻔﻴﺮ ‪RSA.‬ﻳ‬
‫ﺜﺎل ‪ OID‬ﻫﻮ ‪1.2.840.113549.1.1.12 ،‬ﻳﺤﺪد اﺳ‬
‫ﺑﺸﻜﻞ ﻓﺮﻳﺪ‪ .‬ﻣ‬
‫ﺘ ﺴﻤﻴ ﺔﺳﻤﺎ ت ﺷﻬﺎدا ت ‪X.509‬‬
‫اﻟﻐﺎﻟ ﺐ ﻟ‬
‫ﺘﺎﻟﻴﻴﻦ ﻓ ﻲ ﺷﺠﺮة ‪OID:‬‬
‫اﻟ‬

‫‪• 1.2.840.113549.1.1: PKCS-1‬‬

‫‪• 1.2.840.113549.1: PKCS‬‬

‫‪• 1.2.840.113549: RSADSI‬‬

‫ﺘﺤﺪة اﻷﻣﺮﻳﻜﻴ ﺔ‬
‫‪• 1.2.840:‬اﻟﻮﻻﻳﺎ ت اﻟﻤ‬

‫‪ • 1.2:‬ﻫﻴﺌ ﺔ ﻋﻀﻮ ‪ISO‬‬

‫ﺒﻞ ‪ISO‬‬
‫‪• 1:‬ﻣﻌﺮﻓﺎ ت اﻟﻜﺎﺋﻦ اﻟﻤﻌﻴﻦ ﻣﻦ ﻗ‬

‫‪2.4 checkm8‬‬

‫ﺜﺎل وﺳﻴﻜﻮن ذا أ ﻫﻤﻴ ﺔ ﺧﺎﺻ ﺔ ﻓ ﻲ‬


‫ﺛﻐﺮا ت أﻣﻨﻴ ﺔ ﻓ ﻲ اﻟﻤﺎﺿ ﻲ "‪ [14 ، 3]. "checkm8‬ﻫﻮ أﺣﺪ ث ﻣ‬‫ﺑﻪ اﺳﻢ ‪SecureROM ،‬ﻓﻘﺪﺗﻢ اﻟﻜﺸﻒ ﻋﻦ‬‫ﻋﲆ ﻋﻜ ﺲ ﻣﺎﻳﻮﺣ ﻲ‬
‫ﺗﻮﻛﻮل ‪DFU.‬‬
‫ﺑﺮو‬‫ﺘﺨﺪام اﻟﺤﺮ ‪ ،‬ﻓ ﻲ ﻣﻌﺎﻟﺠ ﺔ‬
‫ﺑﻌﺪ اﻻﺳ‬‫ﺜﻐﺮة اﻷﻣﻨﻴ ﺔ‬
‫ﺘﻐﻞ اﻟ‬
‫ﻫﺬه اﻷﻃﺮوﺣ ﺔ‪ .‬ﻓ ﻲ ﺟﻮ ﻫﺮه ‪"checkm8" ،‬ﻳ ﺴ‬

‫ﺘﻐﻼﻟﻪ‬
‫ﺒﻴﺮ ‪-‬وإذاﺗﻢ اﺳ‬
‫ﺑﻌﺪﺗﺤﺮﻳﺮ اﻟﻤﺆﺷﺮ اﻟﻤﺬﻛﻮر‪ .‬ﻫﺬا ﻋﺎدة ﻣﺎﻳﺆدي إﱃ ﻓ ﺴﺎد ﻛ‬‫ﺑﻮﻳﺮ ﻋﲆ اﻟﻜﻮﻣ ﺔ ‪،‬‬‫ﺘﺨﺪام ﻣﺆﺷﺮ إﱃ‬
‫ﺘﻢ اﺳ‬
‫ﺘﺨﺪام اﻟﻼﺣﻖ ‪(UAF) ،‬ﻋﻨﺪﻣﺎﻳ‬
‫ﻳﺤﺪ ث اﻻﺳ‬
‫ﺑﺮﻣﺠﻴ ﺔ ﻋﺸﻮاﺋﻴ ﺔ‪.‬‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪-‬إﱃﺗﻨﻔﻴﺬﺗﻌﻠﻴﻤﺎ ت‬

‫ﺒﺮﻣﺠﻴ ﺔ‪ "Heap feng shui" .‬ﻫﻮ اﺳﻢ‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻤﻜﻦ ﻣﻦﺗﻨﻔﻴﺬ اﻟ‬
‫ﺘﻰﺗ‬ ‫ﺛﻐﺮة ‪UAF ،‬ﻳﻘﻮم "‪"checkm8‬أوﻻ ً‬
‫ﺑﺄداء "ﻛﻮﻣ ﺔ "‪feng shui‬اﻟﻤﻌﻘﺪة ‪ ،‬ﺣ‬ ‫إﱃ ﺟﺎﻧ ﺐ‬
‫ﺒﻴﻘﺎ ت اﻟﻜﻮﻣ ﺔ ‪،‬ﻳﻌﺪ ﻫﺬا ﺿﺮورﻳًﺎ‬
‫ﺑ ﺔ ﻣﺎذا ﺣﻴ ﺚ ‪[25].‬ﻣﻊ ﻣﻌﻈﻢﺗﻄ‬
‫ﺘﺎ‬
‫ﺜﺎلﺗﺤﻘﻴﻖﺗﻨﻔﻴﺬ اﻟﻜﻮد أو ﻛ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻐﻼل ‪ ،‬ﻋﲆﺳ‬
‫ﺑﺎﻻﺳ‬‫ﺑﻌﻨﺎﻳ ﺔ ‪ ،‬ﻣﻤﺎﻳ ﺴﻤﺢ‬‫ﻟﻌﻤﻠﻴ ﺔ ﻣﻌﺎﻟﺠ ﺔ اﻟﻜﻮﻣ ﺔ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃﺗﺤﺮﻳﺮ أﺟﺰاء ﻣﻌﻴﻨ ﺔ‪.‬ﻳﺤﻘﻖ‬‫ﺗﻴ ﺐ ﻣﺤﺪد ﺟﺪًا‬
‫ﺘﺮ‬‫ﺑ‬ ‫ً‬
‫ﻋﺎدة ﻣﻦﺗﺨﺼﻴﺺ أﺣﺠﺎم ﻣﺤﺪدة ﺟﺪًا‬ ‫ﺘﻜﻮن ‪Heap feng shui‬‬
‫ﺘﻐﻼل‪.‬ﻳ‬
‫ﺑﻠ ﺔ ﻟﻼﺳ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻗﺎ‬‫ﻹﻓ ﺴﺎد اﻟﻜﻮﻣ ﺔ‬
‫ﺑﺪًا‪.‬‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ أ‬‫ﺑﻌﻀﻬﺎ‬‫ﺘﺄﻛﺪ ﻣﻦ ﻋﺪم إرﺳﺎل‬
‫ﺑﺄﺣﺠﺎم ﻣﺤﺪدة ‪12‬واﻟ‬‫ﺒﺎر ‪SecureROM‬ﻋﲆ إرﺳﺎل ردود‬
‫"‪"checkm8‬ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ إﺟ‬

‫ﺗﻢ إﺻﻼﺣﻬﺎ‬
‫ﺜﻐﺮة اﻷﻣﻨﻴ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪- UAF -‬‬
‫ﺘﺮض أن اﻟ‬
‫ﺘﻐﻼل اﻟﻜﺎﻣﻠ ﺔﺗﻌﻤﻞ ﻋﲆ ﺟﻤﻴﻊ اﻟﻤﻌﺎﻟﺠﺎ ت ﻣﻦ ‪A5‬إﱃ ‪A11.‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻣﻦ اﻟﻤﻔ‬
‫ﺗﻢﺗﺄﻛﻴﺪ أنﺳﻠ ﺴﻠ ﺔ اﻻﺳ‬
‫ﺘﻐﻴﻴﺮا ت اﻷﺳﺎﺳﻴ ﺔ‬
‫ﺘﻐﻼل ﻋﲆ ‪A12‬وﻣﺎ ﻓﻮق‪ .‬وﻣﻊ ذﻟﻚ ‪،‬ﺗﺸﻴﺮ ﺟﻤﻴﻌﻬﺎ إﱃ أن اﻟ‬
‫ﺒ ﺐ ﻋﺪم ﻋﻤﻞﺳﻠ ﺴﻠ ﺔ اﻻﺳ‬
‫ﺑ ﺔ ﺣﻮلﺳ‬
‫ﺘﻀﺎر‬
‫ﻓﻘﻂ ﻋﲆ ﺷﺮﻳﺤ ﺔ ‪ A14.‬ﻫﻨﺎكﺗﻘﺎرﻳﺮ ﻣ‬
‫ﺘﻐﻼل‪.‬‬
‫ﺛﺎﻧﻮﻳ ﺔ ﻓ ﻲ اﻻﺳ‬‫ﺛﻐﺮة‬‫ﺑﺪون وﺟﻮد‬‫ﺘﺤﻴﻞ‬
‫ﻓ ﻲ اﻟﻜﻮﻣ ﺔﺗﺠﻌﻞ ﻣﻦ اﻟﻤ ﺴ‬

‫ﺑ ﺔ ﻓ ﻲ اﻟﻜﻮﻣ ﺔ‪.‬‬
‫ﺘﺠﺎ‬
‫ﺘﻢﺗﺨﺼﻴﺺ ﻛﺎﺋﻨﺎ ت اﻻﺳ‬ ‫‪12‬ﻳ‬
‫ﺛﻢ ﻟﻢﻳﻔﺮج ﻋﻨﻪ ﻗﻂ‪.‬‬‫‪13‬وﻣﻦ‬
‫‪Machine Translated by Google‬‬

‫ﺜ ﺔ ﻋﲆ اﻟﺬراع‬
‫‪2.5‬اﺟﺮاءا ت اﻻﻣﻦ اﻟﺤﺪﻳ‬ ‫‪8‬‬

‫ﺜ ﺔ ﻋﲆ ‪ARM‬‬
‫ﺑﻴﺮ اﻷﻣﻨﻴ ﺔ اﻟﺤﺪﻳ‬
‫ﺘﺪا‬
‫‪2.5‬اﻟ‬

‫ﺘﻨﺪ إﱃ ﻣﺠﻤﻮﻋ ﺔﺗﻌﻠﻴﻤﺎ ت‬


‫ﺗﻬﻢﺗ ﺴ‬
‫ﺑﺼﺮﻳ ﺔ ‪ ،‬إﻻ أن ﻣﻌﺎﻟﺠﺎ‬‫ﺘﻨﺪا ت‬
‫ﺑﺪًا ‪ARM‬ﻓ ﻲ أي ﻣ ﺴ‬
‫ﺗﻬﻢ ﻓ ﻲ اﻟﻐﻤﻮض وﻻﻳﺬﻛﺮ أ‬
‫ﺘ ﺴﻮﻳﻖ ﻓ ﻲ ‪Apple‬ﻳﺨﻔ ﻲ ﻣﻌﺎﻟﺠﺎ‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻓﺮﻳﻖ اﻟ‬
‫ﺜﻞ ﻋﻨﻮان‬
‫ﺗﻢﺗﻘﺪﻳﻤﻪ ﻣﻊ ‪ARMv8.3-A ،‬ﻳ ﺴﻤﺢ ‪PAC‬ﻟﻠﻤﺆﺷﺮا ت اﻟﻤﻬﻤ ﺔ ‪ ،‬ﻣ‬
‫‪ARM.‬أﺣﺪ اﻟﺠﻮاﻧ ﺐ اﻟﻤﻬﻤ ﺔ ﻟﻤﻌﺎﻟﺠﺎ ت ‪ARM‬اﻷﺣﺪ ث ﻫﻮ رﻣﻮز ﻣﺼﺎدﻗ ﺔ اﻟﻤﺆﺷﺮ ‪(PACs).‬‬
‫ﺒﻂ‬
‫ﺗ‬‫ﺘﺎح واﻟ ﺴﻴﺎق اﻟﻤﺮ‬
‫ﺘﺨﺪام ﻣﻔ‬
‫ﺑﺎﺳ‬‫ﺘﺸﻔﻴﺮ‬
‫ﺘﻮﻗﻴﻊ ﻣﺆﺷﺮ اﻟ‬
‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬ﻫﻨﺎكﺗﻌﻠﻴﻤﺎ ت ﻟ‬‫ﺒﺎرا ت‬
‫ﺑﻌ‬‫ﺑ ﺔ ﻓﻮق ‪[17].‬‬
‫ﺘﺎ‬
‫ﺒﺎدئ ‪cryp tographic‬ﻣﻦ اﻟﻜ‬
‫ﺘﺨﺪام ﻣ‬
‫ﺑﺎﺳ‬‫ﺑﺎﻟﺤﻤﺎﻳ ﺔ‬‫اﻹرﺟﺎع ‪،‬‬
‫ﺘﻠﻔ ﺔﻷﻏﺮاض‬
‫ﺗﻴﺢ ﻣﺨ‬
‫ﺗﻮﺟﺪ ﺧﻤ ﺴ ﺔ ﻣﻔﺎ‬
‫ﺑﻌ ﺔ ‪14.‬‬
‫ﺘﺎ‬
‫ﺑﺸﻜﻞ ﺿﺎر ‪-‬واﻟﻤ‬‫ﺑ ﺔ ﻓﻮق اﻟﻤﺆﺷﺮ‬
‫ﺘﺎ‬
‫ﺘﻮﻗﻴﻊ ‪-‬ﻟﻀﻤﺎن ﻋﺪم اﻟﻜ‬
‫ﺑﻌﺪ ذﻟﻚ اﻟﻤﺼﺎدﻗ ﺔ ﻋﲆ اﻟ‬‫ﺘﻌﻠﻴﻤﺎ ت اﻷﺧﺮى‬
‫ﺘﺸﻔﻴﺮ‪.‬ﻳﻤﻜﻦ ﻟﻠ‬
‫ﺑﺎﻟ‬
‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟﻌﺰﻟ ﺔ‪IA :‬و ‪IB‬و ‪DA‬و ‪DB‬و ‪GA.‬‬
‫ﺘﻮﻳﺎ ت ﻣﺨ‬
‫ﺘﻠﻔ ﺔ وﻣ ﺴ‬
‫ﻣﺨ‬

‫ﺘﻮﻗﻴﻊ وﻣﺆﺷﺮا ت‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺗﻴﺢ * ‪I‬و * ‪D‬ﻟ‬
‫ﺘﺨﺪام ﻣﻔﺎ‬
‫ﺘﻢ اﺳ‬
‫ﺘﺎح ‪* B‬ﻓﺮﻳﺪًا ﻟﻜﻞ ﻋﻤﻠﻴ ﺔ ‪15.‬ﻳ‬
‫ﺑﻴﻨﻤﺎﻳﻜﻮن ﻛﻞ ﻣﻔ‬‫ﺑﻴﻦ ﺟﻤﻴﻊ ﻋﻤﻠﻴﺎ ت اﻟﻨﻈﺎم ‪،‬‬
‫ﺘﺎح *‬
‫ﺘﻢ ﻣﺸﺎرﻛ ﺔ ﻛﻞ ﻣﻔ‬
‫ﻋﺎدة ‪،‬ﻳ‬
‫ﺘﻮاﻟ ﻲ‪.‬‬
‫ﺒﻴﺎﻧﺎ ت ‪ ،‬ﻋﲆ اﻟ‬
‫اﻟ‬
‫ﺘﻮﻗﻴﻊ ﻟﻸﻏﺮاض اﻟﻌﺎﻣ ﺔ‪.‬‬
‫ﺘﺎح ‪GA‬ﻟﻠ‬
‫ﺘﺨﺪام ﻣﻔ‬
‫ﺘﻢ اﺳ‬
‫ﻳ‬

‫ﺘﺸﻮﻳ ﺶ‬
‫‪2.6‬اﻟ‬

‫ﺘﻮﻗﻊ ‪-‬‬ ‫ﺑﺤ ً‬


‫ﺜﺎ ﻋﻦﺳﻠﻮك ﻏﻴﺮ ﻣ‬ ‫ﺘﻬﺎ‬
‫ﺒ‬‫ﺒﺎ ﻣﺎﺗﻜﻮن ﻋﺸﻮاﺋﻴ ﺔ أو ﻏﻴﺮ ﻣﻘﺼﻮدة ‪-‬وﻣﺮاﻗ‬
‫ﺑﻴﺎﻧﺎ ت اﻹدﺧﺎل ‪-‬ﻏﺎﻟ ً‬‫ﺜﻴﺮ ﻣﻦ‬
‫ﺑﺎﻟﻜ‬‫ﺒﺮاﻣﺞ‬
‫ﺘﺸﻮﻳ ﺶ ﻫﻮ ﻋﻤﻠﻴ ﺔﺗﺰوﻳﺪ اﻟ‬
‫ﺑ ﺴﻂ أﺷﻜﺎﻟﻬﺎ ‪ ،‬ﻓﺈن اﻟ‬
‫ﻓ ﻲأ‬
‫ﺘﺨﺪام ﻣﻌﻠﻮﻣﺎ ت‬
‫ﺑﺎﺳ‬‫ﺘﻐﻄﻴ ﺔ‪.‬‬
‫ﺑﺎﻟ‬‫ﺘﺸﻮﻳ ﺶ اﻟﻤﻮﺟﻪ‬
‫ﺑﺎﻟ‬‫ﺒﺮﻧﺎﻣﺞ ‪،‬ﻳﺮﻛﺰ اﻵن ﻋﲆ ﻣﺎﻳ ﺴﻤﻰ‬
‫ﺘﻌﻄﻞ اﻟ‬
‫ﺗﻴﺢ ﻟ‬
‫ﺑﺪأ ﻛﻄﺮق أﻋﻤﻰ ﻟﻠﻮﺣ ﺔ اﻟﻤﻔﺎ‬‫ﺒﻬﺎ‪ .‬ﻣﺎ‬
‫ﺗﻔ ﺴﺪ اﻟﺬاﻛﺮة أوﺗ ﺴﺮﻳ‬
‫ﺘﻌﻄﻞ و‬ ‫ً‬
‫ﻋﺎدة ﻣﺎﺗ‬
‫ﺒﺮﻧﺎﻣﺞ ‪،‬‬
‫ﺒﺮاﻣﺞ‪ .‬اﻟﻔﻜﺮة ﻫ ﻲ أﻧﻪ إذاﺗﻤ ﺖﺗﻐﻄﻴ ﺔ ﻛﻞ ﺟﺰء ﻣﻦ اﻟ‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺑﻴﺎﻧﺎ ت اﻹدﺧﺎل ﻟ‬‫ﺘﻨﻴﺮة ﺣﻮل ﻛﻴﻔﻴ ﺔﺗﻐﻴﻴﺮ‬
‫ﺗﺨﺎذ ﻗﺮارا ت ﻣ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت ا‬
‫ﺘﻐﻄﻴ ﺔ ‪،‬ﻳﻤﻜﻦ ﻟﻤﺰودي اﻟ‬
‫اﻟ‬
‫ﺘﺨﺪاﻣﻬﺎ أ ً‬
‫ﻳﻀﺎ ﻓ ﻲ ﻫﺬه اﻷﻃﺮوﺣ ﺔ‪.‬‬ ‫ﺘﻢ اﺳ‬
‫ﺘ ﻲﺳﻴ‬
‫ﺘﺨﺪﻣ ﺔ ﻋﲆ ﻧﻄﺎق واﺳﻊ ‪ ،‬واﻟ‬
‫ﺜ ﺔ واﻟﻤ ﺴ‬
‫ﺘﻐﻄﻴ ﺔ اﻟﺤﺪﻳ‬
‫ﺒ ًﻴﺎ‪.‬ﻳﻌﺪ ]‪AFL ++ [8‬أﺣﺪ ﻣﺼﺎ ﻫﺮ اﻟ‬
‫ﺑ ﺴﺮﻋ ﺔ ﻧ ﺴ‬‫ﺘﺸﺎف أي أﺧﻄﺎء‬
‫ﻓﻴﺠ ﺐ اﻛ‬

‫ﺑﺪﻻ ً‬‫ﺘﺸﻮﻳ ﺶ ‪[29].‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪،‬‬


‫ﺑﻬﺎﺗﻨﻔﻴﺬ اﻟ‬‫ﺘ ﻲﻳﻤﻜﻦ‬
‫ﺘﺤ ﺴﻴﻦ اﻟ ﺴﺮﻋ ﺔ اﻟ‬
‫ﺘﻘﻨﻴﺎ ت ﻟ‬
‫ﺘﻘﺎط وﻏﻴﺮ ﻫﺎ ﻣﻦ اﻟ‬
‫ﺜ ﺔﺗﻘﻨﻴ ﺔ اﻻﻟ‬
‫ﺘﺨﺪم اﻷﻟﻮاح اﻟﺤﺪﻳ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﺗ ﺴ‬
‫ﺒﻞ اﻟﺪﺧﻮل إﱃ اﻟﻮﻇﻴﻔ ﺔ اﻟﻬﺪف‬
‫ﺘﺼﻮﻳﺮ ﺣﺎﻟ ﺔ اﻟﻬﺪف )ﺻﻔﺤﺎ ت اﻟﺬاﻛﺮة ‪ ،‬واﺻﻔﺎ ت اﻟﻤﻠﻔﺎ ت واﻟﻤﺰﻳﺪ( ﻗ‬
‫ﺑ‬‫ﺒﺎر ﺟﺪﻳﺪة ‪،‬ﻳﻘﻮم ‪fuzzer‬‬
‫ﺘ‬‫ﺑﺪء اﻟﻬﺪف ﻣﻦ ﺟﺪﻳﺪ ﻟﻜﻞ ﺣﺎﻟ ﺔ اﺧ‬‫ﻣﻦ‬
‫ﺒﺎر اﻟﺠﺪﻳﺪة‪ .‬ﻟﻠﺤﺼﻮل ﻋﲆ‬
‫ﺘ‬‫ﺛﻨﺎءﺗﻐﻴﻴﺮ اﻟﻤﻌﻠﻤﺎ ت ﻟﻺﺷﺎرة إﱃ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺑﻌﺪ ذﻟﻚ إدﺧﺎل اﻟﻮﻇﻴﻔ ﺔ ﻣﺮة أﺧﺮى ‪ ،‬أ‬‫ﺘﻌﺎدة اﻟﻠﻘﻄ ﺔ ﻓ ﻲ ﻛﻞ ﻣﺮةﺗﻌﻮد ﻓﻴﻬﺎ اﻟﻮﻇﻴﻔ ﺔ اﻟﻬﺪف‪.‬ﻳﻤﻜﻨﻪ‬
‫واﺳ‬
‫ﺘﺨﺪام ﻫﺬا واﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺤﻴﻞ‬
‫ﺑﺎﺳ‬‫ﺘ ﻲﺗﻢﺗﻐﻴﻴﺮ ﻫﺎ ﻓﻘﻂ‪.‬‬
‫ﺘﻌﺎدة ﺻﻔﺤﺎ ت اﻟﺬاﻛﺮة اﻟ‬
‫ﺑ ﺔ ‪(COW) ،‬ﻻﺳ‬
‫ﺘﺎ‬
‫ﺘﺨﺪام اﻟﻨ ﺴﺦ ﻋﻨﺪ اﻟﻜ‬
‫ﺑﺎﺳ‬‫ﻣﺰﻳﺪ ﻣﻦ اﻷداء ‪[29] ،‬ﻳﻨﻔﺬ اﻟﻠﻘﻄﺎ ت داﺧﻞ اﻟﻨﻮاة‬
‫ﺜﺎﻧﻴ ﺔ ﻋﲆ ﻗﻠ ﺐ واﺣﺪ‪.‬‬
‫ﺜﺎﻧﻴ ﺔ إﱃ ﻣﺎﻳﻘﺮ ب ﻣﻦ ‪10‬آﻻف ﻋﻤﻠﻴ ﺔ إﻋﺪام ﻓ ﻲ اﻟ‬
‫ﺒﺪأ ﻣﻦ ﺣﻮاﻟ ﻲ ‪1500‬ﻋﻤﻠﻴ ﺔ إﻋﺪام ﻓ ﻲ اﻟ‬
‫اﻷﺧﺮى ‪[29] ،‬ﻗﺎدر ﻋﲆﺗﺤﻘﻴﻖﺳﺮﻋﺎ تﺗ‬

‫ﺘﺎنﺗﺰﻳﺪان ﻣﻦ‬
‫ﺒﺎ ت ‪ ،‬و ﻫﻨﺎك ﻧﻘﻄ‬
‫ﺘ‬‫ﺒﺎﺷﺮة ﻓ ﻲﺗﺤﻠﻴﻞ اﻟﻤﻜ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ ‪AFL ++ ،‬ﻣﻮﺟﻬ ﺔ ﻧﺤﻮ اﻟﻌﻤﻞ ﻣﻊ اﻟﻜﻮد اﻟﻤﺼﺪري وﻣ‬‫ﺘﺼﻔﺤﺎ ت ‪،‬‬
‫ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﻓﺈن ﻣﻌﻈﻢ اﻟﻤ‬
‫ﺘﻮﻓﺮ أي ﻣﻨﻬﻤﺎ ﻟﻨﺎ‪.‬‬
‫ﺑ ﺔ ﻫﺬا اﻟﻤﺸﺮوع ‪ ،‬ﺣﻴ ﺚ ﻻﻳ‬
‫ﺻﻌﻮ‬

‫ﺜﺮ إﺣﻜﺎﻣﺎ‪.‬‬
‫ﺑﺮﻣﺠﻴ ﺔ أﻛ‬ ‫ﺗﻮﺟﺪ أ ً‬
‫ﻳﻀﺎ إرﺷﺎدا ت ﻟﻤﺼﺎدﻗ ﺔ ﻣﺆﺷﺮ اﻹرﺟﺎع واﻟﻌﻮدة ﻓﻮ ًرا ‪ ،‬ﻟﻌﻤﻞﺗﻌﻠﻴﻤﺎ ت‬ ‫‪14‬‬

‫ﺑﻴﻦ ﺟﻤﻴﻊ اﻟﻤﻬﺎم‪.‬‬


‫ﺗﻴﺢ ‪B‬‬ ‫ﺘﻢ أ ً‬
‫ﻳﻀﺎ ﻣﺸﺎرﻛ ﺔ ﻣﻔﺎ‬ ‫ﺜﺎل ﻟﻴ ﺲ ﻫﻮ اﻟﺤﺎل ﻓ ﻲ ‪SecureROM ،‬ﺣﻴ ﺚﻳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫‪ 15‬ﻫﺬا ﻋﲆﺳ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪3‬‬

‫ﺘﻬﺪﻳﺪ‬
‫ﻧﻤﻮذج اﻟ‬

‫ﺑﻮاﺳﻄ ﺔ ‪Apple.‬‬‫ﺘﺸﻐﻴﻞ اﻟﻜﻮد اﻟﺬيﺗﻢﺗﻮﻗﻴﻌﻪ‬


‫ﺑ‬‫ﺑﺪءًا ﻣﻦ ‪SecureROM ،‬ﻣﻤﺎﻳ ﺴﻤﺢ ﻓﻘﻂ‬‫ﺛﻘ ﺔ آﻣﻨ ﺔ ‪،‬‬‫ﺒﻨﺎءﺳﻠ ﺴﻠ ﺔ‬
‫ﺑ‬‫ﺗﻘﻮم أﺟﻬﺰة ‪iPhone‬‬
‫ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪2.1 ،‬‬
‫ﺘﻐﻼل ﻣﻌﻘﺪة ﻟﻠﺤﺼﻮل ﻋﲆﺗﻨﻔﻴﺬ ﻛﻮد اﻟﻨﻮاة ‪1.‬‬
‫ﺘﻼكﺳﻠ ﺴﻠ ﺔ اﺳ‬
‫ﻋﺎدة ‪،‬ﻳﺤﺎول اﻟﻤﻬﺎﺟﻤﻮن ﻫﺰﻳﻤ ﺔ ﻫﺬه اﻟ ﺴﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﻨﻬﺎﻳ ﺔ ‪ ،‬ﻣﻦ ﺧﻼل اﻣ‬

‫ﺛﻐﺮة ‪،‬ﻳﻤﻜﻦ أنﺗﻜﻮن ﻗﻮﻳ ﺔ ﺟﺪًا ‪،‬ﻷﻧﻬﺎ‬‫ﺜﻮر ﻋﲆ‬ ‫ﻣﻦ ﻧﺎﺣﻴ ﺔ أﺧﺮى ‪،‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ أ ً‬
‫ﻳﻀﺎﺗﺮﻛﻴﺰ ﺟﻬﻮده ﻋﲆ اﻟﻄﺮف اﻵﺧﺮ ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ ‪SecureROM. ،‬إذاﺗﻢ اﻟﻌ‬
‫ﺒﺮ ﻟـ ‪SEP ،‬ﻣﻤﺎﻳ ﺴﻤﺢ‬
‫ﺒﻴ ﺔ ‪2.‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬ﻳﻤﻜﻦ أنﻳﺆدي إﱃﺳﻄﺢ ﻫﺠﻮم أﻛ‬
‫ﺑ ﺴﻬﻮﻟ ﺔ ﻧ ﺴ‬‫ﺘﻰ ﻧﻮاة ﻣﺨﺼﺼ ﺔ‬
‫ﺗﺤﻤﻴﻞ ﺣ‬
‫ﺘﺸﻐﻴﻞ أي رﻣﺰ و‬
‫ﺑ‬‫ﺗ ﺴﻤﺢﻷي ﺷﺨﺺ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ‬‫ﺒﺮﻣﺠﻴ ﺔ ﻓ ﻲ ‪SecureROM‬ﻟﻠﻤﻬﺎﺟﻢﺗﻔﺮﻳﻎ ‪SecureROM‬ﻧﻔ ﺴﻪ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻴﺢﺗﻨﻔﻴﺬ اﻟ‬
‫ﺘﺨﺪﻣﻴﻦ ‪[28].‬أﺧﻴ ﺮًا ‪،‬ﻳ‬
‫ﺑﻴﺎﻧﺎ ت ﻣﺸﻔﺮة ﻟﻠﻤ ﺴ‬‫ﺑﺎﻟﻮﺻﻮل إﱃ‬‫ﻟﻠﻤﻬﺎﺟﻤﻴﻦ‬
‫ﺜﻐﺮا ت اﻷﻣﻨﻴ ﺔ ‪[23].‬‬
‫ﺜﻮر ﻋﲆ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺘﺸﻔﻴﺮ اﻟﻤﻬﻤ ﺔ ‪3 ،‬ﻣﻤﺎﻳ ﺴﺎﻋﺪ ﻫﻢ ﻓ ﻲ اﻟﻌ‬
‫ﺗﻴﺢ اﻟ‬
‫إﱃ ﻣﻔﺎ‬

‫ﺒﺤ ﺚ ﻋﻨﻬﺎ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ‪SecureROM‬ﻣﺤﺪود‬


‫ﺛﻐﺮة أﻣﻨﻴ ﺔ ﻓ ﻲ ‪SecureROM ،‬ﻓﻤﻦ اﻟﻤﻨﻄﻘ ﻲ إﻏﻔﺎل اﻟ‬‫ﺜﻮر ﻋﲆ‬
‫ﺒ ﺔ ﻋﲆ اﻟﻌ‬
‫ﺗ‬‫ﺘﺮ‬
‫ﺛﺎر اﻟﻤ‬
‫ﻣﻦ ﺧﻼل ﻣﻌﺮﻓ ﺔ اﻵ‬
‫ﺘﺎﻟ ﻲ‬
‫ﺑﺎﻟ‬
‫ﺒﻞ اﻟﻤﻬﺎﺟﻢ ‪-‬و‬ ‫ً‬
‫ﻫﺪاﻓﺎ ﺟﻴﺪة ﻟﻠﻤﻬﺎﺟﻢ‪ .‬ﻟﻤﻌﺮﻓ ﺔ أي أﺟﺰاء ﻣﻦ ‪SecureROM‬ﻣﻬﺪدة ﻣﻦ ﻗ‬ ‫ﺒﻴﺮﻳﻤﻜﻦ أنﻳﻜﻮن أ‬
‫اﻟﻨﻄﺎق إﱃ ﺣﺪ ﻣﺎ ﻟﻠﻮ ﻫﻠ ﺔ اﻷوﱃ ‪ ،‬ﻻﻳﺰال ﻫﻨﺎكﺳﻄﺢ ﻛ‬
‫ﺘﻠﻜﻪ‬
‫ﺘﻤﺎدًا ﻋﲆ ﻧﻮع اﻟﻮﺻﻮل اﻟﺬي ﻗﺪﻳﻤ‬
‫ﺘﻬﺪﻳﺪ ‪ ،‬اﻋ‬
‫ﺋﻴ ﺴﻴﻴﻦ ﻟﻠ‬
‫ﺘﻤﻠ ﺔ‪ .‬ﺣﺪدﻧﺎ ﻧﻤﻮذﺟﻴﻦ ر‬
‫ﺘﻬﺪﻳﺪ اﻟﻤﺤ‬
‫ﺜﻴﺮة ﻟﻺﻋﺠﺎ ب ‪-‬ﻳﺠ ﺐ ﻋﲆ اﻟﻤﺮء أنﻳﻔﻜﺮ ﻓ ﻲ ﻧﻤﺎذج اﻟ‬
‫ﻓﻬ ﻲ ﻣﻔﻴﺪة وﻣ‬
‫اﻟﻤﻬﺎﺟﻢ ﻟﻠﺠﻬﺎز‪.‬‬

‫‪3.1‬اﻟﻮﺻﻮل اﻟﻤﺎدي‬

‫ﺘﻢ إﻳﻘﺎفﺗﺸﻐﻴﻠﻪ‪ .‬اﻟﻮاﺟﻬ ﺔ اﻟﻤﻼﺋﻤ ﺔ‬ ‫ﺗﻒ ‪ ،‬واﻟﺬي ﻗﺪﻳﻈﻞ ﻣﻘﻔ ﻼ ً أو ﺣ‬


‫ﺘﻰﻳ‬ ‫ﺘﺮض أن اﻟﻤﻬﺎﺟﻢ ﻟﺪﻳﻪ وﺻﻮل ﻣﺎدي إﱃ اﻟﻬﺎ‬ ‫ُﻄﻠﻖ ﻋﻠﻴﻪ أ ً‬
‫ﻳﻀﺎ " ﻫﺠﻮم اﻟﺨﺎدﻣ ﺔ اﻟﺸﺮﻳﺮة" ‪ ،‬ﻧﻔ‬ ‫ﻳ‬
‫ﺑﻌﺪ وﺿﻊ اﻟﺠﻬﺎز ﻓ ﻲ وﺿﻊ ‪DFU.‬ﻛﺎن ﻫﺬا أ ً‬
‫ﻳﻀﺎ ﻫﻮ اﻟﻤﻜﺎن اﻟﺬيﺗﻢ ﻓﻴﻪ‬ ‫ﺗﻮﻛﻮل ‪USB DFU ،‬‬
‫ﺑﺮو‬‫ﺑﻬﺎ ‪ SecureROM‬ﻫﻨﺎ ‪ ،‬ﻫ ﻲ‬‫ﺘ ﻲﻳﺠ ﺐ ﻋﲆ اﻟﻤﻬﺎﺟﻢ أنﻳﻘﻮم‬
‫اﻟﻮﺣﻴﺪة اﻟ‬
‫ﺗﻮﻛﻮل‬
‫ﺑﺮو‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳﻌﺮض‬‫ﺜﻴﺮ ﻣﻦ اﻟﺤﺎﻻ ت‪.‬‬
‫ﺘﻀﻤﻦ اﻟﻜ‬
‫ﺘﻬﺎﻳﻤﻜﻦ أنﻳﻜﻮن ﻣﻌﻘﺪًا ﻟﻠﻐﺎﻳ ﺔ وﻳ‬
‫ﺛﻐﺮا ت أﻣﻨﻴ ﺔ ‪ ،‬ﻧﻈ ﺮًاﻷنﺗﺤﻠﻴﻞ رﺳﺎﺋﻞ ‪USB‬وﻣﻌﺎﻟﺠ‬‫ﺜﻮر ﻋﲆ‬
‫اﻟﻌ‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪IMG4.‬‬
‫ﺗﺸﻐﻴﻠﻪ ﻣﻦ ﺧﻼل ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺒﺮ ‪DFU ،‬ﻳﻤﻜﻦﺗﺤﻤﻴﻞ أي ﻣﻠﻒ إﱃ ذاﻛﺮة ‪SecureROM‬و‬
‫ﺘﺤﻘﻖ ﻣﻨﻪ‪ .‬ﻋ‬
‫‪DFU‬ﺳﻄﺤًﺎ آﺧﺮ ﻟﻠﻤﻬﺎﺟﻢ ‪،‬ﺗﺤﻠﻴﻞ ‪IMG4‬واﻟ‬
‫ﺗﺠ ﺔ ﻋﻦ ﻣﺤﻠﻞ ‪ASN.1.‬‬
‫ﺘﻌﻘﻴﺪ ﻫﻤﺎ ‪ ،‬ﻟﺪرﺟ ﺔ أن اﻟﻌﺪﻳﺪ ﻣﻦ ﻧﻘﺎط اﻟﻀﻌﻒ ﻓ ﻲ اﻟﻤﺎﺿ ﻲ ﻛﺎﻧ ﺖ ﻧﺎ‬
‫ﺑ‬‫ﺘﻬﺮ ‪ASN.1‬و ‪DER‬‬
‫ﺗﺸ‬

‫ﺘﺎز‪.‬‬
‫ﺘﻀﻤﻦﺗﺤﻠﻴﻞ ‪ASN.1‬اﻷﺳﺎﺳ ﻲ ‪ ،‬ﻓﺈن ﻫﺬاﻳﻮﻓﺮﺳﻄﺢ ﻫﺠﻮم ﻣﻤ‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪IMG4‬ﻳ‬
‫ﻧﻈ ًﺮاﻷن اﻟ‬

‫ﺘﺎج اﻟﻤﺮء إﱃ اﻟﺤﺼﻮل ﻋﲆ‬


‫ﺛﻢﻳﺤ‬ ‫ﺘﻌﺪدة ﻟﻜ ﻲﺗﻌﻤﻞ‪ .‬أوﻻ ً ‪،‬ﻳﺠ ﺐ ﻫﺰﻳﻤ ﺔ وﺿﻊ اﻟﺤﻤﺎﻳ ﺔ ﻟﻤ ﺴﺎﺣ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم‪.‬‬ ‫ﺘﻐﻼل ﻫﺬه إﱃ ﻧﻘﺎط ﺿﻌﻒ ﻣ‬
‫ﺘﺎجﺳﻠ ﺴﻠ ﺔ اﻻﺳ‬
‫‪1‬ﻋﺎدة ‪،‬ﺗﺤ‬
‫ﺑﻮاﺳﻄ ﺔ ﻧﻈﺎم ﻣﻌﻘﺪﻳ ﺴﻤﻰ ‪APRR [24].‬‬‫ﺘﻐﻴﻴﺮا ت‬
‫ﺑﺤﻘﻴﻘ ﺔ أن اﻟﻨﻮاة ﻣﺤﻤﻴ ﺔ ﻣﻦ اﻟ‬‫ﺗﻨﻔﻴﺬ ﻛﻮد اﻟﻨﻮاة‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻻﻳﺰال اﻟﻤﺮء ﻣﻘﻴﺪًا‬

‫ﺗﻪ اﻟﺨﺎﺻ ﺔ ‪ ،‬ﻓﻘﻂ ﻣﻦ ﺧﻼل اﻟﺤﺼﻮل ﻋﲆ ﺷﻬﺎدة ﻋﺸﻮاﺋﻴ ﺔ‬


‫ﺑﺸﻬﺎد‬‫ﺛﻮﻗ ﺔ‬
‫ﺑ ﺔ ﻓﻮق ﺷﻬﺎدة اﻟﺠﺬر اﻟﻤﻮ‬
‫ﺘﺎ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ اﻟﻜ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫‪2‬ﻋﲆﺳ‬
‫ﺘ ﺐ ﻓ ﻲ ‪SecureROM.‬‬
‫اﻛ‬

‫ﺑﻮاﺳﻄ ﺔ ‪SEP.‬‬‫ﺗﻴﺢ ﻣﺤﻤﻴ ﺔ‬


‫ﺑﻤﻔﺎ‬‫ﻻﺗﺰال ﺻﻮر ‪3iBoot‬ﻣﺸﻔﺮة‬

‫‪9‬‬
‫‪Machine Translated by Google‬‬

‫‪3.2‬اﻟﺠﺬر ﻋﲆ اﻟﺠﻬﺎز‬ ‫‪10‬‬

‫ﺘﻤﺪ ﻣﻌﻈﻢ‬
‫ﺋﻤﺎ‪.‬ﺗﻌ‬
‫ﺣﺎ دا ً‬
‫ﺘﺎ ً‬
‫ﺗﻮﻛﻮل ‪DFU‬ﻣ‬
‫ﺑﺮو‬‫ﺑﺎﻷﺟﻬﺰة ﻏﻴﺮ اﻟﻤﺆﻣﻨ ﺔ ﻓﻘﻂ ‪-‬ﻳﺠ ﺐ أنﻳﻜﻮن‬
‫ﺗﺼﺎل ‪USB‬‬
‫ﺘﻘﻴﻴﺪ ا‬
‫ﺑ‬‫ﺘﺸﻐﻴﻞ اﻟﻌﺎدي ‪-‬ﺣﻴ ﺚ ﻗﺎﻣ ﺖ ‪Apple‬‬
‫ﻋﲆ ﻋﻜ ﺲ اﻟ‬
‫ﺘﺨﺪم ‪4.‬‬
‫ﺘﺸﻐﻴﻞ ﻓ ﻲ ﻣ ﺴﺎﺣ ﺔ اﻟﻤ ﺴ‬ ‫ﺜﺮ أﻣﺎﻧًﺎ أو ﻣﺼﺎدﻗ ﺔ اﻟﻤﺆﺷﺮ أو ﺣ‬
‫ﺘﻰ اﻟ‬ ‫اﻟﺪﻓﺎﻋﺎ ت ﻋﲆﺗﻌﺰﻳﺰ أﻣﺎن ‪SecureROM‬ﻧﻔ ﺴﻪ ﻣﻦ ﺧﻼلﺗﻨﻔﻴﺬ ﻛﻮﻣ ﺔ أﻛ‬

‫‪3.2‬اﻟﺠﺬر ﻋﲆ اﻟﺠﻬﺎز‬

‫ﺋﻴ ﺴﻴ ﺔ واﺣﺪة‬
‫ﺘﻔﺎﻋﻞ ﻣﻊ ‪ SecureROM.‬ﻫﻨﺎك ﻃﺮﻳﻘ ﺔ ر‬
‫ﺗﻪ ﻟﻠ‬ ‫ﺘﺼﺮ أ ً‬
‫ﻳﻀﺎ ﻋﲆ ﺧﻴﺎرا‬ ‫ُﻌﺪ أو ﻟﺪﻳﻪ وﺻﻮل ﻣﺎدي( ﺟﺬ ًرا ﻋﲆ اﻟﺠﻬﺎز ‪ ،‬ﻓﺈﻧﻪﻳﻘ‬
‫ﺑ‬‫ﺘ ﺴ ﺐ اﻟﻤﻬﺎﺟﻢ )ﻋﻦ‬
‫ﺑﻤﺠﺮد أنﻳﻜ‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪IMG4‬ﻋﻦ ﻃﺮﻳﻖ‬
‫ﺘﺨﺰﻳﻦ ﻟﻠﻤﺮاﺣﻞ اﻟﻼﺣﻘ ﺔ ﻣﻦ ﻣﺤﻤﻞ اﻹﻗﻼع‪ .‬ﻣﺮة أﺧﺮى ‪ ،‬ﻗﺪﻳﺮﻏ ﺐ اﻟﻤﻬﺎﺟﻢ ﻓ ﻲ ﻛ ﺴﺮ ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺘﻔﺎﻋﻞ ﻣﻊ ‪SecureROM‬ﻣﻦ اﻟﻨﻮاة ‪ ،‬وﺳﻴﻂ اﻟ‬
‫ﻟﻠ‬
‫ﺒﻞ ‪A11 -‬ﻛﺎن ﻫﻨﺎكﺳﻄﺢ إﺿﺎﻓ ﻲ ‪ ،‬و ﻫﻮﺗﺤﻠﻴﻞ ﻣ ﺴﺎﺣﺎ ت أﺳﻤﺎء ‪NVME‬‬
‫ﺘﺨﺪم ‪APs‬ﻗ‬
‫ﺘ ﻲﺗ ﺴ‬
‫ﺗﻠﻚ اﻟ‬
‫ﺘﺎﻟﻴ ﺔ‪ .‬ﻋﲆ أﺟﻬﺰة ‪iPhone‬اﻷﻗﺪم ‪-‬‬
‫ﺗﻌﺪﻳﻞ ﻣﻠﻒ ‪IMG4‬ﻟﻠﻤﺮﺣﻠ ﺔ اﻟ‬
‫ﺒﺎﺷﺮة ﻣﻦ ‪SPI NAND‬دون أيﺗﺤﻠﻴﻞ ﻣﻌﻘﺪ‪.‬‬
‫ﺘﺎﻟﻴ ﺔ ﻣ‬
‫ﺗﺤﻤﻴﻞ اﻟﻤﺮﺣﻠ ﺔ اﻟ‬
‫ﺘﺎﻟﻴ ﺔ‪ .‬ﻋﲆ أﺟﻬﺰة ‪iPhone‬اﻷﺣﺪ ث ‪،‬ﺗﻤ ﺖ إزاﻟ ﺔ ﻫﺬا اﻟ ﺴﻄﺢ و‬
‫ﺜﻮر ﻋﲆ اﻟﻤﺮﺣﻠ ﺔ اﻟ‬
‫ﻟﻠﻌ‬

‫ﺘﻤﺪ ﻣﻌﻈﻢ اﻟﺪﻓﺎﻋﺎ ت ﻋﲆﺗﻌﺰﻳﺰ أﻣﻦ ‪SecureROM‬ﻧﻔ ﺴﻪ‪.‬‬


‫ﺑﻖ ‪،‬ﺗﻌ‬
‫ﺘﻬﺪﻳﺪ اﻟ ﺴﺎ‬
‫ﻛﻤﺎ ﻓ ﻲ ﻧﻤﻮذج اﻟ‬

‫ﺘﺸﻮﻳ ﺶ‬
‫ﺘﺎﺟﺎ ت ﻟﻠ‬
‫ﺘﻨ‬‫‪3.3‬اﺳ‬

‫ﺗﺤﻤﻴﻞ اﻟﺼﻮرة ( ‪5.‬‬


‫ﺘﺤﻘﻖ ﻣﻦ ‪)IMG4‬‬
‫ﺘﻬﺪﻳﺪ ‪ ،‬ﻣﻌﺎﻟﺠ ﺔ )‪DFU (getDFUImage‬واﻟ‬
‫ﻣﻠﺨﺼﺎﻷﺳﻄﺢ اﻟﻬﺠﻮم اﻟﻤﺤﺪدة اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻛﻼ ﻧﻤﻮذﺟ ﻲ اﻟ‬
‫ً‬ ‫ﻳﻮﺿﺢ اﻟﺸﻜﻞ ‪3.1‬‬
‫ﺑﺈﻣﻜﺎﻧﻴ ﺔ اﻟﻮﺻﻮل اﻟﻤﺎدي ﻟﺪﻳﻪ‬‫ﺘﻊ‬
‫ﺘﻤ‬‫ﺗﻮﻛﻮل ‪DFU -‬ﻣﻦ اﻟﺬاﻛﺮة‪.‬ﻳﻤﻜﻦ ﻟﻠﻤﺮء أنﻳﺮى أن اﻟﻤﻬﺎﺟﻢ اﻟﺬيﻳ‬
‫ﺑﺮو‬‫ﺒﺮ‬
‫ﺘﻼﻣﻪ ﻋ‬
‫ﺑﻌﺪ اﺳ‬
‫ﺘﻢﺗﺤﻤﻴﻞ ﻣﻠﻒ ‪IMG4‬ﻣﻦ اﻟﻘﺮص أو ‪-‬‬
‫ﻳ‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪IMG4‬ﻣﻔﻴﺪة ﻟﻜﻼﺳﻴﻨﺎرﻳﻮ ﻫﺎ ت‬
‫ﺜﻐﺮة اﻷﻣﻨﻴ ﺔ داﺧﻞ اﻟ‬
‫ﺗﺤﻠﻴﻞ ‪IMG4.‬ﻣﻦ ﻧﺎﺣﻴ ﺔ أﺧﺮى ‪ ،‬ﻓﺈن اﻟ‬
‫ﺒﺮ ‪ ،‬ﺣﻴ ﺚﻳﻤﻜﻨﻪ ﻣﻬﺎﺟﻤ ﺔ ﻛﻞ ﻣﻦ ﻣﻌﺎﻟﺠ ﺔ ‪DFU‬و‬
‫ﺳﻄﺢ ﻫﺠﻮم أﻛ‬
‫ﺑـ ‪*.‬ﻣﻦ اﻵن ﻓﺼﺎﻋﺪًا ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﺪرس ﻧﻤﻮذجﺗﻬﺪﻳﺪ اﻟﻮﺻﻮل اﻟﻤﺎدي‪.‬‬‫ﺘﺤﻘﻖ ﻣﻦ ‪IMG4 ،‬اﻟﻤﺸﺎر إﻟﻴﻪ‬
‫اﻟﻤﻬﺎﺟﻢ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻗﺮرﻧﺎﺗﺸﻮﻳ ﺶ ﻛﻞ ﻣﻦ ﻣﻌﺎﻟﺠ ﺔ ‪DFU‬واﻟ‬

‫ﺧﺎﺿﻊ ﻟﻠ ﺴﻴﻄﺮة‬

‫ﺑﺪﻧ ﻲ‬
‫‪IMG4‬‬
‫وﺻﻮل‬

‫ﺧﺎﺿﻊ ﻟﻠ ﺴﻴﻄﺮة‬
‫رﺳﺎﺋﻞ ‪USB‬‬

‫*‬

‫‪SecureROM‬‬ ‫‪getDFUImage‬‬ ‫ﺗﺤﻤﻴﻞ اﻟﺼﻮرة‬ ‫‪iBoot‬‬

‫*‬

‫ﺟﺬر‬
‫ذاﻛﺮة‬ ‫‪IMG4‬‬ ‫ﻗﺮص ‪IMG4‬‬
‫وﺻﻮل‬

‫ﺧﺎﺿﻊ ﻟﻠ ﺴﻴﻄﺮة‬

‫ﺘﻬﺪﻳﺪ وأﺳﻄﺢ ﻫﺠﻮﻣﻬﻤﺎ‪.‬‬


‫اﻟﺸﻜﻞ ‪3.1:‬ﻣﻠﺨﺺ ﻟﻨﻤﻮذﺟ ﻲ اﻟ‬

‫ﺘﺨﻔﻴﻒ ﻫﺬه ﻓ ﻲ اﻷﻗ ﺴﺎم ‪6.1.1‬إﱃ ‪6.1.3.‬‬


‫ﺗﻢﺗﻔﺼﻴﻞ ﻋﻮاﻣﻞ اﻟ‬
‫‪4‬‬
‫ﺘﻔﺼﻴﻞ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪4.4.‬‬
‫ﺑﺎﻟ‬‫ﺘﻢ ﺷﺮح أ ﻫﻤﻴ ﺔ ﻫﺬه اﻟﻮﻇﺎﺋﻒ‬
‫‪5‬ﺳﻴ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪4‬‬

‫ﺗﺼﻤﻴﻢ‬

‫ﺋﻴ ﺴﻴ ﺔ اﻟﺤﺎﻟﻴ ﺔ وﺣﻠﻮﻟﻬﺎ‪.‬‬


‫ﺘﺤﺪﻳﺎ ت اﻟﺮ‬
‫ﺘﻘﻞ اﻵن إﱃ أ ﻫﺪافﺗﺼﻤﻴﻢ ‪emmutaler‬واﻟ‬
‫ﻧﻨ‬
‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺑﺎﻟ‬‫ﺘﻌﻠﻘ ﺔ‬
‫ﺑﻌﺾ اﻟﻤﺼﻄﻠﺤﺎ ت اﻟﻤ‬‫ﺒﺎ إﱃ ﺟﻨ ﺐ ﻣﻊ‬
‫ﺘﺸﻮﻳ ﺶ اﻟﻨﻬﺎﺋﻴ ﺔ ﺟﻨ ً‬
‫ﺘﺼﻤﻴﻢ ﻟﻌﻤﻠﻴ ﺔ اﻟ‬
‫أﺧﻴ ﺮًا ‪ ،‬ﻧﻘﺪم اﻟ‬

‫‪4.1‬اﻟﻬﺪف )اﻷ ﻫﺪاف(‬

‫ﺜﺮﺗﺤﺪﻳﺪًا ‪ ،‬اﻟﻬﺪف ﻫﻮﺗﺸﻮﻳ ﺶﺗﺤﻠﻴﻞ ‪IMG4‬‬


‫ﺑﺸﻜﻞ أﻛ‬
‫ﺘﺸﻐﻴﻞ ‪iOS.‬و‬
‫ﺘﻤﻬﻴﺪ ﻟﻨﻈﺎم اﻟ‬
‫ﺋﻴ ﺴ ﻲ ﻟﻸﻃﺮوﺣ ﺔ ﻫﻮﺗﺸﻮﻳ ﺶ أداةﺗﺤﻤﻴﻞ اﻟ‬
‫ﺘﻀﺢ ﻣﻦ اﻟﻌﻨﻮان ‪ ،‬ﻓﺈن اﻟﻬﺪف اﻟﺮ‬
‫ﻛﻤﺎﻳ‬
‫ﺗﻮﻛﻮل ‪USB DFU‬داﺧﻞ ‪SecureROM.‬‬
‫ﺑﺮو‬
‫ﺘﺤﻘﻖ ﻣﻨﻪ ‪ ،‬و‬
‫واﻟ‬
‫ﺗﺤﻘﻴﻘﺎ ﻟﻬﺬه اﻟﻐﺎﻳ ﺔ ‪ ،‬ﻫﻨﺎك اﻟﻌﺪﻳﺪ ﻣﻦ اﻷ ﻫﺪاف ذا ت اﻟﺼﻠ ﺔ‪.‬‬
‫ﺘﻠﻔ ﺔ ﻣﻦ ‪SecureROM‬‬
‫ﺜﺎﻟﻴ ﺔ ‪،‬ﻳﻤﻜﻦ ﻟﻠﻤﺮء أنﻳﻄﻐﻰ ﻋﲆ اﻟﻌﺪﻳﺪ ﻣﻦ اﻹﺻﺪارا ت اﻟﻤﺨ‬
‫ﻋﺎﻣﺎ ﻗﺪر اﻹﻣﻜﺎن‪ .‬ﻣﻦ اﻟﻨﺎﺣﻴ ﺔ اﻟﻤ‬
‫ﻳﺠ ﺐ أنﻳﻜﻮن ﺣﻞﺗﺸﻮﻳ ﺶ ‪ً SecureROM‬‬
‫ﺜﻴﺮ ﻣﻦ اﻟﺠﻬﺪ اﻹﺿﺎﻓ ﻲ‪ .‬ﻧﻈ ﺮًاﻷﻧﻪ ﻻﻳﻤﻜﻦﺗﺤﺪﻳ ﺚ ‪SecureROM ،‬ﻻﺗﺰال اﻹﺻﺪارا ت اﻟﻘﺪﻳﻤ ﺔﺗﻬﻢ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺷﺨﺎص اﻟﺬﻳﻦ ﻟﺪﻳﻬﻢ أﺟﻬﺰة ﻗﺪﻳﻤ ﺔ‪.‬‬
‫ﺑﺬل اﻟﻜ‬‫دون‬
‫ﺘﻤﺎمﺗﺸﻮﻳ ﺶ اﻟﻤﺰﻳﺪ‬
‫ﺜﻴﺮ ﻟﻼ ﻫ‬
‫ﺘﻄﻠ ﺐ اﻟﻘﻠﻴﻞ ﻣﻦ اﻟﺠﻬﺪ اﻹﺿﺎﻓ ﻲ‪ .‬ﻗﺪﻳﻜﻮن ﻣﻦ اﻟﻤ‬
‫ﺜﻞ ‪USB‬أو ‪IMG4 -‬ﻳﺠ ﺐ أنﻳ‬
‫ﺘﻠﻔ ﺔ ‪-‬ﻣ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻓﺈنﺗﺸﻮﻳ ﺶ اﻷﺟﺰاء اﻟﻤﺨ‬
‫ﺒﻞ‪.‬‬
‫ﺘﻘ‬‫ﻣﻦ اﻷﺟﺰاء ﻓ ﻲ اﻟﻤ ﺴ‬

‫ﺒ ﺴﻴﻂ اﻟﻔﺮز ﻏﻴﺮ‬


‫ﺘ‬ ‫ﺜﻮر ﻋﻠﻴﻬﺎ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ ﻟ‬ ‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬ﻳﺠ ﺐ أنﺗﻜﻮن ﻫﻨﺎك إﻣﻜﺎﻧﻴﺎ تﺗﺼﺤﻴﺢ أﺧﻄﺎء ﻏﻨﻴ ﺔ ﻟﻴ ﺲ ﻓﻘﻂ ﻟﻠﻤ ﺴﺎﻋﺪة ﻓ ﻲ أي أﻋﻄﺎلﺗﻢ اﻟﻌ‬
‫ﺑﻴﻦ‬‫ﺘﻤﻴﻴﺰ‬
‫ﺒﺎ ب ﻣﻌﻘﺪة‪ .‬إن ﻣﺤﺎوﻟ ﺔ اﻟ‬
‫ﺑﻤﺤﺎﻛﺎة ‪SecureROM‬أوﺗﺸﻐﻴﻠﻪ ﺧﺎرج أي أداة ﺿ‬ ‫ﺗﺞﻳﺠ ﺐ أنﻳ ﺴﻤﺢ أ ً‬
‫ﻳﻀﺎ‬ ‫اﻟﻤﻘﺼﻮد أو اﻟ ﺴﻠﻮك اﻟﺨﺎﻃ ﺊ‪ .‬ﻫﺬاﻳﻌﻨ ﻲ أن اﻟﺤﻞ اﻟﻨﺎ‬
‫ﺑ ﺔ ‪ ،‬إذاﺗﻄﻠ ﺐ اﻷﻣﺮ إرﻓﺎق أداة ﻣﻌﻘﺪة ﻣﺰﻋﺠ ﺔ‪.‬‬
‫ﺜﺮ ﺻﻌﻮ‬
‫ﺑﻨﺎ ﻫ ﻲ أﻛ‬‫ﺘﻨﻔﻴﺬ اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻬﺎ ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺒ‬‫ﺘ ﻲﺗ ﺴ‬
‫اﻷﻋﻄﺎل "اﻟﺤﻘﻴﻘﻴ ﺔ" واﻷﻋﻄﺎل اﻟ‬

‫ﺗﻤﺎﻣﺎ‬
‫ً‬ ‫ﺋﻤﺎ آﻣﻨًﺎ‬
‫ﺜﻮر ﻋﲆ أي ﻧﻘﺎط ﺿﻌﻒ ﺟﺪﻳﺪة‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻫﺬاﺳﻴﻜﻮن أﻣ ﺮًا راﺋﻌً ﺎ ‪ ،‬إﻻ أن ‪SecureROM‬ﻛﺎن دا ً‬
‫اﻟﻬﺪف اﻟﻮاﺿﺢ ﻣﻦ ﻫﺬه اﻷﻃﺮوﺣ ﺔ ﻫﻮ اﻟﻌ‬
‫ﺘﺸﻔﻬﺎ ‪Apple‬‬
‫ﺜﻮر ﻋﲆ ﻧﻘﺎط ﺿﻌﻒ ﻟﻢﺗﻜ‬
‫ﺗﻤﺎﻣﺎ اﻟﻌ‬
‫ً‬ ‫ﺘﺸﻮﻳ ﺶ‪ .‬ﻟﺬﻟﻚﺳﻴﻜﻮن ﻣﻦ اﻟﻤﺪ ﻫ ﺶ‬
‫ﺘﺰاﻳﺪ ﻟﻠ‬
‫ﺑﺸﻜﻞ ﻣ‬
‫ﺘﺨﺪام ‪Apple‬‬
‫ﺘﻤﺎﻋﻴ ﺔ إﱃ اﺳ‬
‫وﻗﺪ أﻟﻤﺤ ﺖ اﻟﻤﺼﺎدر ﻏﻴﺮ اﻻﺟ‬
‫ﺑﺎﻟﻔﻌﻞ ‪1.‬‬‫ﻧﻔ ﺴﻬﺎ‬

‫ﺘﺤﺪﻳﺎ ت‬
‫‪4.2‬اﻟ‬
‫ﺑﺪﻻ ً ﻣﻦ اﻟﻮﺻﻮل إﱃ اﻟﻜﻮد اﻟﻤﺼﺪري ‪،‬‬‫ﺘﺮﻛ ﺔ"‪.‬‬
‫ﺘﺤﺪﻳﺎ ت اﻹﺿﺎﻓﻴ ﺔ ‪ ،‬ﻏﻴﺮ ﻣﻮﺟﻮدة ﻋﻨﺪ ﻣﺤﺎوﻟ ﺔﺗﺸﻮﻳ ﺶ اﻷ ﻫﺪاف "اﻟﻤﺸ‬
‫ﺒﻴﺮة ﻣﻦ اﻟ‬
‫ﺗﻘﺪم ‪Fuzzing SecureROM‬ﻣﺠﻤﻮﻋ ﺔ ﻛ‬
‫ﺘﻮﻗﻊ أنﻳﻌﻤﻞ ﻋﲆ اﻟﻤﻌﺪن ‪ ،‬ﻣﻊ إﻣﻜﺎﻧﻴ ﺔ اﻟﻮﺻﻮل‬
‫ﺘﻪ ﻟﻤﻌﺎﻟﺠﺎ ت ‪Apple‬وﻣﻦ اﻟﻤ‬
‫ﺒﻴﻌ‬
‫ﺑﻄ‬‫ﺜﻨﺎﺋ ﻲ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫ﺠﻤﻊ ﻟﻠﻌﻤﻞ ﻣﻌﻪ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬ﺗﻢﺗﺼﻤﻴﻢ اﻟ‬
‫ﺛﻨﺎﺋ ﻲُﻣ ﱠ‬‫ﻟﺪﻳﻨﺎ ﻓﻘﻂ‬
‫إﱃ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺟﻬﺰة اﻟﻄﺮﻓﻴ ﺔ اﻟﺨﺎﺻ ﺔ اﻟﻤﻮﺟﻮدة ﻋﲆ أﺟﻬﺰة ‪Apple.‬‬

‫ﺛ ﺔ أﺣﺮف‪.‬‬
‫ﺛﻼ‬‫ﺘ ﻲﺗﺪﻋﻤﻬﺎ وﻛﺎﻻ ت ﻣﻦ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬أي ﻣﻦ اﻟﺸﺮﻛﺎ ت اﻟﻌﺪﻳﺪة اﻟ‬‫‪1‬أو‬

‫‪11‬‬
‫‪Machine Translated by Google‬‬

‫‪4.3‬ﺣﻠﻮل‬ ‫‪12‬‬

‫ﺛﻨﺎﺋ ﻲ اﻟﻨﻘﻄ ﺔ‬
‫‪4.2.1‬‬

‫ﺘﺠﻤﻴﻊ‪ .‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪،‬‬


‫ﺑﺎﻟ‬‫ﺑﻌﺾ اﻷﺟﺰاء اﻟﻀﺮورﻳ ﺔ ﻟﻠ ﺴﻤﺎح‬‫ﺗﻤﺎﻣﺎ وﻳﻔﻘﺪ‬
‫ً‬ ‫ﺑ ًﻘﺎ ‪ ،‬إﻻ أﻧﻪ ﻗﺪﻳﻢ‬
‫ﺑﻴﻨﻤﺎﺗﻢﺗ ﺴﺮﻳ ﺐ اﻟﻜﻮد اﻟﻤﺼﺪري ﻟﺠﻤﻴﻊ ‪SecureROM‬و ‪iBoot‬ﺳﺎ‬
‫ﺘﺮﺟﻢ ‪SecureROM‬ﻟﻠﻌﻤﻞ ﻣﻌﻪ‪ .‬ﻓ ﻲ ﺣﻴﻦ‬
‫ﺜﻨﺎﺋ ﻲ اﻟﻤ‬ ‫ً‬
‫ﺘﺤﻴﻼ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻟﺪﻳﻨﺎ ﻓﻘﻂ اﻟﻤﻠﻒ اﻟ‬
‫ﺘﺎﻟ ﻲﻳﺠﻌﻞﺗﺸﻮﻳ ﺶ ‪IMG4‬ﻣﻦ اﻟﻤﺼﺪر أﻣ ﺮًا ﻣ ﺴ‬
‫ﺑﺎﻟ‬
‫ﺟﻤﻴﻊ ﻃﺮق ‪IMG4‬ﻣﻔﻘﻮدة و‬
‫ﺒ ﺐ ﻋﺪم اﻟﻮﺻﻮل إﱃ اﻟﻜﻮد اﻟﻤﺼﺪري‪.‬‬
‫ﺑﺴ‬‫ﺘﻈﺮ‬
‫ﺘ ﻲﺗﻨ‬
‫ﺘﺤﺪﻳﺎ ت اﻟ‬
‫ﺑﺪون ﻣﺼﺪر ‪ ،‬ﻫﻨﺎك اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬‫ﺜﻨﺎﺋﻴﺎ ت‬
‫ﺘﺸﻮﻳ ﺶ اﻟ‬
‫ﺑ‬‫ﺗ ﺴﻤﺢ‬
‫ﺜﻞ ‪AFL ++ [8] -‬‬
‫ﺜ ﺔ ‪-‬ﻣ‬
‫أن اﻷﻟﻐﺎز اﻟﺤﺪﻳ‬

‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻓﺈن‬‫ﺘﻤﻞ‪.‬‬


‫ﺗﻤﺎﻣﺎ وﻏﻴﺮ ﻣﻜ‬
‫ً‬ ‫ﺛﻴﻖ ﻣﻮﺟﻮد إﻣﺎ ﻣﺆرخ أو ﻣﺤﻴﺮ‬
‫ﺑـ ‪IMG4 ،‬ﻧﻈ ﺮًاﻷن أيﺗﻮ‬ ‫أوﻻ ً ‪،‬ﻳﺠ ﺐ إﺟﺮاء ﻫﻨﺪﺳ ﺔ ﻋﻜ ﺴﻴ ﺔ ﻟ‬
‫ﺘﻨ ﺴﻴﻖ اﻹدﺧﺎل اﻟﺨﺎص‬
‫ﺑﺪوره‬‫ﺒﻬﺎ‪ .‬و ﻫﺬا‬
‫ﺘﺎﻟ ﻲﻳﺠ ﺐﺗﺠﻨ‬
‫ﺑﺎﻟ‬
‫ﺑﻬﺪﻓﻨﺎ و‬‫ﺒﻂ اﻟﻮﻗ ﺖ ‪-‬ﻻ ﻋﻼﻗ ﺔ ﻟﻬﺎ‬
‫ﺜﺎل إﻋﺪاد ﺟﺪاول اﻟﺼﻔﺤﺎ ت أوﺗﻬﻴﺌ ﺔ أﺟﻬﺰة ﺿ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫اﻟﻌﺪﻳﺪ ﻣﻦ أﺟﺰاء ‪SecureROM -‬ﻋﲆﺳ‬
‫ﺘﻄﻠ ﺐﺗﺤﺪﻳﺪ اﻟﻄﺮق اﻟﺪﻗﻴﻘ ﺔ ﻟﻤﻌﺎﻟﺠ ﺔ ‪IMG4‬و ‪USB.‬‬
‫ﻳ‬

‫ﺑﺪون اﻟﻮﺻﻮل إﱃ ﺷﻔﺮة اﻟﻤﺼﺪر‪.‬‬‫ﺑﺔ‬


‫ﺜﺮ ﺻﻌﻮ‬
‫ﺘﺎﻟﻴﺎن أﻛ‬
‫ﺘﺤﺪﻳﺎن اﻟ‬
‫ﺒﺢ اﻟ‬
‫ﻳﺼ‬

‫‪4.2.2‬ﻣﺼﻤﻢ ﻟﻤﻌﺎﻟﺠﺎ ت ‪Apple‬‬

‫ﺒﺎ‬
‫ﺘﻨﻔﻴﺬ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻏﺎﻟ ً‬
‫ﺘﻌﻠﻴﻤﺎ ت ﻟﻬﺎﺳﻠﻮك ﻣﺤﺪد ﻟﻠ‬
‫ﺑﻌﺾ اﻟ‬‫ﺑﻞ إن‬‫ﺒﺎﺋﻊ ﻓﺤ ﺴ ﺐ ‪،‬‬
‫ﺑﺎﻟ‬‫ﺗﻌﻠﻴﻤﺎ ت ﺧﺎﺻ ﺔ‬
‫ﺒﺎﺋﻌﻴﻦ اﻟﻘﺪرة ﻋﲆ اﻟﺤﺼﻮل ﻋﲆﺳﺠﻼ ت و‬
‫ﻻﻳﻤﻨﺢ ‪ARM‬اﻟ‬
‫ﺒ ﺴﺎﻃ ﺔﺗﺸﻐﻴﻞ ‪SecureROM‬ﻋﲆ أﺟﻬﺰة‬
‫ﺑ‬‫ﺗﻤﺎﻣﺎ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻻﻳﻤﻜﻦ‬
‫ً‬ ‫ﺘﺄﺧﺮﻳﻦ‬
‫ّﻌﻴﻦ اﻵﺧﺮﻳﻦ ﻣ‬
‫ﺒﻖ ﻣﻌﺎﻟﺠﺎ ت ‪Apple‬أﺣﺪ ث ﻣﻮاﺻﻔﺎ ت ‪ARM ،‬ﻓ ﻲ ﺣﻴﻦ أن اﻟﻤﺼﻨ‬
‫ﻣﺎﺗﻄ‬
‫ﺘ ﻲﺗﻢ إﺻﺪار ﻫﺎ ﻣﺆﺧ ﺮًا ‪ ،‬إﻻ أﻧﻪ ﻻﻳﻮﺟﺪ إﺻﺪار ﻛﺎﻣﻞ ﻣﻦ ‪Linux‬‬
‫ﺑﻴﻨﻤﺎﻳﻤﻜﻦ ﻟﻠﻤﺮء ﻣﺤﺎوﻟ ﺔﺗﺸﻐﻴﻠﻪ ﻋﲆ أﺟﻬﺰة ‪ARM Mac‬اﻟ‬
‫ﺜﻞ ‪Raspberry Pi.‬‬
‫‪ARM‬ﺳﻬﻠ ﺔ اﻟﻮﺻﻮل ‪ ،‬ﻣ‬
‫ﺑ ﺔ ﻫﺬه اﻷﻃﺮوﺣ ﺔ ‪2.‬‬
‫ﺘﺎ‬
‫ﺘﻰ ﻛ‬
‫ﺣ‬

‫ﺜﺎل ﻧﺼﻔ ﻲ‬
‫‪4.2.3‬اﻟﻤﻌﺪن اﻟﻌﺎري أوﺗﻤ‬

‫ﺘﻴﺎز( ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﺠﺪول ‪4.1 [15].‬ﻳﺸﻴﺮ‬ ‫ﺗ ﺴﻤﻰ أﺣﻴﺎﻧًﺎ اﻟﺤﻠﻘﺎ ت ﻓ ﻲ ‪X86‬أو ﻣ ﺴ‬
‫ﺘﻮﻳﺎ ت اﻻﻣ‬ ‫ﺘﻠﻔ ﺔ )‬
‫ﺜﻨﺎء ﻣﺨ‬
‫ﺘ‬‫ﺘﻮﻳﺎ ت اﺳ‬
‫ﺜﻞ أي ﻣﻌﺎﻟﺞ ﺣﺪﻳ ﺚ ‪،‬ﻳﻮﻓﺮ ‪ARM‬ﻣ ﺴ‬
‫ﻣ‬
‫ﺘﻴﺎزا ت‬
‫ﺘ ﺴﺠﻴﻞ‪.‬ﺗﺸﻴﺮ اﻣ‬
‫ﺘﻴﺎزا ت اﻟﺬاﻛﺮة واﻟﻮﺻﻮل إﱃ اﻟ‬
‫ﺘﻴﺎزا ت ‪ ،‬اﻣ‬
‫ﺘﻨﻔﻴﺬ اﻟﺤﺎﻟ ﻲ‪ .‬ﻫﻨﺎك ﻧﻮﻋﺎن ﻣﻦ اﻻﻣ‬
‫ﺑﻬﺎﺳﻴﺎق اﻟ‬‫ﺘﻊ‬
‫ﺘﻤ‬‫ﺘ ﻲﻳ‬
‫ﺘﻴﺎزا ت اﻟ‬
‫ﺜﻨﺎء اﻟﺤﺎﻟ ﻲ إﱃ اﻻﻣ‬
‫ﺘ‬‫ﺘﻮى اﻻﺳ‬
‫ﻣﺴ‬
‫ﺑﺼﻔﺤ ﺔ ‪3.‬ﻟﻠﻮﺻﻮل إﱃ‬‫ﺘﻌﻠﻖ‬
‫ﺘﻨﻔﻴﺬ اﻟﺤﺎﻟ ﻲ ﻓﻴﻤﺎﻳ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺣﻘﻮقﺳﻴﺎق اﻟ‬
‫ﺘﻴﺎزا ت ﻋﻨﺪ اﻟ‬
‫ﺘﺨﺪم اﻷذوﻧﺎ ت ﻏﻴﺮ اﻟﻤﻤﻴﺰة أو ذا ت اﻻﻣ‬
‫ﺘﺴ‬‫اﻟﺬاﻛﺮة إﱃ ﻣﺎ إذا ﻛﺎﻧ ﺖ ‪MMU‬ﺳ‬
‫ﺘﻮى‬
‫ﺘﻬﺎ‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻻﻳﻤﻜﻦ أنﻳﺤﺪ ثﺗﻐﻴﻴﺮ ﻓ ﻲ ﻣ ﺴ‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺗﻬﺎ أو ﻛ‬
‫ﺜﻨﺎء اﻟﻤﻄﻠﻮ ب ﻟﻘﺮاء‬
‫ﺘ‬‫ﺘﻮى اﻻﺳ‬
‫ﺘﻮي أيﺳﺠﻼ ت ﻧﻈﺎم ﻋﲆ ‪sux‬ﻳﺸﻴﺮ إﱃ اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ ﻣ ﺴ‬
‫اﻟ ﺴﺠﻞ ‪،‬ﺗﺤ‬
‫ﺜﻨﺎء أو اﻟﻌﻮدة ﻣﻨﻪ‪.‬‬
‫ﺘ‬‫ﺜﻨﺎء إﻻ ﻣﻦ ﺧﻼل أﺧﺬ اﺳ‬
‫ﺘ‬‫اﻻﺳ‬

‫ﺑﻞ‬‫ﺘﻮﻗﻊ ﻓﻘﻂ اﻟﻮﺻﻮل اﻟﻜﺎﻣﻞ إﱃ ذاﻛﺮة اﻟﻮﺻﻮل اﻟﻌﺸﻮاﺋ ﻲ اﻟﻔﻌﻠﻴ ﺔ وأيﺳﺠﻼ ت ﻧﻈﺎم ‪،‬‬
‫ﺘﺼﻤﻴﻤﻨﺎ ‪ ،‬ﺣﻴ ﺚ أن ‪SecureROM‬ﻻﺗ‬
‫ﺜﻨﺎء ﻣﻬﻤ ﺔ ﻟ‬
‫ﺘ‬‫ﺘﻮﻳﺎ ت اﻻﺳ‬
‫ﺗﻌﺪ ﻣ ﺴ‬
‫ﺜﻞ‬
‫ﺘﻮﻗﻊ ‪SecureROM‬اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺟﻬﺰة اﻟﻄﺮﻓﻴ ﺔ ‪ ،‬ﻣ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﺗ‬
‫ﺘﺮاﺿﻴ ﺔ ‪4.‬‬
‫ﺘ ﻲ ﻻﻳﻤﻜﻦﺗﺤﻮﻳﻠﻬﺎ إﱃ اﻓ‬ ‫ﺗﻌﻤﻞ اﻷﺟﻬﺰة اﻷﺣﺪ ث أ ً‬
‫ﻳﻀﺎ ﻓ ﻲ ‪EL3‬ﻓ ﻲ ﻧﻘﺎط ‪ ،‬واﻟ‬
‫ﺒﻴ ًﺮا‪.‬‬
‫ﺘﻄﻠ ﺐ ﺟﻬﺪًا ﻫﻨﺪﺳ ًﻴﺎ ﻋﻜ ﺴ ًﻴﺎ ﻛ‬
‫ﺗ‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ و‬‫ﺑﻬﺎ‪.‬ﻳﺼﻌ ﺐ ﻣﺤﺎﻛﺎة ﻫﺬه اﻷﺟﻬﺰة اﻟﻄﺮﻓﻴ ﺔ‬‫ﺗﺼﺎل‬
‫ﺘ ﻲﻳﻤﻜﻦ اﻻ‬
‫ﻣﻌﺎﻟﺞ ‪SEP‬اﻟﻤ ﺴﺎﻋﺪ أو واﺟﻬ ﺔ ‪USB ،‬اﻟ‬

‫‪4.3‬اﻟﺤﻠﻮل‬

‫ﺒﻴﺮ‬
‫ﺘﻢ ﻣﻨﺎﻗﺸ ﺔﺗﺼﻤﻴﻤﻪ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪4.4.‬ﺟﺰء ﻛ‬
‫ﺘﺸﻮﻳ ﺶ ﻓ ﻲ اﻟﻐﺎﻟ ﺐ ﻣﻦ ﺧﻼل ]‪AFL ++ [8‬وﻳ‬
‫ﺘﻢ اﻟ‬
‫ﺘﻌﺪدة‪.‬ﻳ‬
‫ﺘﺤﺪﻳﺎ ت واﻷ ﻫﺪاف اﻟﻤﺬﻛﻮرة أﻋﻼه ﻣﻦ أﺟﺰاء ﻣ‬
‫ﺘﻜﻮن ﺣﻠﻨﺎ ﻟﻠ‬
‫ﻳ‬
‫ﻣﻨﻪ ‪،‬‬

‫ﺘﺸﻮﻳ ﺶ ﻣﻮﺟﻬ ﺔ ﻧﺤﻮ ‪Linux‬أو ‪Windows.‬‬


‫‪2‬ﻣﻌﻈﻢ أدوا ت اﻟ‬
‫ﺑﻬﺎ‪ .‬ﻣﺠﻤﻮﻋ ﺔ واﺣﺪة ﻟـ ‪EL0‬واﻷﺧﺮى‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﻴﻦ ﻣﻦ اﻷذوﻧﺎ ت اﻟﻤﺮ‬
‫ﺘﻮي ﻛﻞ ﺻﻔﺤ ﺔ ذاﻛﺮة ﻋﲆ ﻣﺠﻤﻮﻋ‬
‫ﺑﻤﻌﻨﻰ آﺧﺮ ‪،‬ﺗﺤ‬
‫‪3‬‬
‫ﺗﻢﺗﻌﻴﻴﻨﻪ ﻟـ ‪EL1‬وﻣﺎ ﻓﻮق‪.‬‬

‫ﺘﻮى ‪ ،‬ﻓﻼﻳﻤﻜﻦ ﺣﺠﺰ ﻋﻤﻠﻴﺎ ت اﻟﻮﺻﻮل ﻓ ﻲ ‪EL3.‬‬


‫ﺘﻮى أﻋﲆ‪ .‬ﻧﻈ ًﺮاﻷن ‪ EL3‬ﻫﻮ أﻋﲆ ﻣ ﺴ‬
‫ﺘﻮى أدﻧﻰ ﻣﻦ ﺧﻼل ﻣ ﺴ‬
‫ﺑﻤ ﺴ‬‫ﺘﻢ ﺣﺠﺰ ﻋﻤﻠﻴﺎ ت اﻟﻮﺻﻮل إﱃ اﻟ ﺴﺠﻼ ت واﻟﻌﻤﻠﻴﺎ ت اﻷﺧﺮى‬
‫ﺒﺎ ﻣﺎﻳ‬
‫‪4‬ﻏﺎﻟ ً‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺪ‬
‫ﺗﺼﻤﻴﻢ ﻣ‬
‫‪4.4‬‬ ‫‪13‬‬

‫ﺘﺨﺪام اﻟﻨﻤﻮذﺟ ﻲ ﻟﻠﻮﺻﻮل‬


‫ﺘﺰالﺗ ﺴﺠﻴﻞ ﺣﺎﻟ ﺔ اﻻﺳ‬
‫ﺘﻴﺎز ذاﻛﺮة اﻻﺧ‬
‫اﻣ‬

‫ﺘﻴﺎز‬
‫ﺑﺎﻣ‬‫ﺘﻴﺎز‬
‫ﺑﺎﻣ‬‫ﺘﻴﺎز‬
‫اﻣ‬ ‫ﺑﺮﻧﺎﻣﺞ ‪Hypervisor‬‬ ‫‪* EL0‬‬
‫ﺗﺸﻐﻴﻞ‬ ‫ﺒﻴﻖ ﻧﻈﺎم‬
‫ﺗﻄ‬
‫ﺘﻴﺎز‬
‫ﺑﺎﻣ‬ ‫)‪* THE (0 | 1‬‬ ‫‪EL1‬ﺔ‬
‫أو رﻣﺰ اﻟﺤﻤﺎﻳ‬
‫)‪* THE (0 | 1 | 2‬‬ ‫‪EL2‬‬

‫)‪* THE (0 | 1 | 2 | 3‬‬ ‫‪EL3‬‬

‫ﺘﺨﺪاﻣﻬﺎ اﻟﻨﻤﻮذﺟ ﻲ‪.‬‬


‫ﺜﻨﺎء ‪ARMv8-A‬واﺳ‬
‫ﺘ‬‫ﺘﻮﻳﺎ ت اﺳ‬
‫اﻟﺠﺪول ‪4.1:‬ﻣ ﺴ‬

‫ﺜﻨﺎﺋ ﻲ اﻟﻤﺼﺤﺢ‪.‬ﺗﻢﺗﻘﺪﻳﻢ‬ ‫ﺛﻨﺎﺋ ﻲ وأﺧﻴﺮا ً إﻧﺸﺎء ‪Linux ELF‬اﺳ‬


‫ﺘﻨﺎدًا إﱃ اﻟﻤﻠﻒ اﻟ‬ ‫ﺑﻌﺪ ذﻟﻚ إﺟﺮاءﺗﺼﺤﻴﺢ‬‫ﺑ ﺖ ‪،‬ﻳﻤﻜﻨﻨﺎ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺑﻔﻀﻞ اﻟ‬
‫ﺑ ﺖ ﻟـ ‪SecureROM.‬‬
‫ﺛﺎ‬‫ﻫﻮﺗﺤﻠﻴﻞ‬
‫ﺜﺮﺗﻔﺼﻴ ﻼ ً ﻟ‬
‫ﺘﻨﻔﻴﺬﻧﺎ ﻟﻬﺬه اﻟﺤﻠﻮل ﻓ ﻲ اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‪.‬‬ ‫ﺷﺮح أﻛ‬

‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ واﻟﺪﻳﻨﺎﻣﻴﻜ ﻲ‬


‫‪4.3.1‬اﻟ‬

‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺘﺮداد أﺳﻤﺎء اﻟﻮﻇﺎﺋﻒ وﻛ‬
‫ﺘﻨﺎ ‪IDA -‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘ ﺔ ﺟﻴﺪة ‪-‬ﻓ ﻲ ﺣﺎﻟ‬
‫ﺑ‬‫ﺛﺎ‬‫ﺘﺨﺪام أداةﺗﺤﻠﻴﻞ‬
‫ﺑﺎﺳ‬‫ﺋﻴ ﺴ ﻲ ﻟﺤﻠﻨﺎ‪.‬‬
‫ﺑ ﺖ ‪-‬وﻓ ﻲ اﻷﺟﺰاء اﻷﻗﻞ دﻳﻨﺎﻣﻴﻜﻴ ﺔ ‪-‬اﻷﺳﺎس اﻟﺮ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﻳﺸﻜﻞ اﻟ‬
‫ﺘﺪﻋﺎﺋﻬﺎ ﻣﻦ ﺧﺎرج ‪SecureROM ،‬ﻣﻤﺎﻳﻌﻨ ﻲ أﻧﻪﻳﻤﻜﻦ‬
‫ﺘﺨﺪام اﻷدوا ت اﻟﻤﺨﺼﺼ ﺔ ‪،‬ﻳﻤﻜﻦﺗﺼﺪﻳﺮ اﻟﺮﻣﻮز واﺳ‬
‫ﺑﺎﺳ‬
‫اﻟﻤﻌﻠﻮﻣﺎ ت ‪ ،‬ﻋﻦ ﻃﺮﻳﻖ اﻟﻬﻨﺪﺳ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ ‪SecureROM.‬‬
‫ﺗﺠﺎ ﻫﻞ اﻷﺟﺰاء ﻏﻴﺮ ذا ت اﻟﺼﻠ ﺔ‪.‬‬

‫ﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪ .‬ﻛﻤﺎ أﻧﻪﻳ ﺴﺎﻋﺪ‬


‫ﺜﻮر ﻋﲆﺳﺠﻼ ت ﻣﺤﺪدة ﻣﻦ ‪Apple‬وإﻣﺎ ﻣﻌﺮﻓ ﺔ ﻣﻌﻨﺎ ﻫﺎ أو ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺑ ﺖ واﻟﺪﻳﻨﺎﻣﻴﻜ ﻲ ‪،‬ﻳﻤﻜﻦ اﻟﻌ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻣﻦ ﺧﻼل اﻟ‬
‫ﺒﺪاﻟﻬﺎ‪.‬‬
‫ﺘ‬‫ﺘﻰ اﺳ‬
‫ﺗﻬﺎ أو ﺣ‬
‫ﺑﻌﺪ ذﻟﻚ ﻓﻬﻢ اﻟﻐﺮض ﻣﻨﻬﺎ وﻛﻴﻒﻳﻤﻜﻦ ﻣﺤﺎﻛﺎ‬‫ﻓ ﻲﺗﺤﺪﻳﺪ اﻷﺟﻬﺰة اﻟﻄﺮﻓﻴ ﺔ اﻟﺨﺎرﺟﻴ ﺔ أوﺳﺠﻼ ت اﻟﺬاﻛﺮة اﻷﺧﺮى اﻟﻤﻌﻴﻨ ﺔ‪.‬ﻳﻤﻜﻨﻨﺎ‬

‫ﺜﻨﺎﺋ ﻲ‬
‫ﺘﺮﻗﻴﻊ اﻟ‬
‫‪4.3.2‬اﻟ‬

‫ﺗﻬﺎ‬
‫ﺘﺨﺪم أوﺗﻌﻠﻴﻤﺎ ت أﺧﺮى ﻻﻳﻤﻜﻦ ﻣﺤﺎﻛﺎ‬
‫ﺘﺼﺤﻴﺢﺳﺠﻼ ت ‪Apple‬اﻟﺨﺎﺻ ﺔ أوﺗﻌﻠﻴﻤﺎ ت وﺿﻊ ﻏﻴﺮ اﻟﻤ ﺴ‬
‫ﺘﺨﺪﻣﻪ ﻟ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ‪ .‬ﻧ ﺴ‬‫ﺛﻨﺎﺋﻴ ﺔﺗﻌﻤﻞ‬‫ﺟﺰء ﻣﻬﻢ آﺧﺮ ﻫﻮ أداةﺗﺮﻗﻴﻊ‬
‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫ﺑ‬‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻔﺮدﻳ ﺔ‬
‫ﺘﻰﺗﺠﺎوز اﻟ‬
‫ﺒﺪالﺗﻨﻔﻴﺬ اﻟﻜﻮﻣ ﺔ ‪ ،‬راﺟﻊ اﻟﻘ ﺴﻢ ‪5.8 -‬وﺣ‬
‫ﺘ‬‫ﺜﺎل اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻘﺎﺋ ﻲ ‪-‬ﻋﲆﺳ‬
‫ﺑﺸﻜﻞ اﻧ‬‫ﺑﻂ اﻟﻮﻇﺎﺋﻒ‬
‫ﺘﻴﺢ ﻟﻨﺎ ر‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳ‬‫ﺑ ﺴﻬﻮﻟ ﺔ‪.‬‬
‫ﻣﺨﺼﺺ‪.‬‬

‫‪4.3.3 Linux ELF‬‬

‫ﺘﺸﻮﻳ ﺶ اﻟﺤﺎﻟﻴ ﺔ دون أي‬


‫ﺘﺨﺪام أدوا ت اﻟ‬
‫ﺘﻘﻠﻴﺪي ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﺨﺪام ﻧﻈﺎم ‪Linux ELF‬اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﻚ‪.‬‬
‫ﺑﺈﻧﺸﺎء ‪"Linux ELF‬ﻋﺎدي" ﻟﻴﻜﻮن ﻫﺪﻓﻨﺎ اﻟﻤﺮ‬‫ﺘﺠﻤﻴﻊ ﻛﻞ ذﻟﻚ ﻣﻌً ﺎ ‪ ،‬ﻧﻘﻮم‬
‫ﺑ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ‪.‬‬ ‫ﺑﺎﻟﻔﻌﻞ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻓﺈﻧﻪﻳ ﺴﻬﻞ أ ً‬
‫ﻳﻀﺎﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء ‪ ،‬ﻧﻈ ﺮًاﻷن أي ﻣﺼﺤﺢ أﺧﻄﺎء ﻣﻮﺟﻮدﺳﻴﻌﻤﻞ‬ ‫ﺜﻨﺎﺋ ﻲ ﻓﻘﻂ‬
‫ﺘﺸﻮﻳ ﺶ اﻟ‬
‫ﺗﻌﺪﻳﻼ ت ‪ ،‬ﻧﻈ ﺮًاﻷﻧﻬﺎﺗﺪﻋﻢ اﻟ‬

‫ﺒﻴﻖ أ ً‬
‫ﻳﻀﺎ ﻋﲆ اﻷﻧﻈﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ اﻷﺧﺮى‪ .‬أوﻻ ً ‪،‬‬ ‫ﺘﻄ‬‫ﺑﻠ ﺔ ﻟﻠ‬
‫ﺘ ﻲﻳﻤﻜﻦ أنﺗﻜﻮن ﻗﺎ‬
‫ﺘﺎﻟﻴ ﺔ واﻟ‬
‫ﺘﻮى اﻟ‬
‫ﺘﺨﺪم اﻟﻌﻤﻠﻴ ﺔ ﻋﺎﻟﻴ ﺔ اﻟﻤ ﺴ‬
‫ﺗﻘﻠﻴﺪي ‪ ،‬ﻧ ﺴ‬
‫ﺑﻨﺎء ‪Linux ELF‬‬‫ﺘﻜﻮن ﻗﺎد ًرا ﻋﲆ‬
‫ﻟ‬
‫ﺘﻲ‬
‫ﺘﺪﻋﺎء أي وﻇﻴﻔ ﺔ ‪SecureROM ،‬واﻟ‬
‫ﺘﺨﺪام ﻟﻐ ﺔ ‪C‬اﻟﻌﺎدﻳ ﺔ ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺑﺎﺳ‬‫ﺑﻌﺪ ذﻟﻚ ‪،‬‬‫ﺘﻮﻗﻊ أنﻳﻜﻮن ﻓﻴﻪ‪.‬‬
‫ﺜﻨﺎﺋ ﻲ ‪SecureROM‬ﻓ ﻲ ﻣﻮﻗﻊ اﻟﺬاﻛﺮة اﻟﺬيﻳ‬
‫ﺘﻢﺗﻌﻴﻴﻦ اﻟﻤﻠﻒ اﻟ‬
‫ﻳ‬
‫ﺑﻨﺎ‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻧﻘﻮم أ ً‬
‫ﻳﻀﺎ‬ ‫ﺒﻴﻌ ﻲ ﻣﻦ ﻛﻮد ‪C‬اﻟﺨﺎص‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺘﺪﻋﺎء وﻇﺎﺋﻔﻬﺎ‬
‫ﺒ ﺔ أﺧﺮى ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘ‬‫ﺜﻞ أي ﻣﻜ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ‪SecureROM‬ﻣ‬
‫ﺑﻤﻌﻨﻰ ﻣﺎ ‪ ،‬ﻧ‬
‫ﺗﻢﺗﺼﺪﻳﺮ رﻣﺰ ﻫﺎ ﻣﻦ ‪IDA.‬‬
‫ﺘﺼﺤﻴﺢ أو إزاﻟ ﺔ أي وﻇﺎﺋﻒ ﻏﻴﺮ ذا ت ﺻﻠ ﺔ‪.‬‬
‫ﺑ‬

‫ﺑﻲ‬
‫ﺒﺎ‬
‫ﺗﺼﻤﻴﻢ ﺿ‬
‫‪4.4‬‬

‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺒﺬور‪.‬ﻳﻘﻮم ‪AFL ++‬‬ ‫ﺜﻠ ﺔ ﻋﲆ اﻟﻤﺪﺧﻼ تﺗ ﺴﻤﻰ أ ً‬
‫ﻳﻀﺎ اﻟ‬ ‫ﺑﻌﺾ اﻷﻣ‬ ‫ً‬
‫ﻫﺪﻓﺎ ‪- Linux ELF -‬و‬ ‫ﺘﺤﻘﻴﻖ ﻫﺬه اﻟﻐﺎﻳ ﺔ ‪ ،‬ﻧﻌﻄ ﻲ ‪AFL ++‬‬
‫ﺘﺨﺪم ‪AFL ++ [8].‬ﻟ‬
‫ﺘﺸﻮﻳ ﺶ ﻧ ﺴ‬
‫ﻟﻠ‬
‫ﺘﺪاد‬
‫ﺘﻤﺮ ‪ ،‬ﻣﻤﺎﻳﻮﻓﺮ ﻟﻪ اﻣ‬
‫ﺑﺸﻜﻞ ﻣ ﺴ‬‫اﻟﻬﺪف‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺪ‬
‫ﺗﺼﻤﻴﻢ ﻣ‬
‫‪4.4‬‬ ‫‪14‬‬

‫ﺒﻞ ﻣﻌﻠﻤ ﺔ ‪bu er‬‬


‫ﺘ ﻲﺗﻘ‬ ‫ً‬
‫ﺒﺎﺷﺮة ‪ ،‬واﻟ‬
‫ﺘﻤﺮ ﻟـ ‪AFL ++‬وﻇﻴﻔ ﺔ ﻓ ﻲ اﻟﻬﺪف ﻣ‬ ‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪،‬ﻳ ﺴ‬
‫ﺘﺪﻋ ﻲ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬ ‫ﻣﻠﻒ اﻹدﺧﺎل ‪ ،‬وإﻧﺸﺎء ﻣﺪﺧﻼ ت ﺟﺪﻳﺪة ﻋﻦ ﻃﺮﻳﻖ اﻟﻄﻔﺮة‪.‬‬
‫ﺑﺖ ‪،‬‬
‫ﺜﺎ‬
‫ﺘﺨﺪم ﻓ ﻲ اﻟﻐﺎﻟ ﺐ اﻟﻮﺿﻊ اﻟ‬
‫ﺘﻮاﻟ ﻲ‪.‬ﺳﻨ ﺴ‬
‫ﺘﻮﻳﺎ ت وﺣﺠﻢ ﻣﻠﻒ اﻹدﺧﺎل ﻋﲆ اﻟ‬
‫ﺘﻮاﻓﻖ ﻛﻞ ﻣﻦ ‪bu er‬واﻟﻄﻮل اﻟﻠﺬﻳﻦﺗﻢﺗﻤﺮﻳﺮ ﻫﻤﺎ ﻣﻦ ‪AFL ++‬ﻣﻊ ﻣﺤ‬
‫واﻟﻄﻮل‪.‬ﻳ‬
‫ﺒﻴﺮة‪.‬‬
‫ﺣﻴ ﺚﻳﺰﻋﻢ أﻧﻪﻳﻮﻓﺮ ﻣﺰاﻳﺎﺳﺮﻋ ﺔ ﻛ‬

‫ﺘﺤﻘﻖ ﻣﻦ ‪IMG4‬وﻣﻌﺎﻟﺠ ﺔ ‪DFU.‬ﻳﻮﺿﺢ اﻟﺸﻜﻞ ‪3.1‬اﻟﻤﻔﺎ ﻫﻴﻢ اﻟﻤﻬﻤ ﺔ ﻣﻦ ‪SecureROM‬أ ً‬


‫ﻳﻀﺎ‬ ‫ﺑﻴﻦ اﻟ‬‫ﺑﻪ ﺟﺪًا‬
‫ﺘﺸﻮﻳ ﺶ ﻣﺸﺎ‬
‫ﺘﻮى ﻟﻌﻤﻠﻴ ﺔ اﻟ‬
‫ﺘﺼﻤﻴﻢ ﻋﺎﻟ ﻲ اﻟﻤ ﺴ‬
‫إن اﻟ‬
‫ﺑﻌﺪ ذﻟﻚ ‪،‬‬‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ اﻟﺸﻜﻞ‪.‬‬‫ﺘﺤﻘﻖ ﻣﻦ ‪IMG4‬وﻣﻌﺎﻟﺠ ﺔ ‪DFU ،‬واﻟﻤﻮﺟﻮدة‬
‫ﺑﺎﻟ‬‫ﺘﻢ اﻟﺮﺟﻮع إﻟﻴﻬﺎ ﻣﻦ اﻵن ﻓﺼﺎﻋﺪًا‪ .‬أوﻻ ً ‪ ،‬ﻧﺤﺪد وﻇﺎﺋﻒ ‪SecureROM‬ذا ت اﻟﺼﻠ ﺔ‬
‫وﺳﻴ‬
‫ﺑﻌﻼﻣ ﺔ *ﻓ ﻲ اﻟﺸﻜﻞ ‪3.1‬‬‫ﺒﺪال اﻷﺳﻬﻢ اﻟﻤﻤﻴﺰة‬
‫ﺘ‬‫ﺒﻞ‪ .‬ﻓ ﻲ ﺟﻮ ﻫﺮ ﻫﺎ ‪ ،‬ﻫﺬاﻳﺸﻜﻞ اﺳ‬
‫ﺘﺸﻮﻳ ﺶ ﻛﻼ اﻟﺠﺰأﻳﻦ ‪ ،‬ﻛﻤﺎ ذﻛﺮﻧﺎ ﻣﻦ ﻗ‬
‫ﺘﻬﺪﻓ ﺔ ﻣﻨﻔﺼﻠ ﺔ ﻟ‬
‫ﺛﻨﺎﺋﻴﺎ ت ﻣ ﺴ‬‫ﺑﺈﻧﺸﺎء‬‫ﻧﻘﻮم‬
‫ﺑ ﺴﻴﻂ‬
‫ﺑﺈﻧﺸﺎء ‪Linux ELF‬‬‫ﺒ ﺔ ‪ ،‬ﻧﻘﻮم‬
‫ﺘ‬‫ﺘﺨﺪام ‪SecureROM‬ﻛﻤﻜ‬
‫ﺑﺎﺳ‬‫ﺘ ﻲﺗﻤﺮ ﻋﲆ ﻃﻮلﺗﻠﻚ اﻷﺳﻬﻢ‪ .‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪،‬‬
‫ﺜﻨﺎﺋﻴ ﺔ اﻟ‬
‫ﺗﻨﺎ اﻟ‬
‫ﺑﻤﺪﺧﻼ تﺗﻮﻟﻴﺪ ‪AFL ++‬وﻣﺪﺧﻼ‬
‫ﺛﻢﻳﻤﺮره إﱃ وﻇﺎﺋﻒ ‪SecureROM‬ذا ت اﻟﺼﻠ ﺔ‪.‬‬ ‫ً‬
‫إدﺧﺎﻻ واﺣﺪًا‬ ‫ﺒﻞ‬
‫ﺑﻌﺾ اﻟﺤﺎﻻ ت اﻟﻤﻬﻤ ﺔ ‪ ،‬وﻳﻘ‬‫ﺘﻬﻴﺌ ﺔ‬
‫ﺑ‬‫ﻳﻘﻮم‬

‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا‪.‬ﻳ‬
‫ﺒ ﺔ إﱃﺗﺸﻮﻳ ﺶ ‪ DFU ،‬ﻫﺬا أﻛ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺒﺎﺷﺮة إﱃﺗﺤﻤﻴﻞ اﻟﺼﻮرة ‪.‬‬
‫ﺴﻴﻄﺎ وﻳﻤﻜﻨﻨﺎﺗﻤﺮﻳﺮ اﻹدﺧﺎل ﻣ‬
‫ً‬ ‫ﺑ‬‫ﻓ ﻲ ﺣﺎﻟ ﺔﺗﺸﻮﻳ ﺶ ‪IMG4 ،‬ﻳﻜﻮن ﻫﺬا أﻣ ﺮًا‬
‫ﺑﻨﺎ ‪ ،‬واﻟﺬيﺗﻢ‬‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬اﻟﺨﺎص‬‫ﺑﻌﺪ ذﻟﻚ‬‫ﺋﻴ ﺴﻴ ﺔ ﻣﻦ ﻣﻜﺪس ‪USB‬ﻟﻤﻌﺮﻓ ﺔ اﻟﻮﻇﺎﺋﻒ اﻟﻤ ﺴﺆوﻟ ﺔ ﻋﻦ ﻣﻌﺎﻟﺠ ﺔ اﻟﺮﺳﺎﺋﻞ‪.‬ﺳﻨﻮﻓﺮ‬
‫إﺟﺮاء ﻫﻨﺪﺳ ﺔ ﻋﻜ ﺴﻴ ﺔﻷﺟﺰاء ر‬
‫ﺘﻢﺗﻤﺮﻳﺮ ﻫﺎ إﱃ وﻇﻴﻔ ﺔ‬
‫ﺘ ﻲﻳ‬
‫ﺘﺎﻟ ﻲ ‪-‬واﻟ‬
‫ﺗﻔﺎﺻﻴﻞ ﻋﻦ ﻫﺬا ﻓ ﻲ اﻟﻔﺼﻞ اﻟ‬
‫ﺘﻢﺗﻘ ﺴﻴﻢ اﻟﻤﺪﺧﻼ ت اﻟﻤﺰﻋﺠ ﺔ إﱃ رﺳﺎﺋﻞ ‪-‬‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳ‬‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺧﺼﻴﺼﺎ ﻟﻠ‬
‫ً‬ ‫ﺗﺼﻤﻴﻤﻪ‬
‫ﺜﻨﺎﺋ ﻲ اﻟﺬيﺗﻢ إﻧﺸﺎؤه ﺣﺮﻳﺺ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘﻬﺎ ‪ ،‬ﻓﺈن اﻟ‬
‫ﺒﻴﻌ‬
‫ﺑﻄ‬‫ﺘﻌﺪدة اﻟﺨﻴﻮط‬
‫ﺒﺾ ‪USB.‬ﻧﻈ ﺮًاﻷن ﻣﻌﺎﻟﺠ ﺔ ‪DFU‬ﻣ‬
‫ﺑﻤﻘ‬‫ﺒﻞﺗﺤﻜﻢ ‪USB‬اﻷﺳﺎﺳ ﻲ‬
‫ﺘﻘ‬‫ﺘ ﻲﺗ ﺴ‬
‫ﻣﻌﺎﻟﺠ ﺔ ‪mes sage‬اﻟ‬
‫ﺘﻤﺮار‪.‬ﻳﻘﺪم اﻟﺸﻜﻞ ‪ً 4.1‬‬
‫ﻋﺮﺿﺎﺗﺨﻄﻴﻄ ًﻴﺎ ﻟﻜﻞ ﻣﻦ ﻫﺬﻳﻦ‬ ‫ﺑﺎﺳ‬
‫ﺘﺪﻋ ﻲ ‪getDFUImage‬‬
‫ﺑﻴﻨﻤﺎ اﻵﺧﺮﻳ ﺴ‬‫ﺒﺮ اﻟﺮﺳﺎﺋﻞ ‪،‬‬
‫ﻋﲆﺗﻜﺮار ﻫﺬا اﻟ ﺴﻠﻮك ﻣﻊ ﺧﻴﻄﻴﻦ‪ .‬أﺣﺪ ﻫﻤﺎﻳﻤﺮ ﻋ‬
‫ﺘﺼﻤﻴﻤﻴﻦ‪.‬‬
‫اﻟ‬

‫ﺜﻴﻞ واﺣﺪ ﻣﻦ ‪fuzzer ،‬‬


‫ﺑﻤﺪﺧﻞ واﺣﺪﺗﺤ ﺖ اﻟﻤﺼﻬﺮ ﻋﻤﻠﻴ ﺔﺗﺸﻐﻴﻞ ﻏﺎﻣﻀ ﺔ‪.‬ﻳ ﺴﻤﻰ ﻣ‬‫ﺑﻨﺎ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻄﻠﻖ ﻋﲆ ﻋﻤﻠﻴ ﺔﺗﺸﻐﻴﻠﻪ‬‫ﺜﻨﺎﺋ ﻲ اﻟﺨﺎص‬
‫ﺑﻤﺠﺮد أن ﻧﺤﺼﻞ ﻋﲆ اﻟ‬
‫ﺘﻠﻔ ﺔ أو ﻣﻌﻠﻮﻣﺎ ت‬
‫ﺑﻄﻔﺮا ت ﻣﺨ‬‫ﺘ ﻲﺗ ﺴﻤﺢ‬
‫ﺘﻠﻔ ﺔ ‪ ،‬واﻟ‬
‫ﺘﻠﻔ ﺔ ﻣﻌﺎﻣﻼ ت ﻣﺨ‬
‫ﺜﻴﻞ ‪fuzzing.‬ﻋﺎدة ﻣﺎﻳﻜﻮن ﻟﺤﺎﻻ ت اﻟﻐﻤﻮض اﻟﻤﺨ‬
‫ﺘﺸﻮﻳ ﺶ ‪ ،‬ﻣ‬
‫ﺘﻤﺮار ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺑﺎﺳ‬‫اﻟﺬيﻳﻨﻔﺬ‬
‫ﺘﻞ ﻧﻮاة وﺣﺪة ﻣﻌﺎﻟﺠ ﺔ ﻣﺮﻛﺰﻳ ﺔ واﺣﺪة‪ .‬اﻟﻤﺠﻤﻮﻋ ﺔ اﻟﻐﺎﻣﻀ ﺔ ﻫ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ‬ ‫ﺜﻴﻞ اﻟﻐﺎﻣﺾ أ ً‬
‫ﻳﻀﺎ ﻣﻊ ﻋﻤﻠﻴ ﺔ واﺣﺪة ﻣﻊ اﻷﻃﻔﺎل وﻳﺤ‬ ‫ﺘﻮاﻓﻖ اﻟﻤ‬
‫ﺘﻨﺎ ‪،‬ﻳ‬
‫ﺘﻐﻄﻴ ﺔ‪ .‬ﻓ ﻲ ﺣﺎﻟ‬
‫اﻟ‬
‫ﺑﻴﻦ‬‫ﺑﻨﺎ ‪ ،‬ﻛﺎﻧ ﺖ اﻟﻔﺮوق اﻟﻮﺣﻴﺪة‬
‫ﺜﻨﺎﺋ ﻲ‪ .‬ﻓ ﻲﺗﺠﺎر‬
‫ﺗﻌﻤﻞ ﺟﻤﻴﻌﻬﺎ ﻋﲆ ﻧﻔ ﺲ اﻟﻬﺪف اﻟ‬
‫ﺘﻤﺎم و‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺒﺎدل ﻣﻠﻔﺎ ت إدﺧﺎل ﻣ‬
‫ﺘ‬‫ﺘ ﻲﺗﻌﻤﻞ ﻣﻌً ﺎ ‪ ،‬أي أﻧﻬﺎﺗ‬
‫اﻟﺤﺎﻻ ت اﻟﻐﺎﻣﻀ ﺔ اﻟ‬
‫ﺘﻮي ﺣﺎﻻ ت‬ ‫ً‬
‫ﻋﺎدة ﻣﺎﺗﺤ‬ ‫ﺘﺨﺪﻣﻮﻧﻪ‪.‬‬
‫ﺑﺪونﺗﻤﻜﻴﻦ ﻓﺤﺺ ﺣﺪود ﻣﻌﻴﻨ ﺔ ‪-‬أو أي وﺿﻊ ﻣﻦ ﻣﺼﻬﺮﻳ ﺴ‬‫ﺜﺎل‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻬﺪﻓﻪ ‪-‬ﻋﲆﺳ‬
‫ﺛﻨﺎﺋ ﻲﺗ ﺴ‬‫اﻟﻤﺠﻤﻮﻋﺎ ت اﻟﻐﺎﻣﻀ ﺔ ﻫ ﻲ أي‬
‫ﺘ ﺴ ًﻘﺎ ﻗﺪر اﻹﻣﻜﺎن‪.‬‬
‫ﺑﻜﻞ ﺷ ﻲء آﺧﺮ ﻣ‬‫ﺘﻔﺎظ‬
‫ﺘﻢ اﻻﺣ‬
‫ﺘﺸﻮﻳ ﺶ ﻋﲆ ﻧﻔ ﺲ اﻟﻤﻌﻠﻤﺎ ت وﻳ‬
‫اﻟ‬

‫‪AFL ++‬‬ ‫ﻣﺪﺧﻞ‬ ‫ﻫﺪف‬ ‫ﻫﻞ اﻟﺰﻏ ﺐ‬ ‫‪SecureROM‬‬ ‫ﺗﺤﻤﻴﻞ اﻟﺼﻮرة‬

‫ﺘﺤﻘﻖ ‪IMG4.‬‬
‫)أ(ﺗﺼﻤﻴﻢ ﻟﻠ‬

‫‪...‬‬
‫اﻟﺰﻏ ﺐ‬
‫ﻫﺪف‬‫ﻫﻞ‬ ‫ﺒﺎل ‪usb‬اﻷﺳﺎﺳﻴ ﺔﺗﺤﻜﻢ ‪usb‬‬
‫ﺘﻘ‬‫اﺳ‬
‫‪AFL ++‬‬ ‫ﻣﺪﺧﻞ‬
‫ﺋﻴ ﺴ ﻲ ‪USB‬‬
‫اﻟﺨﻴﻂ اﻟﺮ‬ ‫‪getDFUImage‬‬
‫‪SecureROM‬‬
‫‪...‬‬

‫) ب(ﺗﺼﻤﻴﻢ ﻟﻤﻨﺎوﻟ ﺔ ‪DFU.‬‬

‫ﺘﺼﻤﻴﻤﻨﺎ اﻟﻐﺎﻣﺾ‪.‬‬
‫اﻟﺸﻜﻞ ‪4.1:‬ﻋﺮضﺗﺨﻄﻴﻄ ﻲ ﻟ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪5‬‬

‫ﺒﻴﻖ‬
‫ﺗﻄ‬

‫ﺘﺸﻮﻳ ﺶ‪ .‬ﻋﲆ‬
‫ﺘﻔﺼﻴﻞ ‪ ،‬ووﺻﻒ أي أدوا ت إﺿﺎﻓﻴ ﺔ وﻣﻨﺎﻗﺸ ﺔ ﻃﺮقﺗﺤ ﺴﻴﻦﺳﺮﻋ ﺔ اﻟ‬
‫ﺑﺎﻟ‬‫ﺘﻘﻞ اﻵن إﱃﺗﻨﻔﻴﺬه‬
‫ﺘﻮى ﻟـ ‪emmutaler ،‬ﻧﻨ‬
‫ﺘﺼﻤﻴﻢ ﻋﺎﻟ ﻲ اﻟﻤ ﺴ‬
‫ﺑﻌﺪﺗﻘﺪﻳﻢ اﻟ‬
‫ﺜﻨﺎﺋﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﺼﺤﻴﺢ اﻟ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ أداة اﻟ‬‫ﺒﺔ ‪،‬‬
‫ﺘ‬‫ﺘﺨﺪاﻣﻨﺎ ‪SecureROM‬ﻛﻤﻜ‬
‫ﺑﻮﺻﻒﺗﻔﺼﻴﻠ ﻲ ﻟﻜﻴﻔﻴ ﺔ اﺳ‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫ﺑﺖ ‪ ،‬ﻣ‬
‫ﺜﺎ‬ ‫وﺟﻪ اﻟﺨﺼﻮص ‪ ،‬ﻧﻘﺪم أوﻻ ً ﻧﻬﺠﻨﺎ ﻟﻠ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ‬
‫ﺗﺤ ﺴﻴﻦ اﻟ ﺴﺮﻋ ﺔ و‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚﺗﻮﻟﻴﺪ اﻟﻤﺪﺧﻼ ت ‪ ،‬وﻣﻌﻠﻤﺎ ت ‪AFL ++ ،‬و‬‫ﺘﻔﺼﻴﻞ ‪،‬‬
‫ﺑﺎﻟ‬‫ﺘﺸﻮﻳ ﺶ‬
‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬ﻧﻨﺎﻗ ﺶ ﻋﻤﻠﻴ ﺔ اﻟ‬‫ﺑﻨﺎ وﻛﻴﻔﻴ ﺔﺗﺼﺪﻳﺮ اﻟﺮﻣﻮز‪.‬‬
‫ﺘﺤﻠﻴﻞ‪.‬‬
‫ﺘﻐﻄﻴ ﺔ ﻟﻠ‬
‫ﺘﻔﺎﺻﻴﻞ ﺣﻮل ﻛﻴﻔﻴ ﺔ ﺟﻤﻊ ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﺸﻮﻳ ﺶ واﻟ‬
‫ﺧﺼﻴﺼﺎ ﻟﻠ‬
‫ً‬ ‫ﺑﻨﺎ اﻟﻤﺼﻤﻢ‬‫ﺒﻴﻖ اﻟﻤﺨﺼﺺ اﻟﺨﺎص‬
‫‪USB‬اﻟﻤﺨﺼﺺ‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻧﻘﺪمﺗﻄ‬

‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ‬
‫‪5.1‬اﻟ‬
‫ﺘﻜﻮﻳﻦ‬
‫ﺘﻢﺗﺨﺰﻳﻦ ﻗﻴﻢ اﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ رﺳﺎﺋﻞ ‪USB‬وأﻳﻦﻳ‬
‫ﺘﻨﻔﻴﺬ‪ .‬وﺷﻤﻞ ذﻟﻚ ﻣﻌﺮﻓ ﺔ ﻛﻴﻔﻴ ﺔ ﻋﻤﻞﺗﻨ ﺴﻴﻘﺎ ت اﻹدﺧﺎل وﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺘﻤﺮ ﺧﻼل ﻣﺮﺣﻠ ﺔ اﻟ‬
‫ﺑ ﺖ ﻣﺴ‬
‫ﺛﺎ‬‫ﺗﻢ إﺟﺮاءﺗﺤﻠﻴﻞ‬
‫ﺑ ﺖ ‪ ،‬إﻻ أﻧﻬﺎ ﻛﺎﻧ ﺖ ﻗﺪﻳﻤ ﺔ أ ً‬
‫ﻳﻀﺎ ﻓ ﻲ‬ ‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺜﻴ ﺮًا ﻓ ﻲ اﻟ‬
‫ﺑ ﺔ ﻣﻦ ‪20161‬ﺳﺎﻋﺪ ت ﻛ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﺼﺪر اﻟﻤ ﺴﺮ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺜﻴﺮ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن اﻟ‬
‫اﻟﻤﻬﻤ ﺔ وﻏﻴﺮ ذﻟﻚ اﻟﻜ‬
‫ﺛﻴﻖ ‪2.‬‬
‫ﺘﻮ‬‫ﺑﺸﺪة إﱃ اﻟ‬‫ﺘﻘﺮ‬
‫ﺗﻔ‬‫ﺋﻴ ﺴﻴ ﺔ و‬
‫اﻷﺟﺰاء اﻟﺮ‬

‫ﺛﻨﺎﺋﻴﺎ ت ‪SecureROM‬ﺣﻘﻴﻘﻴ ﺔ‪.‬‬‫ﺑ ﺖ ﻫ ﻲ اﻟﺤﺼﻮل ﻋﲆ‬


‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺑﺪء اﻟ‬‫ﺒ ﺔ اﻷوﱃ ﻓ ﻲ‬
‫ﻛﺎﻧ ﺖ اﻟﻌﻘ‬
‫ﺘﺎح ﻟﺸﺮﻳﺤ ﺔ ‪ A13.‬ﻫﺬا ﻫﻮ اﻹﺻﺪار‬
‫ﺑ ﺖ ‪ ،‬ﻛﺎن أﺣﺪ ث ‪SecureROM‬اﻟﻤ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺑﺪء اﻟ‬‫ﺑﺠﻤﻊ ﻋﻴﻨ ﺔ ﺿﺨﻤ ﺔ ﻣﻨﻬﻢ ‪[12].‬ﻓ ﻲ وﻗ ﺖ‬‫ﺑﺎﻟﻔﻌﻞ‬‫ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪ ،‬ﻗﺎم ﺷﺨﺺ ﻣﺎ‬
‫ﺘﻮي‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﺸﻤﻞ أﺣﺪ ث ‪SecureROM‬ﻣﻦ ﺷﺮﻳﺤ ﺔ ‪A14 ،‬واﻟ‬
‫ﺑ ﺖ‪ .‬ﻓ ﻲ اﻵوﻧ ﺔ اﻷﺧﻴﺮة ‪،‬ﺗﻢﺗﺤﺪﻳ ﺚ اﻟﻤﺠﻤﻮﻋ ﺔ ﻟ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺘﻤﺪ ﻋﻠﻴﻪ ﻣﻌﻈﻢ اﻟ‬
‫‪SecureROM‬اﻟﺬي اﻋ‬
‫ﺘﻢﺗﻨﺎوﻟﻬﺎ ﻓ ﻲ اﻷﻗ ﺴﺎم ‪6.1.1‬إﱃ ‪6.1.3.‬‬
‫ﺘﻤﺎم‪.‬ﻳ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﺨﻔﻴﻒ اﻹﺿﺎﻓﻴ ﺔ اﻟﻤ‬
‫ﺑﻌﺾ ﻋﻮاﻣﻞ اﻟ‬‫ﻋﲆ‬

‫‪5.1.1‬ﺧﺮﻳﻄ ﺔ اﻟﺬاﻛﺮة‬
‫ﺑﻔﻀﻞ اﻟﻜﻮد‬ ‫ﻛﺎﻧ ﺖ اﻟﺨﻄﻮة اﻷوﱃ اﻟﻤﻬﻤ ﺔ ﻟﻴ ﺲ ﻓﻘﻂ ﻓ ﻲ اﻟﻬﻨﺪﺳ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ ‪SecureROM ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎﺗﺤﻤﻴﻠﻬﺎ ﻓ ﻲ ‪ ELF‬ﻫ ﻲ ﻓﻬﻢﺗﺨﻄﻴﻂ اﻟﺬاﻛﺮة ﻟـ ‪SecureROM.‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻮﺻﻔﻴ ﺔ وﻧﻄﺎﻗﺎ ت ﻋﻨﺎوﻳﻦ اﻟﺬاﻛﺮة اﻟﻤﻬﻤ ﺔ‪.‬ﻳﻤﻜﻦ رؤﻳ ﺔ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻜﺎﻣﻠ ﺔ اﻟﻤﻮﺟﻮدة‬
‫ﺑﻌﺾ اﻟ‬‫اﻟﻤﺼﺪري وﻋﻜ ﺲ ﺣﻠﻘ ﺔ اﻟﻨﻘﻞ اﻷوﻟﻴ ﺔ ‪ ،‬ﺣﺪدﻧﺎ ﺟﺰءًا ﺻﻐﻴ ﺮًا ‪3‬ﻳﺨﺰن‬
‫ﺑ ﺖ ‪،‬ﺗﻤﻜﻨﺎ ﻣﻦ اﻟﺤﺼﻮل ﻋﲆ ﺧﺮﻳﻄ ﺔ ذاﻛﺮة ﻛﺎﻣﻠ ﺔ ﻟـ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺑﻌﺾ اﻟ‬
‫ﺘﺨﺪام ﻫﺬا و‬
‫ﺑﺎﺳ‬
‫ﺒﻴﺎﻧﺎ ت و ‪bss.‬‬
‫ﻓ ﻲ اﻟﻤﻠﺤﻖ ‪A.1 ،‬وﻟﻜﻦ أ ﻫﻢ اﻷﺟﺰاء ﻫ ﻲ ﻣﻮاﻗﻊ ﻗ ﺴﻢ اﻟﻨﺺ واﻟ‬
‫ﺜﺎل ﻟﻬﺎ ﻓ ﻲ اﻟﻤﻠﺤﻖ ‪A.2.‬‬
‫‪SecureROM ،‬وﻳﻤﻜﻦ رؤﻳ ﺔ ﻣ‬

‫ﺒﺎر ﻣﺤﺎﻣ ﻲ ‪Apple.‬‬


‫ﺘ‬‫ﺑﻄﻪ ﻓ ﻲ ورﻗ ﺔ أﻛﺎدﻳﻤﻴ ﺔ ‪-‬ﻻ ﻧﺮﻳﺪ اﺧ‬
‫ﺘﺮﻧ ﺖ ‪-‬وﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻪﻳﺠ ﺐ أنﻳﻜﻮن ﻗﺎﻧﻮﻧ ًﻴﺎ ر‬
‫ﺜﻮر ﻋﲆ اﻹﻧ‬
‫‪1‬ﻓ ﻲ ﻫﺬه اﻷﻳﺎم ‪ ،‬ﻟﻴ ﺲ ﻣﻦ اﻟﺼﻌ ﺐ اﻟﻌ‬

‫ﺒﻌ ﻲ‪.‬‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻟﺨﻄﺄ اﻟﻤﻄ‬
‫ﺘﻨﺪا ت ﻣﻨﺎﺳ ﺐ ﻓﻘﻂ ‪"Optimisim." ،‬‬
‫‪2‬وﺻﻒ ﻣﺠﻠﺪ اﻟﻤ ﺴ‬
‫ﺒﺪء ﻣﻦ ‪0x200‬ﻣﻦ ﻗﺎﻋﺪة ‪SecureROM.‬‬
‫‪3‬اﻟ‬

‫‪15‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺖ‬
‫ﺛﺎ‬‫ﺗﺤﻠﻴﻞ‬
‫‪5.1‬‬ ‫‪16‬‬

‫ﺘﺮض ‪SecureROM‬أن‬
‫ﺜﺎل ‪،‬ﻳﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﻘﻴ ﺔ ‪SecureROM.‬ﻋﲆﺳ‬ ‫ﺛﻨﺎﺋ ﻲ ‪ELF ،‬ﻓﻬ ﻲ ﻣﻔﻴﺪة أ ً‬
‫ﻳﻀﺎ ﻟﻠﻬﻨﺪﺳ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ ﻟ‬ ‫ﺒﻨﺎء‬
‫ﻓ ﻲ ﺣﻴﻦ أن ﺧﺮﻳﻄ ﺔ اﻟﺬاﻛﺮة ﻣﻬﻤ ﺔ ﻟ‬
‫ﺘﻠﻔ ﺔ ﻓ ﻲ اﻷﻣﺎﻛﻦ اﻟﺼﺤﻴﺤ ﺔ‬
‫ﻣﺨﺼﺼﺎ ﻟـ ‪IDA ،‬ﻳﻀﻊ اﻷﻗ ﺴﺎم اﻟﻤﺨ‬
‫ً‬ ‫ً‬
‫ﻣﺤﻤﻼ‬ ‫ﺒﻨﺎ‬
‫ﺘ‬‫ﺘﻢ ﻋﻤﻞ ﻣﺮاﺟﻊ ﻟﻬﺬه اﻟﻌﻨﺎوﻳﻦ‪ .‬ﻛ‬
‫ﺘﺎﻟ ﻲﻳ‬
‫ﺑﺎﻟ‬
‫ﺒﻴﺎﻧﺎ ت ﻗﺪﺗﻢﺗﻌﻴﻴﻨﻪ ﻓ ﻲ ﻋﻨﻮان ﻣﺤﺪد ‪ ،‬و‬
‫ﻗ ﺴﻢ اﻟ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺘﻢ ﺣﻞ اﻟﻤﺮاﺟﻊ‬
‫ﺑﺤﻴ ﺚﻳ‬‫ﻓ ﻲ اﻟﺬاﻛﺮة ‪،‬‬

‫‪5.1.2‬اﻟﻨﺼﻮص اﻟﻤ ﺴﺎﻋﺪة‬


‫ﺘﺤﻠﻴﻞ‬
‫ﺘ ﻲﺗﻌﻤﻞﺗﻠﻘﺎﺋ ًﻴﺎ ﻋﲆ أﺟﺰاء ﻣﻌﻴﻨ ﺔ ‪-‬ﻣﻤﻠ ﺔ ‪-‬ﻣﻦ اﻟ‬
‫ﺒﺮاﻣﺞ اﻟﻨﺼﻴ ﺔ اﻟﻤ ﺴﺎﻋﺪة ‪ ،‬واﻟ‬
‫ﺑﺈﻧﺸﺎء ﻋﺪد ﻗﻠﻴﻞ ﻣﻦ اﻟ‬ ‫ﺑ ﺔُﻣﺤﻤﻞ ﻣﺨﺼﺺ ﻟـ ‪IDA ،‬ﻗﻤﻨﺎ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘﺎ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ﻛ‬
‫ﺘﺤﻘﻖ ﻣﻦ‬
‫ﺘﺎﻟﻴ ﺔ‪ .‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪ ،‬ﺣﻴ ﺚﺗﺸﺎرك ﻓ ﻲ اﻟﻬﻨﺪﺳ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ ﻟﻠ‬
‫ﺘﻤﺎم ﻓ ﻲ اﻷﻗ ﺴﺎم اﻟ‬
‫ﺛﺎرة ﻟﻼ ﻫ‬
‫ﺜﺮ ﻣﺸﺎرﻛ ﺔ وإ‬
‫ﺒﺮاﻣﺞ اﻟﻨﺼﻴ ﺔ اﻟﻤ ﺴﺎﻋﺪة اﻷﻛ‬
‫ﺘﻢ وﺻﻒ اﻟ‬
‫ﺑ ﺖ‪.‬ﻳ‬
‫ﺜﺎ‬
‫اﻟ‬
‫ﺘﻮﻗﻴﻊ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪- ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟ‬
‫ﺘﺎج إﱃ ﻓﻬﻢﺗﻨ ﺴﻴﻖ اﻹدﺧﺎل واﻟ‬
‫ﺑﺎﻟﻤﺼﻬﺮ ‪ ،‬ﻧﺤ‬‫ﺗﻨﺎ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻤﻜﻦ ﻣﻦ إﻧﺸﺎء ﻣﺪﺧﻼ‬
‫ﺘﻮﻗﻴﻊ وﻣﻜﺪس ‪USB.‬ﻟﻜ ﻲ ﻧ‬
‫اﻟ‬
‫ﺘﺸﻮﻳ ﺶ ‪USB.‬‬
‫ﺑ‬‫اﻟﻘ ﺴﻢ ‪ 5.7 -‬ﻫﻨﺎك ﺣﺎﺟ ﺔ إﱃ ﻓﻬﻢ ﻋﻤﻴﻖ ﻟﻤﻜﺪس ‪USB‬ﻟﻠ ﺴﻤﺎح‬

‫ّﻓﺎ ت اﻟﻜﺎﺋﻨﺎ ت‬
‫‪5.1.2.1‬ﺷﺮح ﻣﻌ ﺮ‬

‫ﺘﻮﻗﻴﻊ‬
‫ﺘﺨﺪم ﺷﻬﺎدا ت ‪X.509.‬ﻟﻠﻤ ﺴﺎﻋﺪة ﻓ ﻲ ﻣﻌﺮﻓ ﺔ ﺧﻮارزﻣﻴ ﺔ اﻟ‬
‫ﺘﻮﻗﻴﻊ ‪ ،‬واﻟﺬيﻳ ﺴ‬ ‫ﺑ ًﻘﺎ ‪ ،‬ﻓﺈن ﻣﻌﺮﻓﺎ ت اﻟﻜﺎﺋﻦ ﻣﻨ‬
‫ﺘﺸﺮة ﺟﺪًا ﻓ ﻲ أي ﻧﻮع ﻣﻦﺳﻴﺎقﺗﺤﻠﻴﻞ اﻟ‬ ‫ﻛﻤﺎ أوﺿﺤﻨﺎﺳﺎ‬
‫ﺑ ﺴﻴﻂ ﻟﻠﻐﺎﻳ ﺔ ‪ ،‬وﻟﻜﻨﻪﻳﺠﻌﻞ ﻋﻜ ﺲ ﺧﻮارزﻣﻴﺎ ت ‪X.509‬‬‫ﺘﻌﻠﻴﻖ ﻋﻠﻴﻬﺎ‪ .‬إﻧﻪ‬
‫ﺜﻮر ﻋﻠﻴﻬﺎﺗﻠﻘﺎﺋ ًﻴﺎ واﻟ‬
‫ﺑﺮﻣﺠ ﻲ ﻟﻠﻌ‬‫ﺘﻮﻗﻴﻊ ‪،‬ﺗﻢ إﻧﺸﺎء ﻧﺺ‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟ‬
‫ﺘﺨﺪﻣ ﺔ وﻛﻴﻔﻴ ﺔ ﻋﻤﻞ اﻟ‬
‫اﻟﻤ ﺴ‬
‫ﺜﻴ ﺮًا‪.‬‬
‫أﺳﻬﻞ ﻛ‬

‫ﺘ ﺴﻠ ﺴﻞ ‪0x01 ، 0x01 ، 0x01.‬‬


‫ﺒﺢ ‪ OID 1.2.840.113549.1.1.1‬ﻫﻮ اﻟ‬
‫ﺜﺎل ‪،‬ﻳﺼ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺸﻔﻴﺮ ‪DER‬ﻟﻤﻌﺮف اﻟﻜﺎﺋﻦ‪ .‬ﻋﲆﺳ‬
‫ﺘﻢﺗﺨﺰﻳﻦ ‪OID‬ﻛ‬
‫ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪،‬ﻳ‬
‫‪0x2a ، 0x86 ، 0x48 ، 0x86 ، 0xf7 ، 0x0d ،‬‬
‫ﺒﺎﻳ ﺖ اﻟﺬيﺗﻢ‬
‫ﺘﺤﻘﻖ ﻣﻦ أنﺗ ﺴﻠ ﺴﻞ اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﻨﺼ ﻲ ﻫﺬا ﻟﻠ‬
‫ﺘﺨﺪم اﻟ‬
‫ﺑﻨﻴ ﺔﺗﻐﻠﻴﻒ‪.‬ﻳ ﺴ‬‫ﺑﻮاﺳﻄ ﺔ‬‫ﺒﺎﻳ ﺖ اﻟﺨﺎم ﻟﻤﻌﺮف اﻟﻜﺎﺋﻦ‬
‫ﺘﻢ اﻹﺷﺎرة إﱃﺗ ﺴﻠ ﺴﻞ اﻟ‬
‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬ﺗ‬
‫ﺘﻢ ﻋﺮض اﻟﺨﻮارزﻣﻴ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻓ ﻲ اﻟﻜﻮد ‪5.1.‬‬
‫ﺒﺪو وﻛﺄﻧﻪ واﺣﺪ ﻓﻘﻂ‪.‬ﻳ‬
‫ﺑﺎﻟﻔﻌﻞ ﻣﻌﺮف اﻟﻜﺎﺋﻦ وﻻﻳ‬‫ﺜﻮر ﻋﻠﻴﻪ ﻫﻮ‬
‫اﻟﻌ‬

‫ﻟـ ‪OID‬ﻓ ﻲ ‪OIDS:‬‬

‫‪addr = 0‬‬
‫ﺑﻴﻨﻤﺎ ‪addr ! = BADADDR:‬‬

‫ﺑﺎﻳ ﺖ ﻟـ )‪oid addr = find_oid_bytes (oid ، addr‬‬‫ﺘﻮي ﻋﲆﺗ ﺴﻠ ﺴﻞ‬


‫ﺘﺎﻟ ﻲ ‪addr‬اﻟﺬيﻳﺤ‬
‫ﺘﺎﻟ ﻲ اﻟ‬
‫ﺑﺤ ﺚ ﻋﻦ اﻟﻌﻨﻮان اﻟ‬
‫‪#‬ا‬

‫ﺑﻴﺎﻧﺎ تﺗﺸﻴﺮ إﱃ اﻟﻌﻨﻮان )‪dref = get_data_references (addr‬‬‫ﺑﺤ ﺚ ﻋﻦ أي ﻋﻨﺎﺻﺮ‬


‫‪#‬ا‬

‫‪#‬ﻳﺠ ﺐ أنﻳﻜﻮن ﺣﻘﻞ اﻟﻄﻮل ﻋﻨﺪ )‪dref + 8 len = get_qword (dref + 8‬إذا ﻛﺎن ‪dref ! = BADADDR‬و ‪len == oid_length (oid):‬‬

‫‪#‬ﻋﻠﻖ ‪oid‬اﻟﻤﻮﺟﻮد ﻓ ﻲ ‪addr ،‬أيﺗﻌﻴﻴﻦ اﻻﺳﻢ وﻧﻮع اﻟﻤﻌﻠﻮﻣﺎ ت )‪annotate_oid (oid ، addr‬‬

‫ّﻓﺎ ت اﻟﻜﺎﺋﻨﺎ ت‪.‬‬


‫ﺒ ﺴﻄ ﺔ ﻣﻦ ﺷﺮح ﺟﻤﻴﻊ ﻣﻌ ﺮ‬
‫اﻟﻜﻮد ‪5.1:‬ﻧ ﺴﺨ ﺔ ﻣ‬

‫‪5.1.2.2‬اﻟﻮﺻﻮل إﱃ ﺷﺮح ﻗﺎﻋﺪة واﺟﻬ ﺔ اﻹدارة )‪(MIB‬‬

‫ﺑﻠ ﺔ‬
‫ﺘﺨﺰﻳﻦ اﻟﻤﻌﻠﻤﺎ ت اﻟﻘﺎ‬
‫ﺘﺨﺪﻣﻪ ﻟ‬
‫ﺛﻢ ‪Apple‬ﻋﲆ اﻷرﺟﺢ(ﺗ ﺴ‬‫ﺗﺼﺎﻻ ت‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن ‪)BSD‬وﻣﻦ‬
‫ﺒﻜ ﺔ ا‬
‫ﺑﻴﺎﻧﺎ ت ﻹدارة اﻟﻜﻴﺎﻧﺎ ت ﻓ ﻲ ﺷ‬‫ﻋﺎدة ‪،‬ﻳﺸﻴﺮ ‪MIB‬إﱃ ﻗﺎﻋﺪة‬
‫ﺛﺎﻧﻴ ﺔ‪.‬‬
‫ﺜﺎل ﻋﺪد اﻟﻘﺮاد ﻓ ﻲ ﻣﻴﻜﺮو‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﻂ ‪ ،‬ﻋﲆﺳ‬
‫ﻟﻠﻀ‬

‫ﺜﻞ ﺣﺠﻢ اﻷﺟﻬﺰة أو ﺣﺠﻢ ‪cacheline.‬‬


‫ﺘﻜﻮﻳﻦ ‪ ،‬ﻣ‬
‫ﺑﻴﺎﻧﺎ ت اﻟ‬‫ﺘﺮداد‬
‫ﺘﺨﺪام ‪MIB -‬أو ﻋﲆ اﻷﻗﻞ إﺻﺪار ‪Apple‬ﻣﻦ واﺣﺪ ‪-‬ﻻﺳ‬
‫ﺘﻢ اﺳ‬
‫ﻓ ﻲ ﺟﻤﻴﻊ أﻧﺤﺎء ‪SecureROM ،‬ﻳ‬
‫ﺘﻮي ﻋﻠﻴﻪ‪ .‬ﻟ ﺴﻮء اﻟﺤﻆ ‪،‬ﺗﻢ وﺿﻊﺗﻌﻠﻴﻘﺎ تﺗﻮﺿﻴﺤﻴ ﺔ ﻋﲆ ‪MIBs‬‬
‫ﺒﻂ أو ﻣﺎﻳﺠ ﺐ أنﻳﺤ‬
‫ﺑﺎﻟﻀ‬
‫ﺘﻮﻳﻪ إدﺧﺎل ‪MIB‬‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ﻛﺎن ﻣﻦ اﻟﻀﺮوري ﻣﻌﺮﻓ ﺔ ﻣﺎﻳﺤ‬‫ﻓﻲ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﺎء ﻟﻴﻨﻮﻛ ﺲ ﻗﺰم‬


‫‪5.2‬‬ ‫‪17‬‬

‫ﺘﻬﺎ‬
‫ﺘﺪﻋﺎء داﻟ ﺔ ‪ ،‬وﺳﻴﻄ‬
‫ﺒﺮ اﺳ‬
‫ﺗﻤ ﺖ ﻗﺮاءة ‪MIBs‬ﻋ‬
‫ﺑﻌﻨﻮاﻧﻬﺎ ‪4 ،‬‬‫ﺘ ﺔ ﻣﺸﺎر إﻟﻴﻬﺎ‬
‫ﺑ‬‫ﺛﺎ‬‫ﺑﻴﺎﻧﺎ ت‬‫ﺘ ﻲ ﻛﺎﻧ ﺖ ﻣﺠﺮد ﻋﻨﺎﺻﺮ‬ ‫ﻟﻢﻳﻜﻦﺳﻬ ﻼ ً ﻣ‬
‫ﺜﻞ ﻣﻌﺮﻓﺎ ت اﻟﻜﺎﺋﻦ‪ .‬ﻋﲆ ﻋﻜ ﺲ ﻣﻌﺮﻓﺎ ت اﻟﻜﺎﺋﻦ اﻟ‬
‫ﺘ ﻲﺗﻢ ﺣﻠﻬﺎ‬
‫ﺑﺎﻟﻘﻴﻢ اﻟ‬‫ﺘﺨﺪام ﻟﻠﻮﻇﻴﻔ ﺔ‬
‫ﺛﻢ ﻧﻌﻠﻖ ﻋﲆ أي اﺳ‬‫ﺑ ﺖ واﻟﻘﻴﻤ ﺔ ‪،‬‬
‫ﺜﺎ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ ﻧﻮﻋﻬﺎ واﻟ‬‫ﺘﺤﻤﻴﻞ ﺟﻤﻴﻊ ‪MIBs‬أوﻻ ً ‪،‬‬
‫ﺑﺮﻧﺎﻣﺠًﺎ ﻧﺼ ًﻴﺎ ﻟ‬‫ﺒﻨﺎ‬
‫ﺘ‬‫ﺑ ﺖ‪ .‬ﻟﻘﺪ ﻛ‬
‫ﺛﺎ‬‫ﺒﺎرة ﻋﻦﺗﻌﺪاد‬
‫ﻋ‬
‫ﺘﻴﺠ ﺔ‪.‬‬
‫ﺜﺎل ﻟﻠﻨ‬
‫ﺘ ﺐ اﻟﻤﻌﻠﻮﻣﺎ ت‪ .‬اﻧﻈﺮ اﻟﻜﻮد ‪5.2‬ﻟﻠﺤﺼﻮل ﻋﲆ ﻣ‬
‫واﻛ‬

‫)( ‪int ticks_per_usec‬ﻏﻴﺮ اﻟﻤﻮﻗﻌ ﺔ {‬

‫ﺘﻴﺠ ﺔ ‪int‬ﻏﻴﺮ ﻣﻮﻗﻌ ﺔ ؛ ‪ //‬ﻗﻴﻤ ﺔ ‪int‬ﻏﻴﺮ ﻣﻮﻗﻌ ﺔ ‪[xsp + Ch] [xbp-14h] BYREF‬‬
‫ﻧ‬
‫‪ //‬؛ ‪x0‬‬

‫ﺘﻴﺠ ﺔ ‪= ( int‬ﻏﻴﺮ ﻣﻮﻗﻌ ﺔ( ؛ ‪cached_ticks_per_usec‬إذا‬


‫اﻟﻨ‬
‫) ‪( cached_ticks_per_usec‬‬
‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة ‪ //‬اﻟﻘﻴﻤ ﺔ‪0x16e3600 ، :‬اﻟﻨﻮع‪ :‬؛ )‪(0x900u ، kOIDTypeUInt32 ، & value‬‬
‫ﻧ‬
‫ﺘﻴﺠ ﺔ =اﻟﻘﻴﻤ ﺔ ‪1000000 ، /‬اﻟﻘﻴﻤ ﺔ‬
‫‪Int32 (Nix) mib_get_size‬إذا ﻛﺎﻧ ﺖ ! (ﻗﻴﻤ ﺔ ||)اﻟﻨ‬
‫) )‪٪ 1000000‬‬

‫اﻟﺬﻋﺮ ؛ )‪(& byte_10001EBC0، & byte_10001EBC0‬‬


‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة‬
‫= ‪cached_ticks_per_usec‬اﻟﻘﻴﻤ ﺔ ‪ /‬؛ ‪1000000‬ﻧ‬

‫}‬

‫ﺜﺎل ﻋﲆ ﻣﻜﺎﻟﻤ ﺔ ‪MIB‬ﻣﺸﺮوﺣ ﺔ‪.‬‬


‫اﻟﺮﻣﺰ ‪5.2:‬ﻣ‬

‫ﺑﻨﺎء ‪Linux ELF‬‬


‫‪5.2‬‬
‫ﺛﻨﺎﺋ ﻲ ﻟـ ‪Linux ELF‬إﱃ ﺣﻞ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﺸﻜﻼ ت اﻟﻤﻌﺮوﺿ ﺔ‪.‬‬‫ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪4.3.3 ،‬ﻳﻤﻜﻦ أنﻳﺆدي إﻧﺸﺎء ﻧﻈﺎم‬
‫ﺘﺎر ﻧﻈﺎم‬
‫ﺘﺎﻟ ﻲ ‪AFL ++) 5‬ﻓﻘﻂ ﻋﲆ ‪Linux.‬ﺧﻼف ذﻟﻚ ‪،‬ﻳﻤﻜﻦ ﻟﻠﻤﺮء أنﻳﺨ‬
‫ﺑﺎﻟ‬
‫ﺘﺨﺪم )و‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪- ،‬ﻛﻤﺎ رأﻳﻨﺎ ﻓ ﻲ اﻷﻗ ﺴﺎم اﻟﻼﺣﻘ ﺔ ‪-‬ﻳﻌﻤﻞ ‪QEMU‬ﻓ ﻲ وﺿﻊ اﻟﻤ ﺴ‬
‫ﺘﻬﺪاﻓﻪ‪.‬‬
‫ﺘﻠﻒ ﻻﺳ‬
‫ﺗﺸﻐﻴﻞ ﻣﺨ‬
‫ﺑﻴﻦ ﻛﻮد ‪C‬‬‫ﺘﺨﺪام اﻷدوا ت اﻟﻤﺨﺼﺼ ﺔ ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟﺠﻤﻊ‬
‫ﺑﺎﺳ‬‫ﺑﻌﺾ اﻟﺠﻮاﻧ ﺐ اﻟﻤﻬﻤ ﺔ ﻣﻮﺻﻮﻓ ﺔ ﻫﻨﺎ‪ .‬ﻟﻠﺤﺼﻮل ﻋﲆ ﻧﻈﺮة ﻋﺎﻣ ﺔ ‪،‬‬‫ﺘﻔﺼﻴﻠ ﻲ ﻣﻌﻘﺪ ﻟﻠﻐﺎﻳ ﺔ ‪ ،‬ﻟﻜﻦ‬
‫ﺘﻨﻔﻴﺬ اﻟ‬
‫اﻟ‬
‫ﺘﻤﺎم‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺒﺮ ﻣ‬
‫ﺘ‬‫ﺘ ﻲﺗﻌ‬
‫ﺘﺸﻮﻳ ﺶ‪.‬ﻳﻮﻓﺮ اﻟﺠﺰء ‪C‬ﻧﻮﻋً ﺎ ﻣﻦ اﻟﻐﻼف ﺣﻮل ‪SecureROM ،‬ﻣﻤﺎﻳﺪﻋﻮ اﻟﻮﻇﺎﺋﻒ اﻟ‬
‫ﺜﻨﺎﺋ ﻲ ‪ ،‬ﻹﻧﺸﺎء ‪Linux ELF‬ﻟﻠ‬
‫ﺛﻨﺎﺋ ﻲ ‪Se cureROM‬اﻟ‬
‫اﻟﻌﺎدي و‬
‫ﺑﺨﻼف ذﻟﻚ ‪-.‬‬
‫ﺑﻨﺎ ‪-‬‬‫ﺒﻴﻖ ‪C‬اﻟﻌﺎدي اﻟﺨﺎص‬
‫ﺘﻄ‬‫ﺑ‬‫ﺑﻄﻪ‬
‫ﺘﻄﻠ ﺐ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺠﻬﺪ ﻟﺮ‬
‫ﺒ ﺔ ‪ ،‬اﻷﻣﺮ اﻟﺬيﻳ‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ ‪SecureROM‬ﻛﻤﻜ‬
‫ﺘﻢ اﻟ‬
‫ﺑﻬﺬا اﻟﻤﻌﻨﻰ ‪،‬ﻳ‬‫إﱃ اﻟﺰﻏ ﺐ‪.‬‬

‫‪5.2.1‬إﻧﺸﺎء أﻗ ﺴﺎم ‪ELF‬‬

‫ﺒ ﺔ أﺧﺮى ‪ ،‬ﻫ ﻲ اﻟﻘﺪرة ﻋﲆﺗﻌﻴﻴﻦ أﻗ ﺴﺎم ﻣﻦ ‪SecureROM‬ﻓ ﻲ ‪ELF‬اﻟﻨﻬﺎﺋ ﻲ‪.‬ﺗﺤﻘﻴﻘﺎ ﻟﻬﺬه‬


‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ ‪SecureROM‬ﻋﲆ أﻧﻬﺎ ﻣﺠﺮد ﻣﻜ‬
‫ﻛﺎﻧ ﺖ اﻟﺨﻄﻮة اﻷوﱃ ﻓ ﻲ اﻟﻘﺪرة ﻋﲆ اﻟ‬
‫ﺑﻨﺎء ﺟﻤﻠ ﺔ‬‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬‬‫ﺑﻨﺎء ﺟﻤﻠ ﺔ )‪GNU Assembler (GAS‬اﻟﻌﺎدي ﻹﻧﺸﺎء أﻗ ﺴﺎم ﻓﺮدﻳ ﺔ‪.‬‬‫ﺘﺨﺪام‬
‫ﻣﺠﻤﻊ ‪ rom.S.‬ﻫﻨﺎك ‪،‬ﻳﻤﻜﻦ اﺳ‬
‫ﺘﻢ إﻧﺸﺎء ﻣﻠﻒ ّ‬
‫اﻟﻐﺎﻳ ﺔ ‪،‬ﻳ‬

‫ﺘ ﻲﻻ‬
‫ﺑﻞ ‪،‬ﻳﻤﻜﻦ إﻧﺸﺎء اﻷﻗ ﺴﺎم اﻟ‬
‫ﺜﺎل ﻟﻘ ﺴﻢ اﻟﻨﺺ ﻓ ﻲ اﻟﻜﻮد ‪5.3‬أ‪ .‬ﻓ ﻲ اﻟﻤﻘﺎ‬
‫ﺒﺎﺷﺮة ﻓ ﻲ ﻫﺬه اﻷﻗ ﺴﺎم‪.‬ﻳﻤﻜﻦ رؤﻳ ﺔ ﻣ‬
‫ﺜﻨﺎﺋ ﻲ ﻣ‬
‫ﺑﺮﻧﺎﻣﺞ ‪SecureROM‬اﻟ‬‫ﺧﺎص ‪،‬ﻳﻤﻜﻦﺗﻀﻤﻴﻦ‬
‫ﺘﻮﺟﻴﻪ ‪ ، llif.‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ ‪Code 5.3b.‬‬
‫ﺘﺨﺪام اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﺼﻔﺮ ‪،‬‬‫ﺘﻬﺎ‬
‫ﺘﻢﺗﻬﻴﺌ‬
‫ﺜﻨﺎﺋ ﻲ ‪ ،‬وﻟﻜﻦﻳﺠ ﺐ أنﻳ‬
‫ﺘﻮي ﻋﲆ أي ﺷ ﻲء ﻣﻦ اﻟﻤﻠﻒ اﻟ‬
‫ﺗﺤ‬

‫ﺘﻌﻴﻦ ﻋﲆ اﻟﻤﺮء ﻓﻘﻂﺗﺤﺪﻳﺪ ‪= 0x100000000‬‬


‫ﺜﺎل ﻗ ﺴﻢ اﻟﻨﺺ ﻋﲆ ‪0x100000000 -‬ﻳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫أﺧﻴ ﺮًا ‪ ،‬ﻟﺠﻌﻞ ‪ ld‬ﺿﻊ اﻷﻗ ﺴﺎم ﻓ ﻲ اﻟﻌﻨﺎوﻳﻦ اﻟﺼﺤﻴﺤ ﺔ ‪-‬ﻋﲆﺳ‬
‫ﺘﻌﺎون اﻟﺨﻠﻴﺠ ﻲ‪.‬‬
‫‪-Wl، - section-start = .rom.text‬ﻓ ﻲﺳﻄﺮ أواﻣﺮ ﻣﺠﻠ ﺲ اﻟ‬

‫ﺘﺤﻮﻳﻞ ‪5 ،‬اﻧﻈﺮ اﻟﻘ ﺴﻢ ‪5.4.‬‬


‫ﺑﺮﻧﺎﻣﺞ ﻓﻚ اﻟ‬‫ﺘﻪ ﻣﺮة واﺣﺪةﺗﻠﻘﺎﺋ ًﻴﺎ ﻓ ﻲ إﺧﺮاج‬
‫ﺛﻢﺗﻢ إﻋﺎدةﺗ ﺴﻤﻴ‬‫‪4‬وﻣﻦ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﺎء ﻟﻴﻨﻮﻛ ﺲ ﻗﺰم‬


‫‪5.2‬‬ ‫‪18‬‬

‫*‪/‬‬
‫*‪/‬‬
‫ﺘﻤﻬﻴﺪ‪.‬‬
‫ﺘﺨﺰﻳﻦ ﺻﻮرة اﻟ‬
‫ﺘﺨﺪم ﻟ‬
‫اﻟﻘ ﺴﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺮج ﻣﻦ ﺻﻮرة ‪rom‬اﻵﻣﻨ ﺔ‪.‬‬
‫ﻗ ﺴﻢ اﻟﻨﺺ ‪ ،‬اﻟﻤ ﺴ‬
‫ﺘﺸﻮﻳ ﺶ ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺤﺎﻟ ﻲ‪.‬‬
‫ﺘﺨﺪم ﻓﻘﻂ ﻟﻠ‬
‫ﺗﺴ‬
‫)‪__start_rom_img __start_rom_img: .fill 0x10000 (b‬‬
‫‪"ax" .incbin "... / rom"، 0، 0x25390‬‬
‫ﺘﻠ ﺊ‬
‫ﺜﺎل ﻋﲆ ﻗ ﺴﻢ ﻣﻤ‬
‫‪* / .section .rom.img، "awx" .global‬ﻣ‬
‫‪* / .section .rom.text،‬‬
‫ﺑﺎﻟﺼﻔﺮ‪.‬‬

‫ﺜﺎل ﻋﲆ ﻗ ﺴﻢ اﻟﻨﺺ‪.‬‬
‫)أ( ﻣ‬

‫ﺘﺠﻤﻊ‪.‬‬
‫ﺘﻠﻔﺎن ﻓ ﻲ اﻟ‬
‫اﻟﻜﻮد ‪5.3:‬ﻗ ﺴﻤﺎن ﻣﺨ‬

‫‪1‬‬ ‫ﺗﺤﻮﻳﻞ ﻓﺮع ‪PAC‬إﱃ ﻓﺮع ﻋﺎدي ))"}})‪r.PatchInstruction ("blraaz ") .Patch (r.PatchTmpl ("blr {{(index .Args 0‬‬
‫‪//‬‬
‫‪2‬‬

‫‪3‬‬ ‫ﺗﺼﺤﻴﺢ ))"‪("cmp x2، # 0x40000‬‬


‫ﺘﺨﺪام ‪dca symb.rom__bzero.PatchOffset (0x18).‬‬
‫ﺒﺎر ‪bzero‬ﻋﲆ ﻋﺪم اﺳ‬
‫‪//‬إﺟ‬
‫‪4‬‬ ‫‪(r.PatchASM‬‬
‫‪5‬‬ ‫ﺗﺼﺤﻴﺢ‬
‫ﺑﺮﻣﺰ واﺣﺪ ‪ .rom_synopsys_otg_controller_init.PatchOffset (0).‬صصخم‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬‬ ‫ﺗﺠﺎوز‬
‫‪//‬‬
‫‪6‬‬ ‫)"‪( r.PatchFunctionNoLink ("emmutaler_controller_init‬‬
‫‪7‬‬

‫‪8‬‬ ‫)‬
‫‪9‬‬ ‫ﺜﻨﺎء )"}})‪("msr s3_0_c12_c0_0،"). Patch ( r.PatchFunctionTmpl ("vbar_el1_handler"، "{{(index .Args 1‬‬
‫ﺘ‬‫ﺘﺠﻪ اﻻﺳ‬
‫‪//‬ﻣﻌﺎﻟﺠ ﺔ ﻣ‬
‫‪10‬‬ ‫‪r.PatchInstruction‬‬
‫‪11‬‬

‫‪12‬‬ ‫)‬
‫‪13‬‬ ‫ﺗﺼﺤﻴﺢ ﻓ ﻲ ﺷﻬﺎدة ﺟﺬر ﻣﺨﺼﺼ ﺔ ))‪_ r.RawPatch (symb.rom_root_ca.Start ، len (certData)، fmt.Sprintf (`.incbin "٪ s "`، certPath‬‬
‫‪//‬‬
‫‪14‬‬ ‫‪certPath : = filepath.Join (filepath.Dir (r.inputPath)، ".."، "certs"، "root_ca.der") certData،‬‬
‫‪15‬‬ ‫)‪: = os.ReadFile (certPath‬‬
‫‪16‬‬

‫ﺘﻠﻔ ﺔ‪.‬‬
‫ﺘﻤﺎﻻ ت اﻟﻤﺨ‬
‫ﺘﺮﻗﻴﻊ ‪ ،‬ﻋﺮض اﻻﺣ‬
‫ﺜﺎل ﻋﲆ اﻟ‬
‫اﻟﻜﻮد ‪5.4:‬ﻣ‬

‫ﺜﻨﺎﺋ ﻲ‬
‫ﺗﺮﻗﻴﻊ اﻟ‬
‫‪5.2.2‬‬

‫ﺑـ ‪nop‬إﱃ‬‫ﺒﺪالﺗﻌﻠﻴﻤﺎ ت ﻣﻌﻴﻨ ﺔ‬


‫ﺘ‬‫ﺘﻠﻔ ﺔ ‪ ،‬ﻣﻦ ﻣﺠﺮد اﺳ‬
‫ﺑﻌﺪة ﻃﺮق ﻣﺨ‬‫ﺜﻨﺎﺋ ﻲ‬
‫ﺘﺠﻨﺎ إﱃﺗﺼﺤﻴﺢ اﻟﻨﻈﺎم اﻟ‬
‫ﺜﻨﺎﺋ ﻲ‪ .‬ﻟﻘﺪ اﺣ‬
‫ﺘﺮﻗﻴﻊ اﻟ‬
‫ﺒﻨﺎء ﻫﻮ آﻟﻴ ﺔ اﻟ‬
‫أﺣﺪ اﻟﺠﻮاﻧ ﺐ اﻟﻤﻬﻤ ﺔﻷدوا ت اﻟ‬
‫ﺜﻨﺎﺋﻴ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ‪.‬‬
‫ﺘﺮﻗﻴﻊ اﻟ‬
‫ﺑﻬﺎ أداة اﻟ‬‫ﺘ ﻲﺗ ﺴﻤﺢ‬
‫ﺘﻠﻔ ﺔ اﻟ‬
‫ﺘﻤﺎﻻ ت اﻟﻤﺨ‬
‫ﺗﺤﻮﻳﻞ أيﺗﻌﻠﻴﻤﺎ تﺗﻔﺮﻳﻊ ‪PAC‬إﱃ ﻓﺮوع ﻋﺎدﻳ ﺔ‪.‬ﻳﻌﺮض اﻟﻜﻮد ‪5.4‬اﻻﺣ‬

‫ﺜﻨﺎﺋﻴ ﺔ ‪6.‬ﻣﻦ ﻧﺎﺣﻴ ﺔ أﺧﺮى ‪ ،‬ﻓﺈن "أﺟﻬﺰة‬


‫ﺘﺼﺤﻴﺤﺎ ت اﻟ‬
‫ﺒﻴﻖ اﻟ‬
‫ﺘﺼﺤﻴﺢ" ﻫ ﻲ اﻟﻤ ﺴﺆوﻟ ﺔ ﻋﻦﺗﺤﺪﻳﺪ ﻣﻜﺎنﺗﻄ‬
‫ﻓ ﻲ ﺟﻮ ﻫﺮ ﻫﺎ ‪ ،‬ﻫﻨﺎك ﻧﻮﻋﺎن ﻣﻦ اﻟﻤﻔﺎ ﻫﻴﻢ اﻟﻬﺎﻣ ﺔ‪" .‬ﻣﻮاﻗﻊ اﻟ‬
‫ﺘﻢ إﻧﺸﺎؤ ﻫﺎ ﻋﻦ ﻃﺮﻳﻖ‬
‫ﺘﺼﺤﻴﺢ‪ .‬ﻧﻈ ﺮًاﻷن أﻗ ﺴﺎم ‪ELF‬ذا ت اﻟﺼﻠ ﺔﻳ‬
‫ﺘﻮﻳﺎ ت اﻟ‬
‫ﺘﺮﻗﻴﻊ اﻟﻤﺤﺪدة ‪ ،‬أي أﻧﻬﺎﺗﺼﻒ ﻣﺤ‬
‫ﺘﺠﻤﻴﻊ ﻓ ﻲ ﻣﻮاﻗﻊ اﻟ‬
‫ﺘﺼﺤﻴﺢ" ﻫ ﻲ اﻟﻤ ﺴﺆوﻟ ﺔ ﻋﻦ إرﺳﺎل اﻟ‬
‫اﻟ‬
‫ﺘﻜﻮن ﻗﺎدرة‬
‫ﺘﺼﺤﻴﺤﺎ ت ﻟ‬
‫ﺑﻴﻦﺗﻮﺟﻴﻬﻴﻦ ‪ incbin.‬ﻫﺬا ﻟﻪ ﻣﻴﺰة اﻟ‬‫ﺘﻌﻠﻴﻤﺎ ت ذا ت اﻟﺼﻠ ﺔ ‪،‬‬
‫ﺒ ﺴﺎﻃ ﺔ ﻋﻦ ﻃﺮﻳﻖ إﺻﺪار اﻟ‬
‫ﺑ‬‫ﺜﻨﺎﺋ ﻲ‬
‫ﺘﺼﺤﻴﺢ اﻟ‬
‫ﺘﻢﺗﺤﻘﻴﻖ اﻟ‬
‫إﺻﺪار ﻣﻠﻒﺗﺠﻤﻴﻊ ﻋﺎدي ‪،‬ﻳ‬
‫ﺘﺨﺪام أيﺗﻮﺟﻴﻪ اﻟﻤﺠﻤﻊ‪.‬‬
‫ﻋﲆ اﺳ‬

‫ﺜﺎﻻ ً ﻋﲆ ﻛﻴﻔﻴ ﺔ إﺻﺪارﺗﻌﻠﻴﻤ ﺔ ﻣﺼﺤﺤ ﺔ واﺣﺪة‪.‬‬


‫ُﻈﻬﺮ اﻟﺮﻣﺰ ‪5.5‬ﻣ‬
‫ﻳ‬

‫ﺜﺎل ﻋﻨﺪﺗﺼﺤﻴﺢﺗﻌﻠﻴﻤﺎ ت ﻣﻌﻴﻨ ﺔ‪.‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻌﺪدة ‪ ،‬ﻋﲆﺳ‬
‫‪6‬ﻳﻤﻜﻦ أنﻳﻜﻮن ﻫﺬا ﻓ ﻲ ﻣﻮاﻗﻊ ﻣ‬
‫ﺘﻮاﺟﺪ اﻷﺟﺰاء‬
‫ﺑ‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪ ،‬ﻣﻊ اﻟ ﺴﻤﺎح‬‫ﺑﺎﻟﻜﺎﻣﻞ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ﻟﻀﻤﺎنﺗﻀﻤﻴﻦ ‪SecureROM‬‬
‫‪7‬ﻳﻮﺟﺪ ﻧﻈﺎم أﻛ‬
‫ﺘﻔﺼﻴﻞ ﻫﻨﺎ‪.‬‬
‫ﺑﺎﻟ‬‫ﺘﻢ وﺻﻒ ﻫﺬا‬
‫ﻣﺮﻣﻢ‪ .‬ﻟﻦﻳ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﺎء ﻟﻴﻨﻮﻛ ﺲ ﻗﺰم‬


‫‪5.2‬‬ ‫‪19‬‬

‫‪rom_platform_irq: .incbin "... / rom"، 11716، 92 blr X8‬‬


‫‪rom_platform_irq .type rom_platform_irq، @ function‬‬
‫‪.global‬‬

‫‪.incbin "... / rom"، 11812، 116‬‬

‫ﺜﺎل ﻋﲆﺗﺮﻗﻴﻊﺗﻌﻠﻴﻤ ﺔ واﺣﺪة‪.‬‬


‫اﻟﻜﻮد ‪5.5:‬ﻣ‬

‫ﺘﻌﻠﻴﻤﺎ ت ﻣﻊ‬
‫ﺑﻬ ﺔ أو ﻧﻔ ﺲ اﻟ‬
‫ﺘﺸﺎ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻤ‬
‫ﺘﺎج اﻟ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ‪،‬ﺗﺤ‬
‫ﺘﺮﻣﻴﻢ ﻓ ﻲ أﻧﻪ ﻓ ﻲ ﻛ‬
‫ﺜﻮر ﻋﲆ اﻟﻤﻮاﻗﻊ اﻟﺼﺤﻴﺤ ﺔ ﻟﻠ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻓ ﻲ اﻟﻌ‬
‫ﺑﺎ ت اﻟﺮ‬
‫ﺜﻞ إﺣﺪى اﻟﺼﻌﻮ‬
‫ﺘﻤ‬‫ﺗ‬
‫ﺘﻠﻔ ﺔ‬
‫ﺑﻪ ﻣﻦﺗﻌﻠﻴﻤﺎ ت ‪blraaz‬ﻣﻊ ﻣﻌﺎﻣﻼ ت ﻣﺨ‬‫ﺑﺄس‬‫ﺑﺪ ﻣﻦﺗﺼﺤﻴﺢ ﻋﺪد ﻻ‬
‫ﺜﻠ ﺔ ‪ ،‬ﻛﺎن ﻻ‬
‫ﺑﻬ ﺔ ﺟﺪًا‪ .‬ﻓ ﻲ أﺣﺪ اﻷﻣ‬
‫ﺒﻂ أو إﱃ رﻗﻌ ﺔ ﻣﺸﺎ‬
‫ﺑﺎﻟﻀ‬‫ﺘﺼﺤﻴﺢ‬
‫ﺘﻠﻔ ﺔ إﱃ ﻧﻔ ﺲ اﻟ‬
‫ﻣﻌﺎﻣﻼ ت ﻣﺨ‬
‫ﺘﻢ‬
‫ﺑﻘ ﺔ ‪regex‬ﻣﻊ ﻛﻞﺗﻌﻠﻴﻤﺎ ت داﺧﻞ ‪SecureROM‬وﻳ‬
‫ﺘﻢ ﻣﻄﺎ‬
‫ﺗ‬‫ﺒﻴﺮ ﻋﺎدي ‪(regex).‬‬
‫ﺘﻌ‬‫ﺘﺼﺤﻴﺢ ﻛ‬
‫ﺘﻐﻠ ﺐ ﻋﲆ ﻫﺬا ‪،‬ﻳﻤﻜﻦﺗﺤﺪﻳﺪ ﻣﻮﻗﻊ اﻟ‬
‫ﺗﻬﺎ ﻏﻴﺮ ‪PAC‬اﻟﻤﻜﺎﻓﺌ ﺔ ‪blr. ،‬ﻟﻠ‬
‫ﻣﻊ ﻧﻈﻴﺮ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ‬‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ اﻟﻤﻌﺎﻣﻼ ت‪.‬‬‫ﺑ ﺴﻬﻮﻟ ﺔ ‪،‬‬
‫ﺘﻴﺢ ذﻟﻚﺗﺼﺤﻴﺢ ﺟﻤﻴﻊﺗﻌﻠﻴﻤﺎ ت ‪blraaz‬‬
‫ﺑﻘ ﺔ‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟ ﺴﻄﺮ ‪2‬ﻣﻦ اﻟﻜﻮد ‪5.4 ،‬ﻳ‬
‫ﺗﺼﺤﻴﺢ أيﺗﻌﻠﻴﻤﺎ ت ﻣﻄﺎ‬
‫ﺘﺼﺤﻴﺢ‬
‫ﺑﺎدﺋ ﺔ ‪ rom.‬ﻫﺬاﻳﺠﻌﻞ أداة اﻟ‬‫ﺘﺎﺣ ﺔ ﻓ ﻲ ‪patcher‬ﻣﻦ ﺧﻼل‬
‫ﺘﻢﺗﺼﺪﻳﺮ ﻣﻮاﻗﻊ اﻟﺮﻣﻮز ﻣﻦ ‪IDA‬وﻣ‬
‫ﺘﺼﺤﻴﺢ ﻋﲆ ﻫﻴﺌ ﺔ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ رﻣﺰ‪.‬ﻳ‬
‫ذﻟﻚ ‪،‬ﻳﻤﻜﻦﺗﺤﺪﻳﺪ ﻣﻮاﻗﻊ اﻟ‬
‫ﺘﻐﻴﺮ ‪-.‬‬
‫ﺒﺎ ﻣﺎﺗ‬
‫ﺘ ﻲ ﻏﺎﻟ ً‬
‫ﺘﻠﻔ ﺔ ‪ ،‬ﺣﻴ ﺚ ﻻﺗﻮﺟﺪ ﺣﺎﺟ ﺔ إﱃ ﻋﻨﺎوﻳﻦ ﻣﺸﻔﺮة ‪-‬واﻟ‬
‫ﺜﺮ ﻗﻮة ﻟﻠﻌﻤﻞ ﻣﻊ إﺻﺪارا ت ‪SecureROM‬اﻟﻤﺨ‬
‫أﻛ‬

‫ﺑﻤﻌﺎﻣﻼ ت‬‫ﺘﻔﺎظ‬
‫ﺑﺪ ﻣﻦ اﻻﺣ‬
‫ﺑﻖ ‪ ،‬ﻛﺎن ﻻ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺑﺎﻟﻌﻮدة إﱃ اﻟﻤ‬
‫ﺒﻴﻘﻪ ‪8.‬‬
‫ﺘﻢﺗﻄ‬
‫ﺘﺼﺤﻴﺢ ﻋﲆ اﻟﻤﻮﻗﻊ اﻟﻤﺤﺪد ﺣﻴ ﺚﻳ‬
‫ﺘﻮﻳﺎ ت اﻟ‬
‫ﺘﻤﺪ ﻣﺤ‬
‫ﺛﻠ ﺔ ﻣﻊ اﻟﺮﻗﻊ‪ .‬ﻗﺪﺗﻌ‬
‫ﺑ ﺔ ﻣﻤﺎ‬
‫ﺗﻨﺸﺄ ﺻﻌﻮ‬
‫ﺒﺪﻟ ﺔ‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟ ﺴﻄﺮ ‪2‬‬
‫ﺘ‬‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻤ ﺴ‬
‫ﺑﺎﻟﻮﺻﻮل إﱃ أي ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل اﻟ‬‫ﺑﺄنﺗﻜﻮن ﺣﺠﺠﻬﺎ ﻧﻤﻮذﺟﻴ ﺔ ‪ ،‬ﻣﻤﺎﻳ ﺴﻤﺢ‬‫ﺘﺮﻗﻴﻊ‬
‫ﺑﻌﺾ أدوا ت اﻟ‬‫‪blraaz‬ﻛﻤﺎ ﻫ ﻲ‪.‬ﺗ ﺴﻤﺢ‬
‫ﺒ ﺔ‪.‬‬
‫ﺑﻪ ﺷﺎﺋ‬
‫ﺑﺸﻜﻞ ﻻﺗﺸﻮ‬‫ﺘﺮﻗﻴﻊ ‪blraaz‬ﻟﻠﻌﻤﻞ‬
‫ﺑ‬‫ﻣﻦ اﻟﻜﻮد ‪5.4 ،‬ﻓﺈن ﻫﺬاﻳ ﺴﻤﺢ‬

‫ﺒﺎ ﻣﺎ ﻻﺗﻜﻮن ﻫﻨﺎك ﺣﺎﺟ ﺔ إﱃ ذﻟﻚ ‪،‬ﻷن‬


‫ﺘﻌﺪدة‪ .‬ﻋﻨﺪﺗﺼﺤﻴﺢ وﻇﺎﺋﻒ ﻣﺤﺪدة ‪ ،‬ﻏﺎﻟ ً‬
‫ﺘﻌﻠﻴﻤﺎ ت ﻣ‬
‫ﺑ‬‫ﺒﺪالﺗﻌﻠﻴﻤﺎ ت واﺣﺪة‬
‫ﺘ‬‫ﺑﺎﻟﺮﻗﺎﺋﻖ ﻓﻘﻂ ﻓ ﻲ اﺳ‬‫ﺑ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺜﻞ اﻟﺼﻌﻮ‬
‫ﺘﻤ‬‫ﺗ‬
‫ﺋﻤﺎ أنﺗﻜﻮن اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﺮض دا ً‬
‫ُﻔ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ‪،‬ﻳ‬‫ﺘﺼﺤﻴﺢﻳﻌﻤﻞ‬
‫ﺘﺄﻛﺪ ﻣﻦ أن اﻟ‬
‫ﺒﺪال‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻟﻠ‬
‫ﺘ‬‫ﺘﻮﻓﻴﺮ ﻣ ﺴﺎﺣ ﺔ ﻹرﺷﺎدا ت اﻻﺳ‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟ‬‫ﺘﻜﻮن ﻃﻮﻳﻠ ﺔ‬
‫اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻮﻇﺎﺋﻒﺳ‬
‫ﺑﻌﺪ‬
‫ﺑﻔﺮع ﻣﻠﺼﻖ ﺟﺪﻳﺪ ‪9.‬‬‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻤﺮادﺗﺼﺤﻴﺤﻬﺎ‬
‫ﺒﺪال اﻟ‬
‫ﺘ‬ ‫ﺘﺎﻟ ﻲ‪ .‬أوﻻ ً ‪،‬ﻳ‬
‫ﺘﻢ اﺳ‬ ‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن‪ .‬اﻟﺤﻞ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺛﻢﺗﻈﻬﺮ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔ ﻓ ﻲ ﻛ‬‫ﻣﺠﺮدﺗﻌﻠﻴﻤ ﺔ واﺣﺪة ‪ ،‬وﻣﻦ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟﺠﺪﻳﺪة ﻓ ﻲ ﻧﻬﺎﻳ ﺔ ﻗ ﺴﻢ‬
‫ﺘﻢ وﺿﻊ اﻟ‬
‫ﺑﺮﻣﺰ إﻋﺪاد إﻃﺎر اﻟﻤﻜﺪس اﻟﻘﻴﺎﺳ ﻲ ﻓ ﻲ ‪ARM10 ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻜﻮد ‪5.6.‬أﺧﻴ ﺮًا ‪،‬ﻳ‬‫ﺗﻐﻠﻴﻒ" اﻹرﺷﺎدا ت اﻟﺠﺪﻳﺪة‬
‫ﺘﻢ "‬
‫ذﻟﻚ ‪،‬ﻳ‬
‫اﻟﻨﺺ ‪-‬ﻣﻌﻨﻮﻧ ﺔ وﻓ ًﻘﺎ ﻟﺬﻟﻚ ‪ ،‬ﻟﻠ‬
‫ﺘﺄﻛﺪ ﻣﻦ أﻧﻪ ﻻﻳﺰال ﻣﻦ اﻟﻤﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻴﻬﺎ ﻣﻦ ﺧﻼلﺗﻌﻠﻴﻤﺎ ت واﺣﺪة ‪11.‬‬

‫ﺗﻈﻬﺮ‬
‫‪stp x29، x30، [sp، # -0x10]! mov x29، sp //‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟﺠﺪﻳﺪة ﻫﻨﺎ ‪ldp x29، x30، [sp]، # 0x10‬‬
‫اﻟ‬

‫ﻳﻤﻴﻦ‬

‫ﺘﻐﻠﻴﻒ ﻹﻧﺸﺎء إﻃﺎر ﻣﻜﺪس‪.‬‬


‫ﺗﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟﻜﻮد ‪5.6:‬‬

‫ﺜﻞ‬
‫ﺒﺪو ‪ ،‬ﻣ‬
‫ﺑﻘ ﺔ ﻗﺪﺗﺠﻌﻞ اﻷﻣﺮﻳ‬
‫ﺜﺎل ‪،‬ﺗﻨﻔﻴﺬ ‪8‬ﻓ ﻲ ﺣﻴﻦ أن اﻟﻔﻘﺮة اﻟ ﺴﺎ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺠﻤﻴﻊ ﻓﻘﻂ‪ .‬ﻋﲆﺳ‬
‫ﺘﺨﺪامﺗﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﺎﺳ‬‫ﺘﺮﻗﻴﻊ‬
‫ﺜﻞ ﻓ ﻲ اﻟ‬
‫ﺘﻤ‬‫ﺑ ﺔ أﺧﺮىﺗ‬
‫ﻫﻨﺎك ﺻﻌﻮ‬

‫ﺘﻮى ﻋﻨﻮان اﻟﻨﺺ‪.‬‬


‫ﺑﻞ ﻋﲆ ﻣ ﺴ‬‫ﺘﺠﻤﻴﻊ ‪،‬‬
‫ﺘﻮى اﻟ‬
‫ﺘﺮﻗﻴﻊ ﻋﲆ ﻣ ﺴ‬
‫ﺑﺤ ﺚ ‪-‬ﻓﺈﻧﻪ ﻟﻦﻳﻨﺠﺢ‪ .‬ﻻﻳﺤﺪ ث اﻟ‬‫ﺑﺪﻻ ً ﻣﻦ ﻣﺠﺮد‬
‫ﺒﺪال ‪regex -‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﻫﺬاﻳﻤﻜﻦ إﺻﻼﺣﻪ‬

‫ﺘﻢ إرﺳﺎﻟﻪ ﻛﻤﺨﺰن أوﺗﻮﺟﻴﻪﺗﺠﻤﻴﻊ ﻣﺼﺤﺢ‪.‬‬


‫ﺘﻐﻴﺮ ﻣﺎ إذا ﻛﺎنﻳ‬
‫ﺳﻮاءﺗﻢﺗﺼﺤﻴﺢ ﻋﻨﻮان ﻣﻌﻴﻦ أم ﻻ ‪،‬ﻳ‬

‫ﺒﻴﻌ ًﻴﺎ‬
‫ﺘﻤﺎدًا ﻋﲆ ﻣﺎ إذا ﻛﺎن اﻟﻤﺮء ﻗﺪﻳﺮﻏ ﺐ ﻓ ﻲ اﻟﻌﻮدة إﱃﺗﺪﻓﻖ اﻟﻜﻮد اﻷﺻﻠ ﻲ أم ﻻ ‪،‬ﻳﻜﻮن اﻟﻔﺮع ﻃ‬
‫‪9‬اﻋ‬
‫ﺗﺼﺎل ‪(bl).‬‬
‫اﻟﻘﻔﺰ ) ب( أوﺗﻌﻠﻴﻤﺎ ت اﻻ‬
‫ﺘﺼﺤﻴﺤﺎ ت ﻟﻴ ﺴ ﺖ ﻓ ﻲ ﻣ ﺴﺎرا تﺳﺎﺧﻨ ﺔ‪.‬‬
‫ﺘﻔﻜﻴﺮ ﻓﻴﻪ وﺟﻤﻴﻊ ﻫﺬه اﻟ‬
‫ﺜﻴﺮ اﻟ‬
‫ﺑﻜ‬‫ﺑﻌﺾ اﻟﺸ ﻲء ‪ ،‬إﻻ أﻧﻪ ﻣﻦ اﻷﺳﻬﻞ‬‫‪10‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻫﺬا ﻗﺪﻳﻜﻮن ﻏﻴﺮ ﻻﺋﻖ‬

‫ﺜﺮ‪.‬‬
‫ﺑ ﺖ ﻋﲆ اﻷﻛ‬
‫ﺘﻮيﺗﻌﻠﻴﻤﺎ ت اﻟﻔﺮع ﻋﲆ ﻗﻴﻤ ﺔ ﻓﻮرﻳ ﺔ ‪24‬‬
‫ﺑﺎﻳ ﺖ ‪،‬ﻳﻤﻜﻦ أنﺗﺤ‬
‫ﺑﺤﺠﻢ ‪4‬‬‫ﺘﺔ‬
‫ﺑ‬‫ﺛﺎ‬
‫‪11‬ﻧﻈ ﺮًاﻷن اﻹرﺷﺎدا ت اﻟﻤﻮﺟﻮدة ﻋﲆ ‪ARM‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﺎء ﻟﻴﻨﻮﻛ ﺲ ﻗﺰم‬


‫‪5.2‬‬ ‫‪20‬‬

‫ﺘﺠﻤﻴﻊ‪.‬‬
‫ﺑﻤﺠﺮد اﻟ‬ ‫‪FETA -‬اﻟﻤﺨﺼﺺ اﻟﻤﺨﺼﺺ ﻟﺪﻳﻨﺎ ‪ ،‬اﻧﻈﺮ اﻟﻘ ﺴﻢ ‪5.8 -‬ﺳﻴﻜﻮن ﻣﻤ ﻼ ً ﻟﻠﻐﺎﻳ ﺔ ﻟ‬
‫ﺘﺤﻘﻴﻘﻪ‬
‫ﺘﺮﻗﻴﻊ ﻋﻨﻮان ﻣﻊ وﻇﻴﻔ ﺔ ﺧﺎرﺟﻴ ﺔ‬
‫ﺑﻮﻇﻴﻔ ﺔ ﻣﺨﺼﺼ ﺔ‪.‬ﺗﺤﻘﻴﻘﺎ ﻟﻬﺬه اﻟﻐﺎﻳ ﺔ ‪ ،‬ﻫﻨﺎك ﻣﺼﺤﺤﺎ ت ﻟ‬‫ﺑﺎﻟﻜﺎﻣﻞ‬‫ﺒﺪالﺗﻨﻔﻴﺬ اﻟﻮﻇﺎﺋﻒ‬
‫ﺘ‬‫ﺒﺎ ﻣﺎﻳﻜﻮن ﻣﻦ اﻟﻤﻨﻄﻘ ﻲ اﺳ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻏﺎﻟ ً‬
‫ﺘﺪﻋﺎء‬
‫ﺘﺄﻛﺪ ﻣﻦ إﻣﻜﺎﻧﻴ ﺔ اﺳ‬
‫ﺘﻌﺪدة‪ .‬ﻣﺮة أﺧﺮى ‪ ،‬ﻟﻠ‬
‫ﺘﻌﻠﻴﻤﺎ ت ﻣ‬
‫ﺑﻪ ﻟ‬
‫ﺑﺸﻜﻞ ﻣﺸﺎ‬‫ﺘﺮﻗﻴﻊ‬
‫ﺜﻮر ﻋﻠﻴﻬﺎ‪.‬ﻳﻌﻤﻞ اﻟ‬
‫ﺑﻂ ﻣﻦ اﻟﻌ‬
‫ﺘﻤﻜﻦ اﻟﺮا‬
‫ﺘﻰﻳ‬
‫ﺗﺼﺪﻳﺮ ﻫﺎ ‪ ،‬ﺣ‬
‫ﻛﺎﻣﻠ ﺔ‪.‬ﻳﺠ ﺐﺗﺤﺪﻳﺪ اﻟﻮﻇﻴﻔ ﺔ ﻓ ﻲ ‪C‬و‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻤﻮﺿﻮﻋ ﺔ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ ﻗ ﺴﻢ‬
‫ﺑﻌﺾ ﺧﺪاع اﻟﻌﻨﻮان ‪12 ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻜﻮد ‪ 5.7.‬ﻫﺬه ﻫ ﻲ اﻟ‬‫ﺘﺨﺪام‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ اﺳ‬
‫ﺑﻌﻴﺪة" ‪،‬ﻳ‬
‫ﺘﻰ ﻟﻮ ﻛﺎﻧ ﺖ "‬
‫ﺑﺎﻟﻔﻌﻞ ﺣ‬‫اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﻰﺗﺸﻜﻴﻞ‬
‫ﺘﻠﻘﺎ ﻫﺎ اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟ ﺴﻄﺮ ‪11‬ﻣﻦ اﻟﻜﻮد ‪5.4 ،‬ﻳﻤﻜﻦ ﺣ‬
‫ﺘ ﻲﺗ‬ ‫ﺜﺎل أ ً‬
‫ﻳﻀﺎ أﻧﻪﻳﻤﻜﻨﻨﺎﺗﻐﻴﻴﺮ اﻟﻤﻌﻠﻤﺎ ت اﻟ‬ ‫ﺒﻞ‪.‬ﻳﻮﺿﺢ اﻟﻤ‬
‫اﻟﻨﺺ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻣﻦ ﻗ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻌﺎدﻳ ﺔ‪.‬‬
‫ﺛﻠ ﺔ ﻟﻠ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﻤﺎ‬ ‫ﺘﺪﻋﺎؤ ﻫﺎ ﺣﺪﻳ ً‬
‫ﺜﺎ‬ ‫ﺘ ﻲﺗﻢ اﺳ‬
‫ﺣﺠﺞ اﻟﻮﻇﻴﻔ ﺔ اﻟ‬

‫ﺘﺼﺤﻴﺢ ‪add x9، x9،: lo12: func blr x9‬‬


‫‪//‬وﻇﻴﻔ ﺔ اﻟ‬
‫‪("func"، "0x42") mov x0، 0x42 adrp x9، func‬‬

‫ﺘﺪﻋﺎء داﻟ ﺔ‪.‬‬


‫ﺘﻌﻠﻴﻤﺎ ت اﺳ‬
‫ﺜﺎل ﻟ‬
‫اﻟﺮﻣﺰ ‪5.7:‬ﻣ‬

‫ﺘﻤﺎم إﺻﻼﺣﻬﻤﺎ‪.‬‬
‫ﺜﻴﺮ ﻟﻼ ﻫ‬
‫ﻔﺼ ﻼن ﻫﻨﺎ ‪ ،‬ﺣﻴ ﺚ ﻛﺎن ﻣﻦ اﻟﻤ‬
‫ﺜﻨﺎﺋ ﻲُﻣ ﱠ‬
‫ﺗﺎن ﺣﻴ ﺚ ﻛﺎنﻳﺠ ﺐﺗﺼﺤﻴﺢ اﻟﻤﻠﻒ اﻟ‬
‫ﺘﺎن ﻣﺤﺪد‬
‫ﺣﺎﻟ‬

‫ﺗﻌﻠﻴﻤﺎ ت رﻣﺰ ﻣﺼﺎدﻗ ﺔ اﻟﻤﺆﺷﺮ اﻟ ﺴﺮي )‪(PAC‬‬


‫‪5.2.2.1‬‬

‫ﺒﻴﻦ أن ﻫﺬا ﺧﻄﺄ ﻓ ﻲ ‪QEMU ،‬ﻋﻨﺪﺗﻠﻘ ﻲ‬


‫ﺜﻮر ﻋﻠﻴﻬﺎ ﻟﻠﻨﻮاة‪.‬ﺗ‬
‫ﺘ ﻲﺗﻢ اﻟﻌ‬
‫ﺑﺸﻜﻞ ﻣﺮﻳ ﺐ ﻣﻦﺗﻠﻚ اﻟ‬‫ﺒﺔ‬
‫ﺘ ﻲ ﻛﺎﻧ ﺖ ﻗﺮﻳ‬
‫ﺘﻌﻄﻞ ﻓ ﻲ اﻟﻌﻨﺎوﻳﻦ اﻟ‬
‫ﺜﻨﺎﺋ ﻲ ‪ ،‬ﻓﺈﻧﻪﺳﻴ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫ﻋﻨﺪﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﻔﺮﻋ ﺔ إﱃ‬
‫ﺒ ﺐﺗﻌﻠﻴﻤﺎ ت ‪blraaz ،‬اﻟﻤ‬
‫ﺑﺴ‬‫ﺘﻌﺎرف ﻋﻠﻴﻪ ‪13.‬ﻳﺤﺪ ث ﻫﺬا‬
‫ﺘﻘﺎل إﱃ ﻋﻨﻮان ﻏﻴﺮ ﻣ‬ ‫ً‬
‫ﻓﺎرﻏﺎ ‪،‬ﻷﻧﻪﺗﻢ اﻻﻧ‬ ‫ﺘﻮي ﻋﲆ ﻋﻨﻮان ﺧﻄﺄ ﻓﺎرغ‪ .‬ﻛﺎن ﻋﻨﻮان اﻟﺨﻄﺄ‬
‫إﺷﺎرةﺗﺤ‬
‫ﺘﺎ ت اﻟﻌﻠﻮﻳ ﺔ ﻣﻦ اﻟﻤﺆﺷﺮ ‪14.‬‬
‫ﺒ‬‫ﺑﺬﻟﻚ "ﻳﻔ ﺴﺪ" اﻟ‬
‫ﺘﻮﻗﻴﻊ و‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟ‬
‫ﺛﻴﻘﻬﺎ‪.‬ﻳﺤﺎول ﻓﺮع ‪PAC‬اﻟ‬
‫ﺘﻢﺗﻮ‬
‫ﻣﺆﺷﺮا ت ‪ ،‬ﻟﻢﻳ‬

‫ﺒﻮﻃ ﺔ وﻓ ًﻘﺎ ﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت ﻓﺮع ﻣ ﺴﻮغ اﻟﻮﺻﻮل اﻟﻤﺤﻤ ﻲ )‪(PAC‬‬ ‫ﺒﺪو أﻧﻬﺎ ﻣﻀ‬
‫ﺗﻴﺢ ﻣ ﺴﻮغ اﻟﻮﺻﻮل اﻟﻤﺤﻤ ﻲ )‪(PAC‬ﻳ‬
‫ﻋﻨﺪﻣﺎ ﺣﺪ ث ذﻟﻚ ‪،‬ﺗﻔﺎﺟﺄﻧﺎﻷن ﻣﻔﺎ‬
‫ﺑﺎﻟﻔﻌﻞ ‪PAC‬ﻋﲆ أﺟﻬﺰة ‪iPhone‬‬‫ﺘﺸﻐﻴﻞ‪ .‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪[4] ،‬ﻓﺤﺼ ﺖ‬
‫ﺑﺪء اﻟ‬‫ﺘﻢﺗﺤﺪﻳﺪ أي ﻣﻦ ﻣﺆﺷﺮا ت اﻟﻮﻇﺎﺋﻒ ﻋﻨﺪ‬
‫ﺒﺪو أﻧﻪ ﻻﻳ‬
‫ﻟﻠﻌﻤﻞ‪ .‬وﻣﻊ ذﻟﻚ ‪،‬ﻳ‬
‫ﺒﺪو أن ‪SecureROM‬ﻳﻘﻮم‬ ‫ّﻦ ﻣﻔﺎ‬
‫ﺗﻴﺢ ‪PAC‬اﻟﻤﺤﺪدة أوﺗﻌﻄﻠﻬﺎ‪.‬ﻳ‬ ‫ﺘ ﻲﺗﻤﻜ‬
‫ﺘﻨﻔﻴﺬ ﻣﻦ ‪SCTLR EL1‬اﻟ‬
‫ﺘﺎ ت اﻟﻤﺤﺪدة ﻟﻠ‬
‫ﺒ‬‫ﺜﻮر ﻋﲆ اﻟ‬
‫ﺗﻤﻜﻨ ﺖ ﻣﻦ اﻟﻌ‬
‫ﺘﻔﺼﻴﻞ و‬
‫ﺑﺎﻟ‬
‫ﺑـ ‪blr.‬‬
‫ﺒﺪال ﺟﻤﻴﻊ ‪blraaz‬‬
‫ﺘ‬‫ﺛﻢ ‪ ،‬ﻓﺈن اﻟﺤﻞ اﻟ ﺴﻬﻞ ﻟﻬﺬه اﻟﻤﺸﻜﻠ ﺔ ﻫﻮ اﺳ‬‫ﺗﻴﺢ ‪B‬ﻓﻘﻂ ﻟﻠﺤﺼﻮل ﻋﲆ اﻹرﺷﺎدا ت‪ .‬وﻣﻦ‬
‫ﺘﻤﻜﻴﻦ ﻣﻔﺎ‬
‫ﺑ‬

‫‪5.2.2.2‬ﻓ ﺴﺎد اﻟﻜﻮﻣ ﺔ اﻟﻐﺎﻣﻀ ﺔ‬

‫ﺒﻴﺮ ﻣﻦ اﻟﺬاﻛﺮة ﻟﻜﻮﻣ ﺔ إﺿﺎﻓ ﺔ ‪chunk15.‬ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬أدى ﻫﺬا إﱃ ﺣﺎﻟ ﺔ ﻣﻦ‬
‫ﺘﻢ ذﻟﻚ ‪ ،‬ﻣﻦ ﺧﻼلﺗﻮﻓﻴﺮ ﺟﺰء ﻛ‬
‫ﺜﻴﺮ ﻟﻠﻔﻀﻮل ﻋﻨﺪ ﻣﺤﺎوﻟ ﺔﺗﻬﻴﺌ ﺔ اﻟﻜﻮﻣ ﺔ‪.‬ﻳ‬
‫ﻟﻮﺣﻆ ﺣﺎد ث آﺧﺮ ﻣ‬
‫ُﻨﺸ ﺊﺗﺨﺼﻴﺼﻴﻦ ﻟﻠﺤﺮاﺳ ﺔ ‪،‬‬
‫ﺘﺸﻔﻨﺎ أن ﻣﺠﻤﻮﻋ ﺔ إﺿﺎﻓ ﺔ اﻟﻜﻮﻣ ﺔﺗ‬
‫ﺘﻘﺼﺎء ‪ ،‬اﻛ‬
‫ﺑﻌﺪ إﺟﺮاء ﻣﺰﻳﺪ ﻣﻦ اﻻﺳ‬‫ﺘﺨﺼﻴﺺ اﻟﻜﻮﻣ ﺔ ﻏﻴﺮ ﺻﺎﻟﺢ‪.‬‬
‫ﺒﺎري ﻟ‬
‫ﺘ‬‫اﻟﺬﻋﺮ ‪ ،‬ﺣﻴ ﺚ ادﻋﻰ أن اﻟﻤﺠﻤﻮع اﻻﺧ‬
‫ﺒﺎري‬
‫ﺘ‬‫ﺑﺎﻟﻔﻌﻞ اﻟﻤﺠﻤﻮع اﻻﺧ‬‫ﺘﺨﺼﻴﺺ ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ وﻛﺎن‬
‫ﺒﺎري ﻏﻴﺮ اﻟﺼﺤﻴﺢ ﻫﻮ اﻟ‬
‫ﺘ‬‫ﺘﺨﺼﻴﺺ ﻣﻊ اﻟﻤﺠﻤﻮع اﻻﺧ‬ ‫ً‬
‫ﺒﺎﺷﺮة‪ .‬ﻛﺎن اﻟ‬
‫ﺒﺪاﻳ ﺔ وﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟﻜﻮﻣ ﺔ ﻣ‬
‫ﻓ ﻲ اﻟ‬

‫ﺘﻮى أﻋﲆ‪.‬‬
‫ﺑﻠﻐ ﺔ ذا ت ﻣ ﺴ‬‫ﺒﻨﺎ‬
‫ﺘ‬‫ﺘﺮﺟﻢ ﻧﻔ ﺴﻪ ‪ ،‬إذا ﻛ‬
‫‪ 12‬ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﺨﺪاع ﺷﺎﺋﻊ ﺟﺪًا ﻓ ﻲ ‪ARM‬وﺳﻴﺼﺪره اﻟﻤ‬

‫ﺘًﺎ إﻣﺎ واﺣﺪًا أو ﺻﻔ ﺮًا‪.‬‬


‫ﺑ‬‫ﺘﻌﺎرف ﻋﻠﻴﻪ ﻋﲆ أﻓﻀﻞ ‪16‬‬
‫ﺘﻮي اﻟﻌﻨﻮان اﻟﻤ‬
‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬ﻓ ﻲ ‪X86 ،‬ﻳﺤ‬‫ﺒﺎرا ت‬
‫ﺑﻌ‬‫‪13‬‬
‫ﺒ ﺴﻂ ‪ ،‬ﻟﻜﻦﻳﺠ ﺐ أنﻳﻌﻄ ﻲ اﻟﻔﻜﺮة اﻟﺼﺤﻴﺤ ﺔ ﻋﻤﺎﻳﺤﺪ ث‪.‬‬
‫‪ 14‬ﻫﺬاﺗﻔ ﺴﻴﺮ ﻣ‬
‫ﺘﺎﺣ ﺔ ﻓ ﻲ‬
‫ﺘﻜﻮن ﻣ‬
‫ﺒﻴﺮ ﻣﻦ اﻟﺬاﻛﺮة ﻟ‬
‫ﺘﺎدة ‪ ،‬وﻟﻜﻨﻬﺎﺗﺸﻴﺮ إﱃ إﺿﺎﻓ ﺔ ﺟﺰء ﻛ‬
‫ﺑﻘﻄﻊ اﻟﻜﻮﻣ ﺔ اﻟﻤﻌ‬‫ﺘﻌﻠﻖ اﻟﻘﻄﻌ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﺳﻤﻬﺎ‬
‫ﺑﻌﺾ اﻟﺸ ﻲء‪ .‬ﻻﺗ‬‫ً‬
‫ﻣﻀﻠﻼ‬ ‫‪15‬ﻗﺪﻳﻜﻮن اﺳﻢ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‬
‫اﻟﻜﻮﻣ ﺔ‪.‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﺎء ﻟﻴﻨﻮﻛ ﺲ ﻗﺰم‬


‫‪5.2‬‬ ‫‪21‬‬

‫ﺘﺨﻠﺺ ﻣﻦ اﻟﺠﺰء ﻏﻴﺮ اﻟﻤﺨﺼﺺ ﻣﻦ اﻟﻜﻮﻣ ﺔ‪.‬‬


‫ﺑﻌﺪ أنﺗﻢ اﻟ‬‫ﺒﺎﺷﺮة‬
‫ﺘﻬﻴﺌ ﺔ‪ .‬ﺣﺪ ث ذﻟﻚ ﻣ‬
‫ﺒﻄﻪ ﻋﲆ ﺟﻤﻴﻊ اﻷﺻﻔﺎر ﻓ ﻲ ﻣﺮﺣﻠ ﺔ ﻣﺎ ﻣﻦ ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺗﻢ ﺿ‬

‫ﺗﺤﺪﻳﺪًا‬
‫ﺘﺸﺎف اﻟﺨﻄﺄ اﻟﺬيﻳﺤﺪ ث‪.‬ﺗﻜﻤﻦ اﻟﻤﺸﻜﻠ ﺔ ﻓ ﻲ وﻇﻴﻔ ﺔ ‪bzero ،‬و‬ ‫ﺑ ًﻘﺎ ﻋﲆ أﺟﻬﺰة ‪iPhone‬وﺟﻌﻞ ﺣﻴﺎ‬
‫ﺗﻨﺎ أﺳﻬﻞ ﻓ ﻲ اﻛ‬ ‫ﺑﺤ ً‬
‫ﺜﺎﺳﺎ‬ ‫ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪ ،‬ﻛﺎن ]‪[2‬ﻗﺪ أﺟﺮى‬
‫ﺘﺎ ت إﱃ اﻟﺼﻔﺮ ﻣﻦ‬
‫ﺒﺎﻳ‬
‫ﺑﺎﻳ ﺖ ‪-‬ﻣﻦ اﻟﺬاﻛﺮة ﻓ ﻲ وﻗ ﺖ واﺣﺪ‪.‬ﺗﻢﺗﺤﺪﻳﺪ ﻋﺪد اﻟ‬
‫ﺘﺤﺪﻳﺪ ‪0x40‬‬
‫ﺒﻴﺮة ‪-‬ﻋﲆ وﺟﻪ اﻟ‬
‫ﺘﺨﺪم ‪dc zva‬ﻹﺧﺮاج أﺟﺰاء ﻛ‬
‫ﺑﻬﺎ‪.‬ﻳ ﺴ‬‫ﻣ ﺴﺎر اﻟﻜﻮد اﻟ ﺴﺮﻳﻊ اﻟﺨﺎص‬
‫ﺘﻢﺗﺤ ﺴﻴﻦ ﻫﺬا‬
‫ﺘﻤﻞ أنﻳ‬
‫ﺘﻢﺗﺠﻤﻴﻌﻪ ﻟﺸﺮﻳﺤ ﺔ ﻣﻌﻴﻨ ﺔ ‪ ،‬ﻛﻤﺎﻳﻮﺣ ﻲ ‪[2] ،‬ﻓﻤﻦ اﻟﻤﺤ‬
‫ﺒﺮﺳﺠﻞ ‪DCZID EL0 .‬ﻧﻈ ﺮًاﻷن ‪SecureROM‬ﻳ‬
‫ﺗﻬﺎ ﻋ‬
‫ﺘﻨﻔﻴﺬ ‪ ،‬وﻟﻜﻦﻳﻤﻜﻦ ﻗﺮاء‬
‫ﺧﻼل اﻟ‬
‫ﺒﻴﺮ‬
‫ﺒ ﺴﺎﻃ ﺔ ﺻﻔﻴ ﺮًا ﻟﻌﺪد ﻛ‬
‫ﺑ‬‫ﺒﺎري‪ .‬ﻟﻘﺪ ﻛﺎن‬
‫ﺘ‬‫ﺑﺎﻳ ﺖ ‪ ،‬و ﻫﻮ ﻣﺎﻳﻔ ﺴﺮﺗﺼﻔﻴﺮ اﻟﻤﺠﻤﻮع اﻻﺧ‬
‫ﺒﻠﻎ ‪512‬‬
‫ﺘﺮاﺿﻴ ﺔﺗ‬
‫ﺘﺨﺪم ‪QEMU‬ﻗﻴﻤ ﺔ اﻓ‬
‫ﺗﻤﺎﻣﺎ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬ﺗ ﺴ‬
‫ً‬ ‫اﻟﻔﺤﺺ أوﺗﺠﺎ ﻫﻠﻪ‬
‫ﺘﻴﺎر وﺣﺪة اﻟﻤﻌﺎﻟﺠ ﺔ اﻟﻤﺮﻛﺰﻳ ﺔ ﻓ ﻲ ‪QEMU‬‬
‫ﺒﺎدل ﻹﻃﻼق اﻟﻨﺎر‪ .‬ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﻣﺎ زﻟﻨﺎ ﻧﺮﻏ ﺐ ﻓ ﻲﺗﻤﻜﻴﻦ ‪PAC ،‬ﻟﺬا ﻟﻢﻳﻜﻦ اﺧ‬
‫ﺛﻢ وﻗﻊ ﺟﺰء اﻟﺤﺎرس ﻓ ﻲﺗ‬‫ﺘﺎ ت ‪ ،‬وﻣﻦ‬
‫ﺒﺎﻳ‬
‫ﺟﺪًا ﻣﻦ اﻟ‬
‫ﺘ ﻲ ﻻﻳﺠ ﺐ اﻟﻮﺻﻮل إﻟﻴﻬﺎ ﻣﻄﻠ ًﻘﺎ‪.‬‬
‫ﺒﻴﺮة ﺟﺪًا ‪،‬ﺗﻠﻚ اﻟ‬
‫ﺘﺨﺪام اﻟﻤ ﺴﺎر اﻟ ﺴﺮﻳﻊ ﻓﻘﻂ ﻣﻊ ﻣﺪﺧﻼ ت ﻛ‬
‫ﺘﻐﻠ ﺐ ﻋﲆ ﻫﺬا ‪،‬ﺗﻢﺗﺼﺤﻴﺢ ‪bzero‬ﻻﺳ‬
‫ﺒﺎﻳ ﺖ ﻣﻤﻜﻨًﺎ‪ .‬ﻟﻠ‬
‫ﺑﺎﻟﻌﺪد اﻟﺼﺤﻴﺢ ﻣﻦ اﻟ‬
‫ﺒﺮﻣﺠﻴ ﺔ ‪5.4.‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﺼﺤﻴﺢ اﻟﺬيﺗﻢﺗﻨﻔﻴﺬه ﻓ ﻲ اﻟ ﺴﻄﺮ ‪4‬ﻣﻦ اﻟ‬ ‫ﻳﻤﻜﻦ أ ً‬
‫ﻳﻀﺎ رؤﻳ ﺔ اﻟ‬

‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺘﺨﺪام اﻟﺮﻣﻮز ﻣﻦ اﻟ‬
‫‪5.2.3‬اﺳ‬

‫ﺑ ﺖ ﻣﻦ ‪C.‬ﺣﺪود‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺘﺪﻋﺎء أي رﻣﻮز ﻣﻮﺟﻮدة ﻣﻦ ﺧﻼل اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻓ ﻲ اﻟﻘﺪرة ﻋﲆ اﺳ‬
‫ﺜﻞ إﺣﺪى اﻟﻤﻴﺰا ت اﻟﺮ‬
‫ﺘﻤ‬ ‫ﺘﻜﻮن ﻗﺎد ًرا ﻋﲆ ﺟﻌﻞ ‪ SecureROM‬ﺻﺪﻳ ًﻘﺎ واﻧ‬
‫ﺘﻘﺎﺋ ًﻴﺎ ‪،‬ﺗ‬ ‫ﻟ‬
‫ﺘﺎﻟ ﻲ ‪C.‬‬
‫ﺑﺎﻟ‬
‫ﺘﺮﺟﻢ ‪ ،‬و‬
‫ﺋﻴ ﺔ ﻟﻠﻤ‬
‫ﺑ ﺔ وﺟﻌﻞ اﻟﺮﻣﻮز ﻣﺮ‬
‫ﺘﺎ‬
‫ﺑﺎ ت ﻋﻨﺪﺗﺼﺪﻳﺮ ﻣﻌﻠﻮﻣﺎ ت اﻟﻜ‬
‫ﺗﻨﺸﺄ اﻟﺼﻌﻮ‬
‫‪16.‬‬

‫ﺘﺮﺟﻢ ‪C‬ﻗﻴﺎﺳ ﻲ‪ .‬ﻛﺎﻧ ﺖ إﺣﺪى اﻟﻤﺸﻜﻼ ت‬


‫ﺒﺎﺷﺮة ﻣﻊ أي ﻣ‬ ‫ﺘﺼﺪﻳﺮ ﻣﻌﻠﻮﻣﺎ ت اﻟﻨﻮع أ ً‬
‫ﻳﻀﺎ ‪ ،‬إﻻ أﻧﻪ ﻟﻸﺳﻒ ﻻﻳﻤﻜﻦﺗﺠﻤﻴﻌﻬﺎ ﻣ‬ ‫ﺒﻴﻘﺎ ت ﻟ‬
‫ﺑﺮﻣﺠ ﺔﺗﻄ‬‫ﺘﻠﻚ ‪IDA‬واﺟﻬ ﺔ‬
‫ﺑﻴﻨﻤﺎﺗﻤ‬
‫ﺜﺎل ‪،‬‬ ‫ﺒﻌﻴ ﺔ أوﻻً‪ .‬ﻋﲆﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬ ‫ﺘﻢ إﺻﺪار أيﺗ‬
‫ﺑﻌﻨﺎﻳ ﺔ وﻟﻜﻞ ﻧﻮع ‪،‬ﻳ‬‫ﺘﻢﺗﻜﺮار اﻷﻧﻮاع‬
‫ﺘﺮﺟﻢﺳﻌﻴﺪًا ‪،‬ﻳ‬
‫ﺒﻌﺾ‪ .‬ﻟﺠﻌﻞ اﻟﻤ‬
‫ﺑﻌﻀﻬﺎ اﻟ‬‫ﺘﻤﺪ ﻋﲆ‬
‫ﺘ ﻲﺗﻌ‬
‫ﺘﻬﺎ ﻫ ﻲ اﻷﻧﻮاع اﻟ‬
‫ﺘ ﻲﺗﻤ ﺖ ﻣﻮاﺟﻬ‬
‫اﻟ‬
‫ﺘﻄﻠ ﺐ ذﻟﻚ اﻟﻨﻈﺮ إﱃ اﻟﺤﻘﻮل اﻟﻬﻴﻜﻠﻴ ﺔ ﻓﺤ ﺴ ﺐ ‪،‬‬
‫ﺜﺎل ‪ ،‬ﻻﻳ‬
‫ﺒﻌ ﺚ اﻷﻧﻮاع ‪DERByte‬و ‪DERSize‬واﻟﻤﺰﻳﺪ‪ .‬ﻛﻤﺎ رأﻳﻨﺎ ﻓ ﻲ اﻟﻤ‬
‫ﺒﻨﻴ ﺔ ‪،‬ﺳﻨﺮى ﻓ ﻲ اﻟﻜﻮد ‪6.2 ،‬ﻳﺠ ﺐ أنﺗﻨ‬
‫ﺒﻞ إﺻﺪار اﻟ‬
‫ﻗ‬
‫ﺘﻜﺮر‪.‬‬
‫ﺑﺸﻜﻞ ﻣ‬ ‫ﺘﻄﻠ ﺐ أ ً‬
‫ﻳﻀﺎ "اﻟﺤﻔﺮ"ﻷﺳﻔﻞ ﻓﻴﻬﺎ‬ ‫ﺑﻞﻳ‬

‫ﺘﺮﺟﻢﻳﺮى رﻣﻮزﻧﺎ ‪ ،‬ﻋﻦ ﻃﺮﻳﻖ‬


‫ﺑ ﺴﻴﻄ ﺔ ﻟﺠﻌﻞ اﻟﻤ‬‫ﺑﺸﻜﻞ ﺟﻴﺪ ﻓ ﻲ ﻧﻔ ﺲ اﻟﻮﻗ ﺖ‪ .‬ﻃﺮﻳﻘ ﺔ‬‫ﺘﺮﻗﻴﻊﻳﻌﻤﻞ‬
‫ﺘﺮﺟﻢ ‪ ،‬ﻣﻊ ﺟﻌﻞ اﻟ‬
‫ﺋﻴ ﺔ ﻟﻠﻤ‬
‫ﺜﻞ ﻓ ﻲ ﺟﻌﻞ اﻟﺮﻣﻮز ﻣﺮ‬
‫ﺘﻤ‬‫ﺑ ﺔ أﺧﺮىﺗ‬
‫ﻫﻨﺎك ﺻﻌﻮ‬
‫ﺛﻨﺎﺋ ﻲ‬‫ﺘﻄﻠ ﺐ‬
‫ﺘﻢﺗﻮﻓﻴﺮ وﻇﻴﻔ ﺔ ‪irq‬ﻟﻤﻨﺼ ﺔ ‪rom.‬وﻣﻊ ذﻟﻚ ‪،‬ﻳﻤﻜﻦ ﻟﻠﻤﺮء أنﻳﺮى أن ﻫﺬاﻳ‬
‫ﺜﺎل ﻓ ﻲ ‪Code 5.5 ،‬ﺣﻴ ﺚﻳ‬
‫ﺘﺠﻤﻴﻊ‪.‬ﻳﻤﻜﻦ رؤﻳ ﺔ ﻣ‬
‫ﺟﻌﻠﻬﺎ ﻛﺮﻣﻮز ﻋﺎدﻳ ﺔ ﻓ ﻲ اﻟ‬
‫ﺘﺠﻤﻴﻊ اﻟﺬيﺗﻢ إﻧﺸﺎؤه‪.‬‬
‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ ‪ ،‬ﻓ ﻲ ﻣﻠﻒ اﻟ‬‫ﺘﻢﺗﻀﻤﻴﻦ ﻛﻞ ﻗﻄﻌ ﺔ‬
‫ﺛﻢﻳ‬‫ﺘﻢﺗﻘ ﺴﻴﻤﻪ إﱃ أﺟﺰاء ﺻﻐﻴﺮة ‪-‬ﻗﻄﻌ ﺔ ﻟﻜﻞ رﻣﺰ‪.‬‬
‫ﺒﻴﺮ ﻓ ﻲ اﻷﺻﻞ أنﻳ‬
‫‪SecureROM‬اﻟﻜ‬

‫ﺑﺸﺠﺮة ﻣﻦ‬‫ﺘﻔﻆ‬
‫ﺜﻨﺎﺋ ﻲ‪ .‬إﻧﻪﻳﺤ‬
‫ﺘﺮﻗﻴﻊ اﻟﻤﻠﻒ اﻟ‬
‫ﺑ‬ ‫ﺑﺸﻜﻞﺳﺮﻳﻊ واﻟ ﺴﻤﺎح أ ً‬
‫ﻳﻀﺎ‬ ‫ﺑﻴﺎﻧﺎ ت ﻣﺨﺼﺼ ﺔ ‪-‬ﻟﻠﺤﻔﺎظ ﻋﲆ ﻫﺬه اﻷﺟﺰاء‬‫ﺑﻨﻴ ﺔ‬‫ﺘﺨﺪام ‪ChunkTree -‬و ﻫ ﻲ‬
‫ﺘﻢ اﺳ‬
‫ﻳ‬
‫ﺘﺪ ﻣﻌً ﺎ ﻋﲆ ﻧﻄﺎق ﻋﻨﻮان ﻣﺤﺪد‪.‬‬
‫ﺘ ﻲﺗﻤ‬
‫اﻟﻘﻄﻊ ‪ ،‬اﻟ‬
‫ﺜﻮر ﻋﲆ‬
‫ﺘﻢ اﻟﻌ‬
‫ﺑﻘﻄﻌ ﺔ واﺣﺪة‪ .‬ﻋﻨﺪ إﺿﺎﻓ ﺔ ﺟﺰء ﺟﺪﻳﺪ ‪،‬ﻳ‬‫ﺑﺎﻟﻜﺎﻣﻞ‬‫ﺘﺪ ﻧﻄﺎق اﻟﻌﻨﻮان‬
‫ﺒﺪﺋ ًﻴﺎ ‪،‬ﻳﻤ‬
‫ﺑﺎﻳ ﺖ واﺣﺪ ﻏﻴﺮ ﻣﻮﺟﻮد ﻓ ﻲ ﻗﻄﻌ ﺔ ﻣﻌﻴﻨ ﺔ‪ .‬ﻣ‬ ‫ﺘﺪاﺧﻞ اﻟﻘﻄﻊ ﻣﻄﻠ ًﻘﺎ وﻻﻳﻮﺟﺪ أ‬
‫ﺑﺪًا‬ ‫ﻻﺗ‬
‫ﺛﻐﺮا تﻳﻤﻜﻦ أنﺗﻈﻬﺮ‪.‬‬‫ﺑﺎﻟﻜﺎﻣﻞ وﻋﺪم وﺟﻮد أي‬
‫ﺘﺄﻛﺪ ﻣﻦﺗﻀﻤﻴﻦ ‪SecureROM‬‬
‫ﺑﻬﺬه اﻟﻄﺮﻳﻘ ﺔ ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟ‬‫ﺘﺪاﺧﻠ ﺔ ﺣﺎﻟ ًﻴﺎ ﻣﻊ اﻟﺠﺰء اﻟﺠﺪﻳﺪ وإﻣﺎﺗﻘ ﺴﻴﻤﻬﺎ أوﺗﻘﺼﻴﺮ ﻫﺎ‪.‬‬
‫اﻷﺟﺰاء اﻟﻤ‬
‫ﺘﺎﻟ ﻲ ‪ ،‬ﻓﺈن اﻟﺨﻄﻮة اﻷوﱃ ﻫ ﻲ إﺿﺎﻓ ﺔ ﻗﻄﻌ ﺔ‬
‫ﺑﺎﻟ‬
‫ﺑﺪاﻳ ﺔ اﻟﻘﻄﻊ‪ .‬و‬‫ﺒﺪأ ﻣﻦ ﻋﻨﻮان‬
‫ﺒﻂﻳ‬
‫ﺗ‬‫ﻹرﺳﺎل ﻣﻌﻠﻮﻣﺎ ت اﻟﺮﻣﺰ ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ ‪Code 5.5 ،‬ﻳﻤﻜﻦ أنﻳﻜﻮن ﻟﻜﻞ ﻗﻄﻌ ﺔ رﻣﺰ ﻣﺮ‬
‫ﺒﺪﻻ ً ﻣﻦ إﺻﺪارﺗﻮﺟﻴﻪ ‪ nibcni.‬ﻟﻠﻤﻘﻄﻊ ‪،‬ﺳﻴ‬
‫ﺘﻢ‬ ‫ﺑﻬﺎ‪ .‬إذا ﻛﺎﻧ ﺖ ﻫﺬه ﻫ ﻲ اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻓ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺠﻤﻴﻊ اﻟﻤﺮ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳﻤﻜﻦ أنﻳﻜﻮن ﻟﻠﻘﻄﻌ ﺔﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟ‬‫ﻟﻜﻞ رﻣﺰُﻣ ﺼﺪﱠر‪.‬‬
‫ﺘﺠﻤﻴﻊ اﻟﻤﻮﺟﻮد‬
‫ﺘ ﻲﺗﺼﺪر اﻟ‬
‫ﺛ ﺔ اﻟ‬
‫ﺜﻼ‬‫ﺜﺎل ﻋﲆ اﻷﺟﺰاء اﻟ‬
‫ﺘﺠﻤﻴﻊ اﻟﻤﺼﺤﺢ‪.‬ﻳﻈﻬﺮ ﻣ‬
‫ﺜﻨﺎﺋ ﻲ ‪ ،‬ﻋﻦ ﻃﺮﻳﻖ إﺿﺎﻓ ﺔ أﺟﺰاء ﻣﻦ اﻟ‬
‫ﺘﺠﻤﻴﻊ ﻧﻔ ﺴﻪ‪ .‬ﻫﺬاﻳﺸﻜﻞ اﻟﻮاﺟﻬ ﺔ اﻟﺨﻠﻔﻴ ﺔ ﻟﻠﺮﻗﻊ اﻟ‬
‫إرﺳﺎل اﻟ‬
‫ﻓ ﻲ اﻟﻜﻮد ‪5.5‬ﻓ ﻲ اﻟﻜﻮد ‪5.8.‬‬

‫ﺘﻠﻒ اﻟﻌﻤﻠﻴ ﺔ ﻗﻠﻴ ﻼ ً ﻋﻦ اﻟﻮﻇﺎﺋﻒ واﻟﻜﺮا ت اﻷرﺿﻴ ﺔ ‪ ،‬ﻟﻜﻨﻬﺎ إﱃ ﺣﺪ ﻛ‬


‫ﺒﻴﺮ ﻫ ﻲ ﻧﻔ ﺴﻬﺎ‪.‬‬ ‫ﺗﺨ‬‫‪16‬‬
‫ﺘﺼﻒ ﺟﺰء ﻣﻮﺟﻮد أم ﻓ ﻲ أﺣﺪ اﻷﻃﺮاف‪.‬‬
‫ﺘﻤﺎدًا ﻋﲆ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻄﻌ ﺔ اﻟﺠﺪﻳﺪة ﻓ ﻲ ﻣﻨ‬
‫‪17‬اﻋ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﺎء ﻟﻴﻨﻮﻛ ﺲ ﻗﺰم‬


‫‪5.2‬‬ ‫‪22‬‬

‫][ﻗﻄﻌ ﺔ}‬
‫ﺒﺪاﻳ ﺔ‪0x100002dc4 ، :‬اﻟﻨﻬﺎﻳ ﺔ‪0x100002e20 ، :‬اﻟﺮﻣﺰ‪"rom_platform_irq"} ، :‬‬
‫اﻟﻘﻄﻌ ﺔ }اﻟ‬
‫ﺒﺪاﻳ ﺔ‪0x100002e20 ، :‬اﻟﻨﻬﺎﻳ ﺔ‪0x100002e24 ، ASM: "blr X8"} ، :‬‬
‫اﻟﻘﻄﻌ ﺔ }اﻟ‬
‫ﺒﺪاﻳ ﺔ‪0x100002e24 ، :‬اﻟﻨﻬﺎﻳ ﺔ‪0x100002e98} :‬‬
‫ﻣﺠﻤﻮﻋ ﺔ }اﻟ‬
‫}‬

‫ﺜﺎل ﻋﲆ اﻟﻘﻄﻊ‪.‬‬
‫اﻟﻜﻮد ‪5.8:‬ﻣ‬

‫ﺑﺮﻣﺰ‬
‫‪5.2.4 Backtrace‬‬
‫ﺒﺪو أﻧﻬﺎ‬
‫ﺘ ﻲﻳ‬
‫ﺒﻘﻴ ﺔ ‪ ،‬واﻟ‬
‫ﺘ‬‫ﺘﺼﺤﻴﺢ اﻟﻤ‬
‫ﺑﻌﺾ رﻣﻮز اﻟ‬ ‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻫﻨﺎك أ ً‬
‫ﻳﻀﺎ‬ ‫ﺛﻨﺎءﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء‪.‬‬
‫ﺜﻤﻦ أ‬
‫ﺑ‬‫ﺒ ﺖ ‪stacktrace 18‬اﻟﻤﺮﻣﺰ ﻣﻊ ﻣﻌﺎﻟﺠﺎ ت اﻹﺷﺎرة أﻧﻪ ﻻﻳﻘﺪر‬
‫ﺛ‬‫أ‬
‫ﺒﺐ‬
‫ﺛﻨﺎءﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء‪ .‬ﺧﺎﺻ ﺔ ﻋﻨﺪ ﻣﺤﺎوﻟ ﺔ ﻣﻌﺮﻓ ﺔﺳ‬
‫ﺗﻮﻓﻴﺮ ﻣﻌﻠﻮﻣﺎ ت إﺿﺎﻓﻴ ﺔ أ‬ ‫ﺘ ﺴﺠﻴﻞ ‪،‬ﻳﻤﻜﻦ ﺟﻤﻌﻬﺎ أ ً‬
‫ﻳﻀﺎ و‬ ‫ﺑﻂ وﻇﻴﻔ ﺔ اﻟ‬
‫ﺑﻤﻌﺮف ﻓﺮﻳﺪ‪ .‬ﻣﻦ ﺧﻼل ر‬‫ﺛًﺎ ﻣﻌﻴﻨ ﺔ‬
‫ﺗ ﺴﺠﻞ أﺣﺪا‬
‫ﺜﺎﻻ ً ﻹﺧﺮاج‬
‫ُﻈﻬﺮ اﻟﺮﻣﺰ ‪5.9‬ﻣ‬
‫ﺘ ﻲ ﻛﺎﻧ ﺖ ﻏﻴﺮ ﺻﺤﻴﺤ ﺔ‪.‬ﻳ‬ ‫ً‬
‫ﻋﺎدةﺗﺤﺪﻳﺪ اﻟﺨﺎﺻﻴ ﺔ اﻟﺪﻗﻴﻘ ﺔ اﻟ‬ ‫ﺘﺤﻘﻖ ‪IMG4 ،‬ﻛﺎﻧ ﺖ اﻟ ﺴﺠﻼ ت ﻣﻔﻴﺪة ﻟﻠﻐﺎﻳ ﺔ ‪ ،‬ﺣﻴ ﺚﻳﻤﻜﻨﻬﺎ‬
‫رﻓﺾ ﺻﻮرة ﻣﻦ ﺧﻼل اﻟ‬
‫ﺒﻊ اﻟﻤﻜﺪس اﻟﻤﺮﻣﺰ‪.‬‬
‫ﺘ‬‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚﺗ‬‫ﺘﻬﺎ‬
‫إﺷﺎرةﺗﻢ ﻣﻌﺎﻟﺠ‬

‫ﺗ ﺴﺠﻴﻞﺗﻔﺮﻳﻎ‪R00: 000000069000c800 R02: 0000000000000001 :‬‬


‫ﺘﻠﻤ ﺔ ‪SIGSEGV @ 0x69000c800 ،‬‬
‫‪16:21:11‬ﺧﻄﺄ ‪src/debug/signals.c:75: /..‬إﺷﺎرة ﻣ ﺴ‬
‫‪R01: 000000032007bcd9‬‬ ‫‪R03: 000000069000c800‬‬
‫‪R05:‬‬
‫‪R04:‬‬
‫‪0000000000000000‬‬
‫‪00000000000000‬‬ ‫‪R06: 0000000000000001‬‬ ‫‪R07: 0000000000000078‬‬
‫‪R09:‬‬
‫‪R08:0000000000000100‬‬
‫‪000000032007bcd8‬‬ ‫‪R10: 000000000000100‬‬ ‫‪R11: 0000000000000001‬‬
‫‪R13:‬‬
‫‪R12:0000000000000000‬‬
‫‪0000000000000020‬‬ ‫‪R14: 0000000000401768‬‬ ‫‪R15: 0000000000000010‬‬
‫‪R16:‬‬
‫‪R17: 000000010000e488‬‬
‫‪000000550084ee80‬‬ ‫‪R18: 00000055007fd692‬‬ ‫‪R19: 0000000000420f10‬‬
‫‪R21:‬‬
‫‪R20:0000000000000001‬‬
‫‪0000000000000001‬‬ ‫‪R22: 000000019c010f00‬‬ ‫‪R23: 0000000000001000‬‬
‫‪R24:‬‬
‫‪R25: 0000000000000000‬‬
‫‪000000032007bcd8‬‬ ‫‪R26: 0000000000000001‬‬ ‫‪R27: 0000000000000000‬‬
‫‪R29: 0000000000000000‬‬
‫‪R28:‬‬ ‫‪0000005500800150‬‬ ‫‪R30: 000000010000e5a0‬‬ ‫‪R31: 0000005500800150‬‬
‫ﺒﻊ اﻟﻤﻜﺪس‪:‬‬
‫ﺘ‬‫ﺗ‬

‫‪lib/libpthread.so.0(+0x7080) [0x550084b080] + 0x84b080 [0x0000005500942438 ] /lib/libc.so.64 + 0x942438‬‬


‫‪rom_getDFUImage+0x24 [ 0x0000000000401ed8] ./main_usb () [0x401ed8] + 0x401ed8 [0x000000550084b080] /‬‬
‫]‪rom_usb_core_start+0x2e0 [0x000000010000ad04] rom_usb_init_with_controller+0x48 [0x000000010000ee14‬‬
‫]‪main_usb() [0x403c98]+0x403c98 [0x000000010000dc54] rom_usb_controller_start+0x1c [0x000000010000e434‬‬
‫‪[0x000000010000eb5c] rom_usb_core_event_handler+0x94 [0x0000000000403c98] ./‬‬
‫‪[0x000000010000e59c] rom_usb_core_handle_usb_control_receive+0x114‬‬

‫ﺘﻜﺪﻳ ﺲ واﻹﺷﺎرة اﻟﻤﻌﺎﻟﺠ ﺔ‪.‬‬


‫ﺒﻊ اﻟ‬
‫ﺘ‬‫ﺜﺎل ﻋﲆﺗ‬
‫اﻟﻜﻮد ‪5.9:‬ﻣ‬

‫ﺒﻊﺗﻜﺪس أﺧﺮى ﻣﻦ‬


‫ﺘ‬‫ﺒﺎ تﺗ‬
‫ﺘ‬‫ﺘﻤﻜﻦ أي ﻣﺼﺤﺢ أﺧﻄﺎء أو ﻣﻜ‬
‫ﺜﻞ أي رﻣﺰﺗﺠﻤﻴﻊ ﻟﻦﺗﻜﻮن ﻛﺬﻟﻚ ‪ ،‬ﻓﻠﻦﻳ‬
‫ﺘﻬﺎ ﻣ‬
‫ﺘ ﻲﺗﻤ ﺖ إﺿﺎﻓ‬
‫ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن اﻟﺮﻣﻮز اﻟ‬
‫ﺘﻤﻞ أنﻳﻜﻮن ﻫﺬا‬
‫ﺘﺮاص‪ .‬ﻣﻦ اﻟﻤﺤ‬
‫ﺒﻊ اﻟ‬
‫ﺘ‬‫ﺘﻌﺎدة ﻧﻈﺎمﺗ‬
‫ﺘﻰ ﻣﻦ اﺳ‬
‫ﺘﻤﻜﻦ ﺣ‬
‫ﺘﻬﺎ ‪ ،‬ﻟﻢﺗ‬
‫ﺑ‬‫ﺒﻊﺗﻜﺪسﺗﻤ ﺖﺗﺠﺮ‬
‫ﺘ‬‫ﺒﺎ تﺗ‬
‫ﺘ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻓﺈن أي ﻣﻜ‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺘﻌﺮف ﻋﻠﻴﻬﺎ‬
‫اﻟ‬
‫ﺘﺎﻟ ﻲ‪ .‬ﻗﺪﻳﻜﻮن أﺣﺪ اﻟﺤﻠﻮل ﻫﻮﺗﺼﺪﻳﺮ ﻣﻌﻠﻮﻣﺎ ت‬
‫ﺒﺎ ت ﻣﻌﺮﻓ ﺔ ﻣﻜﺎن ﻋﻨﻮان اﻟﻤﺮﺳﻞ اﻟ‬
‫ﺘ‬‫ﺘﺎﻟ ﻲ ﻟﻢﻳﻜﻦ ﻣﻦ اﻟﻤﻤﻜﻦ ﻟﻠﻤﻜ‬
‫ﺑﺎﻟ‬
‫ﺑﺎﻟﻮﻇﺎﺋﻒ ‪ ،‬و‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺒ ﺐ ﻋﺪم وﺟﻮد ﻣﻌﻠﻮﻣﺎ ت إﻃﺎر ﻣﺮ‬
‫ﺑﺴ‬
‫ﺒﻞ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ اﻟ ﺴﻤﺎح ﻟﻤﺼﺤﺢ‬ ‫ﺒﻊ ﻣﻜﺪس ﻛﻤﺎ رأﻳﻨﺎ ﻣﻦ ﻗ‬
‫ﺘ‬‫ﺘﻮﻓﻴﺮﺗ‬
‫ﺑﻌﺪ ذﻟﻚ ﻓﻘﻂ ﻟ‬‫ﺑﺄﻧﻔ ﺴﻨﺎ‪.‬ﻳﺠ ﺐ أﻻﻳﻌﻤﻞ ﻫﺬا‬
‫اﻹﻃﺎر ﻟﻜﻞ وﻇﻴﻔ ﺔ ﻓ ﻲ ‪IDA‬وإﻧﺸﺎء ﻣﻌﻠﻮﻣﺎ ت ‪DWARF19‬‬
‫ﺗﻪ‪.‬‬
‫ﺘﻌﺎد‬
‫ﺑﺎﺳ‬‫اﻷﺧﻄﺎء‬

‫ﺗﺨﺬﻧﺎه‪ .‬ﻟﺤ ﺴﻦ اﻟﺤﻆ‪،‬‬


‫ﺑ ﺴﻂ اﻟﺬي ا‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻨﻬﺞ اﻷ‬
‫ﺑﻜ‬‫ﺜﺮ‬
‫ﺒ ﺖ أن ﻫﺬا ﻋﻤﻞ أﻛ‬
‫ﺛ‬‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﻘﺪ‬

‫ﺑﺪﻻ ً ﻣﻦ اﻟﻌﻨﺎوﻳﻦ ﻓﻘﻂ‬‫ﺑﺖ‬


‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ُﻈﻬﺮ اﻟﺮﻣﻮز ﻣﻦ اﻟ‬
‫ﺒﻊ اﻟﻤﻜﺪسﻳ‬
‫ﺘ‬‫ﺗﻌﻨ ﻲ ﻛﻠﻤ ﺔ "رﻣﺰي" ﻫﻨﺎ ‪ ،‬أنﺗ‬
‫‪18‬‬
‫ﺣﻴ ﺚ ﺣﺪ ث ﺷ ﻲء ﻣﺎ‪.‬‬
‫ﺜﻨﺎﺋﻴﺎ ت‪.‬‬
‫ﺘﻮﻓﻴﺮ ﻣﻌﻠﻮﻣﺎ تﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء ﻓ ﻲ اﻟ‬
‫‪ 19DWARF‬ﻫﻮ أﺣﺪ ثﺗﻨ ﺴﻴﻖ ﻟ‬
‫‪Machine Translated by Google‬‬

‫‪5.3‬اﻟﺠﻴﻞ ‪IMG4 INPUT GENERATION‬‬ ‫‪23‬‬

‫ﺒﺎع ﻣﺆﺷﺮ‬
‫ﺗ‬‫ﺑﻤﺠﺮد ا‬‫ﺑ ﺴﺎﻃ ﺔ ‪،‬‬‫ﺑﻜﻞ‬‫ﺒﻊ اﻟﻤﻜﺪس‬
‫ﺘ‬‫ﺘﺮدادﺗ‬
‫ﺒﻴﻌ ﻲ‪ .‬ﻟﺬﻟﻚ ‪،‬ﻳﻤﻜﻦ اﺳ‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺑﺈﻋﺪاد إﻃﺎر اﻟﻤﻜﺪس‬‫ﺗﻘﻮم‬
‫ﺗﻴ ﺔ أو ‪thunk20‬ﻓ ﻲ ‪SecureROM‬‬
‫ﺒﺎ‬
‫أي وﻇﻴﻔ ﺔ ﻏﻴﺮ ﻧ‬
‫ﺑﺠﺎﻧ ﺐ ﻧﻄﺎق ﻋﻨﺎوﻳﻨﻬﺎ‪ .‬إذا ﻛﺎن ﻫﻨﺎك ﻋﻨﻮان‬‫ﺑﺠﻤﻴﻊ اﻟﺮﻣﻮز‬‫ﺑﻘﺎﺋﻤ ﺔ‬‫ﺘﻔﺎظ‬
‫ﺘﺮداد أﺳﻤﺎء اﻟﺮﻣﻮز ﻣﻦ ﺧﻼل اﻻﺣ‬
‫ﺘﻢ اﺳ‬
‫اﻹﻃﺎر‪.‬ﺗﻈﻬﺮ ﻫﺬه اﻟﺨﻮارزﻣﻴ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻓ ﻲ اﻟﻜﻮد ‪5.10.‬ﻳ‬
‫ﺒﻊ اﻟﻤﻜﺪس داﺧﻞ ﻣﺼﺤﺢ اﻷﺧﻄﺎء ‪ ،‬ﻟﻜﻨﻪﻳﻈﻞ ﻣﻔﻴﺪًا‬
‫ﺘ‬‫ﺘﺮداد اﻻﺳﻢ‪ .‬ﻟﻸﺳﻒ ‪ ،‬ﻻﻳﻌﻤﻞ ﻫﺬا ﻓ ﻲﺗﻮﻓﻴﺮﺗ‬
‫ﺘﻢ اﺳ‬
‫ﺒﻊ اﻟﻤﻜﺪس داﺧﻞ أﺣﺪ ﻧﻄﺎق ﻋﻨﺎوﻳﻦ اﻟﺮﻣﻮز ‪ ،‬ﻓ ﺴﻴ‬
‫ﺘ‬‫ﻓ ﻲﺗ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ‪.‬‬

‫‪ typedef‬ﻫﻴﻜﻞ ‪ }frame_info‬ﻫﻴﻜﻞ ؛ ‪* prev_frame‬‬


‫ﺑﺎﻃﻞ } ؛ ‪* prev_pc‬ﻣﻌﻠﻮﻣﺎ ت_اﻹﻃﺎر_؛‬
‫‪frame_info‬‬

‫ﺑﺎﻃﻞ { )‪(void * cur_pc، void * cur_fp، void ** addr، size_t max_len‬‬


‫‪backtrace‬‬

‫؛ ‪frame_info_t * prev_frame = current_fp‬ﻟـ { )‪ i ++‬؛ ‪ i < max_len‬؛ ‪(int i = 0‬‬

‫ﺗﺼﺎل! ؛ ‪prev_frame = prev_frame-> prev_frame‬إذا )‪(uint64_t) prev_pc <= 0x400‬‬


‫‪addr [i] = Curr_pc-4 ، //‬ﻷن اﻻ‬
‫|| ‪((uint64_t) prev_frame <= 0x400‬‬

‫ﺘﺄﻛﺪ ﻣﻦ ﻓﺸﻞ اﻟﻌﻨﺎوﻳﻦ ﻏﻴﺮ اﻟﺼﺎﻟﺤ ﺔ‬


‫ﺘﺮاﺣ ﺔ؛ ‪ //‬اﻟ‬
‫اﺳ‬
‫؛‪Current_pc = (uint64_t) prev_frame-> prev_pc‬‬
‫}‬
‫}‬

‫ﺒﻊ اﻟﺨﻠﻔ ﻲ‪.‬‬


‫ﺘ‬‫ﺘ‬‫اﻟﻜﻮد ‪5.10:‬ﺧﻮارزﻣﻴ ﺔ ﻟﺤ ﺴﺎ ب اﻟ‬

‫‪5.3‬إﻧﺸﺎء ﻣﺪﺧﻼ ت ‪IMG4‬‬


‫ﺑﺸﻜﻞ ﻋﺸﻮاﺋ ﻲ ‪ ،‬ﻓﻬﻨﺎك‬‫ﺑﺎﻳ ﺖ اﻹدﺧﺎل‬‫ﺒ ﺔ‪ .‬ﻧﻈ ًﺮاﻷن ‪fuzzer‬ﻳﻐﻴﺮ وﺣﺪا ت‬
‫ﺑﻴﺎﻧﺎ ت اﻹدﺧﺎل اﻟﻤﻨﺎﺳ‬‫ﺜﻮر ﻋﲆ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ إﻧﺸﺎء أو اﻟﻌ‬
‫ﺘﻢﺗﺸﻮﻳ ﺶ ‪ELF‬اﻟﻤﺪﻣﺞ ‪،‬ﻳ‬
‫ﺒﻞ أنﻳ‬
‫ﻗ‬
‫ﺑﻴﺎﻧﺎ ت اﻹدﺧﺎل‪.‬‬‫ﺒﺪو ﻋﻠﻴﻪ‬
‫ﺑﻌﺾ اﻟﺸﺮوط ﺣﻮل اﻟﺸﻜﻞ اﻟﺬيﻳﺠ ﺐ أنﺗ‬
‫ﺘﻤﺎم‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺒﺎر ﻣ‬
‫ﺘ‬‫ﺒﻪ ‪ ،‬ﻣﻤﺎﻳﺨﻠﻖ ﺣﺎﻟ ﺔ اﺧ‬
‫ﺑ ﺖ اﻹدﺧﺎل "اﻟﺼﺤﻴﺢ" ﻟﻘﻠ‬‫ﺜﻮر ﻋﲆ‬
‫ﺑﺪ ﻟﻠﻌ‬
‫ﺘﻐﺮق اﻷﻣﺮ إﱃ اﻷ‬
‫ﻳﺠ ﺐ أنﻳﻜﻮن ﺻﻐﻴ ﺮًا ﻗﺪر اﻹﻣﻜﺎن ‪ ،‬وإﻻ ﻓﻘﺪﻳ ﺴ‬
‫ﺜﻴ ﺮًا‪.‬‬
‫ﺑﻄﺄ ﻛ‬
‫ﺘﺸﻮﻳ ﺶ وﻗﺪﻳﺠﻌﻠﻬﺎ أ‬
‫ﺑﻬ ﺔ ﺟﺪًا ‪-‬ﻻﻳ ﺴﺎﻋﺪ ﻓ ﻲ ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺘﺸﺎ‬
‫ﺜﺮ دﻗ ﺔ ﻟﻬﺎﺗﻐﻄﻴ ﺔ ﻣ‬
‫ﺑﺸﻜﻞ أﻛ‬‫ﺑﻬ ﺔ ﺟﺪًا ‪-‬أو‬
‫ﺘﺸﺎ‬
‫ﺘﻌﺪدة ﻣ‬
‫ﺒﺎر ﻣ‬
‫ﺘ‬‫ﻓﺈن وﺟﻮد ﺣﺎﻻ ت اﺧ‬

‫ﺒﻌﺾ‪.‬‬
‫ﺑﻌﻀﻬﺎ اﻟ‬‫ﺑﻬ ﺔ ﺟﺪًا ﻣﻊ‬
‫ﺘﺸﺎ‬
‫ﺑﺎﻳ ﺖ ‪-‬وﻣ‬‫ﺗﺼﻞ إﱃ ﻋﺪة ﻣﻴﻐﺎ‬
‫ﺒﻴﺮة ﺟﺪًا ‪-‬‬
‫ﺘﻴﺎر ﻣﻠﻔﺎ ت ‪IMG4‬اﻟﻌﺎدﻳ ﺔ ﻣﻦ ‪Apple ،‬ﻷﻧﻬﺎ ﻛ‬
‫ﺒﻴﻦ ‪ ،‬ﻻﻳﻤﻜﻦ اﺧ‬
‫ﺑﺎﻟﻨﻈﺮ إﱃ ﻫﺬﻳﻦ اﻟﻤﻄﻠ‬
‫ﺘﻰ‬ ‫ﺗﻤﺎﻣﺎ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ ﻏﻴﺮ ﺻﺎﻟﺤ ﺔ أو ﺣ‬ ‫ً‬ ‫ﺒﺎ ت‪ .‬ﻻﻳﻤﻜﻦ ﻓﻘﻂ إﻧﺸﺎء ﻣﻠﻔﺎ ت ‪ IMG4‬ﺻﺎﻟﺤ ﺔ‬
‫ﺘﻄﻠ‬
‫ﺑﺎﻟﻤ‬‫ﺘ ﻲﺗﻔ ﻲ‬
‫ﻟﺬﻟﻚ ‪،‬ﺗﻢﺗﻄﻮﻳﺮ أداة ﻣﺨﺼﺼ ﺔ ﻹﻧﺸﺎء ﻣﻠﻔﺎ ت إدﺧﺎل ‪IMG4‬اﻟ‬
‫ﺗﻠﻚ‪.‬‬
‫ﺘﻨ ﺴﻴﻖ ‪-‬‬
‫ﻣﻌﻄﻠ ﺔ ‪-‬ﻣﻦ ﺣﻴ ﺚ اﻟ‬

‫ّف‬
‫ﺜﻞ اﻻﺳﻢ أو ﻣﻌ ﺮ‬
‫ﺗﻐﻴﻴﺮ اﻟﺨﺼﺎﺋﺺ ﻣ‬
‫ﻋﺎل ‪-‬‬
‫ٍ‬ ‫ﺘﻮى‬
‫ﺘﻢﺗﺤﻮﻳﺮه ﻋﺸﻮاﺋ ًﻴﺎ‪.‬ﻳﻤﻜﻦ أنﺗﺤﺪ ث اﻟﻄﻔﺮا ت إﻣﺎ ﻋﲆ ﻣ ﺴ‬
‫ﺛﻢﻳ‬‫ﺑ ﺴﻴﻂ ﺻﺎﻟﺢ ‪،‬‬‫ﺑﻤﻠﻒ‬‫ﺒﺪأ اﻷداة‬
‫ﺘﺤﻘﻴﻖ ذﻟﻚ ‪،‬ﺗ‬
‫ﻟ‬
‫ﺑﻌﺪ ﻛﻞ اﻟﻄﻔﺮا ت ‪ ،‬ﻓﺈﻧﻪﻳﺤﺪد ﻣﺎ إذا ﻛﺎن اﻹدﺧﺎل ﻻ‬‫ﺘﻮﻳﺎ ت ‪DER‬اﻟﻤﺸﻔﺮ‪.‬‬
‫ﺗﻐﻴﻴﺮ اﻟﻄﻮل أو اﻟﻌﻼﻣ ﺔ أو ﻣﺤ‬
‫ﺘﻮى أﻗﻞ ‪-‬‬
‫ﺑﺸﻬﺎدة ﺟﺬر ﻣﺰﻳﻔ ﺔ ‪-‬أو ﻣ ﺴ‬‫ﺘﻮﻗﻴﻊ‬
‫اﻟﺸﺮﻳﺤ ﺔ اﻟﻔﺮﻳﺪ أو اﻟ‬
‫ُﺮﺟﻊ اﻟﺤﻤﻮﻟ ﺔ‬
‫ﺘ‬
‫ﺘﻢﺗﻌﺪﻳﻞ اﻟﺤﻤﻮﻟ ﺔ اﻟﻤﻨﻔﺬة‪ .‬إذا ﻛﺎن اﻹدﺧﺎل ﺻﺎﻟﺤًﺎ ‪ ،‬ﻓ ﺴ‬
‫ﺘﻴﺠ ﺔ ‪-‬ﻳ‬
‫ﺘﻤﺎدًا ﻋﲆ اﻟﻨ‬
‫ﺘﻮﻗﻴﻊ واﻟﻤﻠﺨﺺ ‪-‬و ‪-‬اﻋ‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟ‬
‫ﺘﻢ اﻟ‬
‫ﺑﻤﻌﻨﻰ آﺧﺮ ‪،‬ﻳ‬
‫ﻳﺰال ﺻﺎﻟﺤًﺎ ‪-‬‬
‫ﺑﺸﻜﻞ ﻏﻴﺮ ﺻﺤﻴﺢ ‪ ،‬ذﻟﻚ‬‫ﺑﻬﺬه اﻟﻄﺮﻳﻘ ﺔ ‪ ،‬إدﺧﺎل ﻣﻮﻗﻊ‬
‫ﺑﻴﻨﻤﺎﺳﻴﻌﻮد اﻹدﺧﺎل ﻏﻴﺮ اﻟﺼﺤﻴﺢ ‪RetInvalidPayload.‬‬‫ﺑ ﺖ( ‪،‬‬
‫ﺛﺎ‬‫‪)RetValidPayload‬رﻗﻢ‬

‫ﺘﻜﻮن ﻋﺎدة ﻣﻦﺗﻌﻠﻴﻤ ﺔ ﻓﺮع واﺣﺪ‪.‬‬


‫ﺒﺎﺷﺮة وﻇﻴﻔ ﺔ أﺧﺮى ‪ ،‬ﻟﺬﻟﻚﺗ‬
‫ﺘﺪﻋ ﻲ ﻣ‬
‫‪20‬ﻟﺬاﺗ ﺴﻤﻰ وﻇﺎﺋﻒ "‪ "thunk‬ﻫ ﻲ وﻇﺎﺋﻒﺗ ﺴ‬

‫ﺘﺸﻮﻳﻖ اﻻﻧﻬﻴﺎر ‪،‬ﻷن ﻫﺬا ﻫﻮ اﻟﻬﺪف اﻟﻨﻬﺎﺋ ﻲ‪.‬‬ ‫ً‬


‫ﻋﺎدة ﻣﺎﻳﻌﻨ ﻲ اﻟ‬ ‫ﺘﺸﻮﻳ ﺶ ‪،‬‬
‫‪21‬ﻓ ﻲ ﺣﺎﻟ ﺔ اﻟ‬
‫ﺑﻪ ﺟﺪًا ‪ ،‬ﻓﺈن اﻷﻣﺮ ﻛﺬﻟﻚ‬
‫ﺘﺸﺎ‬
‫ﺑﻌﻀﻬﺎ ﻣ‬‫ﺒﺎر ‪ ،‬وﻟﻜﻦ ﻧﻈ ﺮًاﻷن‬
‫ﺘ‬‫ﺑ ﺔ ﺟﻤﻴﻊ ﺣﺎﻻ ت اﻻﺧ‬
‫ﻳﻤﻜﻦ أنﻳﻜﻮن ﻫﺬا ﻫﻮ اﻟﺤﺎل ‪ ،‬إذا أراد اﻟﻤﺼﻬﺮﺗﺠﺮ‬
‫ﺑ ﺔ أﺣﺪ ﻫﺎ‪.‬‬
‫ﺑﻌﺪﺗﺠﺮ‬‫ﺘ ﺴ ﺐ أي ﻓﻜﺮة‬
‫ﻻﺗﻜ‬
‫ﺑﺸﻬﺎدة ﺟﺬر ﻣﺨﺼﺼ ﺔ ‪ ،‬وﻟﻴ ﺴ ﺖ ﺷﻬﺎدة ‪Apple.‬‬‫ﺒﻊ ﻣﻮﻗﻌ ﺔ‬
‫ﺑﺎﻟﻄ‬
‫‪23‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺠﻤﻴﺪ‬
‫‪5.4.‬إﻋﺪاد اﻟ‬ ‫‪24‬‬

‫ﺘﺸﺎف ﻓﺌﺎ ت ﻣﻌﻴﻨ ﺔ ﻣﻦ اﻷﺧﻄﺎء‬ ‫ﺘﻌﻄﻞ‪ .‬ﻋﲆ ﻫﺬا اﻟﻨﺤﻮ ‪،‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻣﻦ اﻟﻤﻤﻜﻦ أ ً‬
‫ﻳﻀﺎ اﻛ‬ ‫ﺜﻨﺎﺋﻴ ﺔ وﻳﻤﻜﻦ أنﺗ‬
‫ﺘﺎز ﺟﻤﻴﻊ اﻟﺸﻴﻜﺎ ت وﻳﻤﻜﻦﺗﺤﺪﻳﺪ اﻟ‬
‫ﻳﻤﻜﻦ أنﻳﺠ‬
‫اﻟﻤﻨﻄﻘﻴ ﺔ‪.‬‬
‫ﺒﺎ ت اﻟﻤﻮﺟﻮدة )‪(for go‬‬
‫ﺘ‬‫ﺒ ﺔﺗﺸﻔﻴﺮ ‪ASN.1 DER.‬ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﻟﻢﺗﺪﻋﻢ أي ﻣﻦ اﻟﻤﻜ‬
‫ﺘ‬‫ﺘﻨﻔﻴﺬ ﻣﻮﻟﺪ اﻹدﺧﺎل ﻫﺬا ‪،‬ﻳﺠ ﺐ أنﺗﻜﻮن ﻫﻨﺎك ﻣﻜ‬
‫ﻋﲆ اﻟﻮاﺟﻬ ﺔ اﻟﺨﻠﻔﻴ ﺔ ﻟ‬
‫ﺒ ﺔﺗﺮﻣﻴﺰ ‪DER‬‬
‫ﺘ‬‫ﺒﻴﺮة ‪24‬أو ﻓﻚﺗﺮﻣﻴﺰﺗﻨ ﺴﻴﻖ اﻟﻤﺠﻤﻮﻋ ﺔ اﻟﻐﺮﻳ ﺐ ﻟـ ‪IMG4 -‬راﺟﻊ اﻟﻘ ﺴﻢ ‪B.1.‬ﻟﺬﻟﻚ ‪ ،‬ﻛﺎن ﻋﻠﻴﻨﺎﺗﻨﻔﻴﺬ ﻣﻜ‬
‫ﺜﻞ اﻟﻌﻼﻣﺎ ت اﻟﻜ‬
‫ﺟﻤﻴﻊ اﻟﻤﻴﺰا ت اﻟﻀﺮورﻳ ﺔ ‪ ،‬ﻣ‬
‫ﺒﺔ‬
‫ﺘ‬‫ﺘﻨ ﺴﻴﻖ ‪-‬ﻳﻤﻜﻦ ﻟﻠﻤﻜ‬
‫ﺒ ﺔ ﻟﻠﻬﻨﺪﺳ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ ﻟﻠ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺘﺸﻔﻴﺮ ﻛﺎﻧ ﺖ ﻣﻔﻴﺪة ﺟﺪًا ‪-‬ﺧﺎﺻ ًﺔ‬
‫ﺑ ﺔ‪ .‬ﻧﻈ ًﺮاﻷن وﺣﺪة ﻓﻚ اﻟ‬
‫ﺘ ﻲﺗﺪﻋﻢ ﺟﻤﻴﻊ اﻟﻤﻴﺰا ت اﻟﻤﻄﻠﻮ‬
‫ﺑﻨﺎ ‪ ،‬واﻟ‬‫‪ASN.1‬اﻟﺨﺎﺻ ﺔ‬
‫أ ً‬
‫ﻳﻀﺎ ﻓﻚﺗﺸﻔﻴﺮ ‪ASN.1 DER.‬‬

‫ﺘﺸﻮﻳ ﺶ‬
‫‪5.4‬إﻋﺪاد اﻟ‬

‫ﺘﻜﻮﻳﻦ ﻗﻴﺎﺳ ﻲ إﱃ ﺣﺪ ﻣﺎ ‪[9].‬‬


‫ﺑ‬‫ﺘﺨﺪم ]‪AFL ++ [8‬ﻛﻤﺼﻬﺮ ﻟﺪﻳﻨﺎ‬
‫ﺗﻨﺎ اﻟﻤﺰﻋﺠ ﺔ ‪ ،‬ﻧ ﺴ‬
‫ﻹﻋﺪادا‬
‫ﺑﻬﺎ‪.‬ﻳﻤﻜﻦ رؤﻳ ﺔ ﻣﻌﻠﻤﺎ ت اﻟﺤﺎﻻ ت‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘ ﺔ واﻟﻤﻌﻠﻤﺎ ت اﻟﻤﺮ‬
‫ﺑ‬‫ﺛﺎ‬‫ﺘﻮي ﻛﻞ رﻗﻢ ﻋﲆﺗ ﺴﻤﻴ ﺔ‬
‫ﺑﻴ ﺔﺗﻌﻤﻞ ‪ ،‬ﺣﻴ ﺚﻳﺤ‬
‫ﺒﺎ‬
‫ﺘ ﻲ ﻋﺸﺮة ﺣﺎﻟ ﺔ ﺿ‬
‫ﺛﻨ‬‫ﺑﻴ ﺔ ﻋﲆ ا‬
‫ﺒﺎ‬
‫ﺘﻮي ﻛﻞ ﻣﺠﻤﻮﻋ ﺔ ﺿ‬
‫ﺗﺤ‬
‫ﺘﻌﻠﻴﻤﺎ ت ﻣﻘﺎرﻧ ﺔ‬
‫ﺘﻠﻔ ﺔ ﻟ‬ ‫ﺘﺨﺪم ﻛﻞ ﻣﻦ ‪cmpcov‬و ‪cmpcovlib‬و ‪ً cmplog‬‬
‫ﻃﺮﻗﺎ ﻣﺨ‬ ‫ﺗﺴ‬‫ﺛﺎﺋﻖ ‪AFL ++.‬‬ ‫ﺘﻴﺎر ﻫﺎ وﻓ ًﻘﺎ ﻟ‬
‫ﺘﻮﺟﻴﻬﺎ ت و‬ ‫ﺗﻢ اﺧ‬
‫ﺘﻠﻔ ﺔ ﻓ ﻲ اﻟﺠﺪول ‪5.1‬و‬
‫اﻟﻤﺨ‬
‫ﺋﻴ ﺴ ﻲ ‪،‬ﺗﻌﻤﻞ ﺟﻤﻴﻊ اﻟﺰﻳﺠﺎ ت‬
‫ﺜﻨﺎء اﻟﺮ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﺎﻟﻔﺮوع اﻟﻔﺎﺷﻠ ﺔ‪.‬‬‫اﻷﺟﻬﺰة‪.‬ﻳﻤﻜﻦ أنﻳ ﺴﺎﻋﺪ ذﻟﻚ ﻓ ﻲﺗﺸﻮﻳ ﺶﺗﻨ ﺴﻴﻘﺎ ت اﻹدﺧﺎل اﻟﻤﻌﻘﺪة ‪ ،‬ﻣﻦ ﺧﻼل ﺟﻌﻞ ‪AFL ++‬ﻋﲆ دراﻳ ﺔ‬
‫ﺒ ًﻴﺎ ‪ ،‬ﻧﻈ ﺮًاﻷن ﻛﻞ ﺣﺎﻟ ﺔﻳﺠ ﺐ أنﺗﺸﻮ ش‬
‫ﺑ ﺴﻬﻮﻟ ﺔ ﻧ ﺴ‬‫ﺘﻌﺪدة‬
‫ﺒﺮ ﻧﻮى ﻣ‬
‫ﺘﻮزﻳﻊ اﻟﻐﻤﻮض ﻋ‬
‫ﺑ‬‫ﺑﺸﻜﻞ ﻋﺸﻮاﺋ ﻲ‪.‬ﻳ ﺴﻤﺢ ذﻟﻚ‬‫ﺘﺤﻮل‬
‫اﻷﺧﺮى ﻓ ﻲ اﻟﻮﺿﻊ ﻏﻴﺮ اﻟﻘﻄﻌ ﻲ ‪ ،‬ﻟﺬا ﻓﻬ ﻲﺗ‬
‫ﺋﻴ ﺴ ﻲ ﻓ ﻲ اﻟﻮﺿﻊ‬
‫ﺘﻐﻄﻴ ﺔ اﻟﺠﺪﻳﺪة ‪-‬ﻣﻦ ﺣﻴﻦﻵﺧﺮ‪.‬ﻳﺪﻳﺮ اﻟﺮ‬
‫ﺗﻠﻚ ذا ت اﻟ‬
‫ﺘﻤﺎم ‪-‬‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﻢ ﻣﺰاﻣﻨ ﺔ اﻟﻤﺪﺧﻼ ت اﻟﻤ‬
‫ﺘﻠﻔ ﺔ‪ .‬ﻟﺪﻣﺞ ﺟﻬﻮد اﻟﺤﺎﻻ ت اﻟﻔﺮدﻳ ﺔ ‪،‬ﺗ‬
‫ﻋﲆ اﻟﻤﺪﺧﻼ ت اﻟﻤﺨ‬
‫ﺗﻨﺎ ‪،‬ﻷن ]‪QASan [7‬ﻻﻳﻌﻤﻞ ﻣﻊ وﺣﺪة ‪kernel‬اﻟﻤﻮﺻﻮﻓ ﺔ ﻓ ﻲ اﻟﻘ ﺴﻢ‬
‫ﺒﺎرا‬
‫ﺘ‬‫ﺜﺎل ‪2 ، qasan ،‬ﻻﻳﻌﻤﻞ ﻓ ﻲ اﺧ‬
‫ﺒﻌﺾ اﻟﻄﻔﺮا ت اﻹﺿﺎﻓﻴ ﺔ‪ .‬اﻟﻤ‬
‫ﺑ‬‫اﻟﻘﻄﻌ ﻲ ‪،‬ﻷن ﻫﺬاﻳ ﺴﻤﺢ‬
‫ﺛﺎﺋﻖ ‪AFL ++ [1].‬‬
‫ﺘﻔﺎﺻﻴﻞ ﺣﻮل ﻣﺎ ﻫﻴ ﺔ اﻟﻤﻌﻠﻤﺎ ت ‪ ،‬راﺟﻊ و‬
‫‪5.6.2.‬ﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬

‫‪#‬ﻣﻠﺼﻖ‬ ‫ﺣﺪود‬

‫رﺋﻴ‪0‬‬
‫ﺴﻲ‬ ‫م‬
‫ﻛﻤ‪1‬‬
‫ﺒﻜﻮف‬ ‫‪AFL COMPCOV LEVEL = 2 -c 0 -S‬‬
‫‪2‬‬ ‫‪LEVEL = 2 AFL PRELOAD‬‬ ‫‪= libcmpcov.so‬‬
‫‪ cmpcovlib‬س‬ ‫‪-S -cfuzzer5.‬‬
‫‪cmplog 5-11‬‬ ‫‪0 -l AT -S‬‬ ‫ﺘﺨﺪام‬
‫‪. . 11-‬‬ ‫ﺳﺐ‬
‫ازﻏ‬
‫‪3‬‬ ‫‪AFL QASAN = 1 -S AFL COMPCOV‬‬
‫‪4‬‬

‫ﺗﻬﺎ‪.‬‬
‫ﺘﺸﻮﻳ ﺶ وﻣﻌﺎﻣﻼ‬
‫اﻟﺠﺪول ‪5.1:‬ﺣﺎﻻ ت اﻟ‬

‫ﺘﺤﺪﻳﺪ ‪،‬‬
‫ﺘﻠﻔ ﺔ ﻟ ﺴﺤ ﺐ ‪QEMU‬اﻟﻌﺎدي‪ .‬ﻋﲆ وﺟﻪ اﻟ‬
‫ﺘﻮي ﻋﲆ إﺿﺎﻓﺎ ت ﻣﺨ‬
‫ﻣﺨﺼﺼﺎ ﻣﻦ ‪QEMU‬ﻳﺤ‬
‫ً‬ ‫ﺘﺨﺪم ‪AFL ++‬إﺻﺪا ًرا‬
‫ﺜﻨﺎﺋ ﻲ ﻓﻘﻂ ‪،‬ﻳ ﺴ‬
‫ﺘﺸﻮﻳ ﺶ اﻟ‬
‫ﺘﻤﻜﻴﻦ اﻟ‬
‫ﻟ‬
‫ﺗﺮﻛﺰ‬
‫ﺘﺪﻋﺎءا ت ﻧﻈﺎم إﱃ اﻟﻨﻮاة‪ .‬ﻣﻌﻈﻢ إﺿﺎﻓﺎ ت ‪AFL ++‬ﻣﻮﺟﻮدة داﺧﻞ ‪JIT‬و‬
‫ﺘﻌﻠﻴﻤﺎ ت وﻧﻘﻞ أي اﺳ‬
‫ﺘﺨﺪم ‪QEMU ،‬واﻟﺬيﻳﻌﻤﻞ ﻋﻦ ﻃﺮﻳﻖﺗﻮﺟﻴﻪ اﻟ‬
‫ﺘﺨﺪم وﺿﻊ ﻣ ﺴ‬
‫ﻳﺴ‬
‫ﺘﻬﺎ‪.‬‬
‫ﺘﻢ ﻣﻘﺎرﻧ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ وﻣﺎﻳ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻬﺎ ‪ ،‬وﻣﻘﺎرﻧ ﺔ اﻟ‬
‫ﺘﻢ ﺿﺮ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ اﻟ‬
‫ﺘﻀﻤﻦ ذﻟﻚﺗﺤﺪﻳﺪ اﻟﻜ‬
‫ﻋﲆ إﺿﺎﻓ ﺔ اﻷﺟﻬﺰة‪.‬ﻳ‬

‫ﺒﺎ ت‬
‫ﺜ‬‫‪5.4.1 AFL ++‬وﺿﻊ اﻟ‬

‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺘ ﺴﺮﻳﻊ ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺘﻨﻮﻋ ﺔ ﻣﻦ اﻟﺤﻴﻞ ﻟ‬
‫ﺜ ﺔ ﻣﺠﻤﻮﻋ ﺔ ﻣ‬
‫ﺒﻴﻪ اﻟﺤﺪﻳ‬
‫ﺘﻨ‬ ‫ﺑ ًﻘﺎ ‪،‬ﺗ ﺴ‬
‫ﺘﺨﺪم أﺟﻬﺰة اﻟ‬ ‫ﻛﻤﺎ ذﻛﺮﻧﺎﺳﺎ‬
‫ﺜﻨﺎﺋ ﻲ ﻓﻘﻂ ﻣﻦ ‪AFL ++.‬‬
‫ﺘﺎﻟ ﻲ ﻓ ﻲ اﻹﺻﺪار اﻟ‬
‫ﺘﻤﺮ ﻓ ﻲ ‪AFL ++.‬ﻳﻌﻤﻞ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫إﺣﺪى ﻫﺬه اﻟﺤﻴﻞﺗ ﺴﻤﻰ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬

‫ﺑﻬﺬا اﻟﺤﺠﻢ ﻓ ﻲ اﻟﻮاﻗﻊ‪.‬‬‫ﺒﺮ ﻣﻦ ‪31 ،‬و ﻫ ﻲ ﻟﻴ ﺴ ﺖ‬


‫‪24‬ﻋﻼﻣ ﺔ أﻛ‬
‫‪Machine Translated by Google‬‬

‫‪5.5 IMG4 FUZZING‬‬ ‫‪25‬‬

‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺘﻌﻴﻴﻦ ﻣﺆﺷﺮ اﻟ‬
‫ﺑ‬‫ﺒ ﺐﺗﻌﻄﻞ ‪،‬ﻳﻘﻮم ‪AFL ++‬‬
‫ﺑﺴ‬‫ﺒﻴﻌ ﻲ أو‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺘﻬ ﻲﺗﺸﻐﻴﻞ ﻏﺎﻣﺾ ‪-‬إﻣﺎ‬
‫ﺑﺎﻟﻌﻨﻮان اﻟﺪاﺋﻢ‪ .‬ﻋﻨﺪﻣﺎﻳﻨ‬‫ﻧﺤﻦ ﻧﻘﺪم ‪AFL ++‬ﻣﻊ ﻣﺎﻳ ﺴﻤﻰ‬
‫ﺑﺪء اﻟﻌﻤﻠﻴ ﺔ‬‫ﺜﻴﺮ ﻣﻦ إﻋﺎدة‬
‫ﺑﻜ‬‫ﺜﺮ ﻣﻼءﻣ ﺔ‬
‫ﺜﻨﺎﺋ ﻲ ‪ ،‬و ﻫﻮ أﻣﺮ أﻛ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺎ ‪،‬ﻳﺆدي ﻫﺬا إﱃ إﻧﺸﺎء ﺣﻠﻘ ﺔ و ﻫﻤﻴ ﺔ داﺧﻞ اﻟﻨﻈﺎم اﻟ‬‫ﺑﺪﻻ ً ﻣﻦ إﻧﻬﺎء ‪QEMU‬ﻓﻌﻠ ًﻴﺎ‪.‬‬‫ﻋﲆ ﻫﺬا اﻟﻌﻨﻮان ‪،‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻷوﱃ ﻟﻠﻮﻇﻴﻔ ﺔ اﻟﻤﺮاد‬
‫ﺒﻂ ﻫﺬا ﻋﲆ اﻟ‬
‫ﺑ ﺖ‪ .‬ﻋﺎدة ‪،‬ﻳﺠ ﺐ ﺿ‬
‫ﺜﺎ‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟﻮﺿﻊ اﻟ‬
‫ﺘﻜﺮار اﻟﻤ ﺴ‬ ‫ﺘﺸﻮﻳ ﺶ اﻟﻔﺮدي أ ً‬
‫ﻳﻀﺎ اﻟ‬ ‫ُﻄﻠﻖ ﻋﲆﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﻴﺠ ﺔ ﻟﻬﺬا ‪،‬ﻳ‬
‫ﺘﻤﺮار‪ .‬ﻧ‬
‫ﺑﺎﺳ‬
‫ﺗﺸﻮﻳﺸﻬﺎ ‪ ،‬و ﻫﺬا ﻫﻮ اﻟﺤﺎل أ ً‬
‫ﻳﻀﺎ ﻣﻊ ‪emmutaler.‬‬

‫ﺑﺖ ‪،‬‬
‫ﺜﺎ‬
‫ﺒﺮ ‪stdin.‬ﻓ ﻲ ﺣﻴﻦ أن ﻫﺬا ﻻﻳﺰالﻳﻌﻤﻞ ﻓ ﻲ اﻟﻮﺿﻊ اﻟ‬
‫ﺘﺸﻐﻴﻞ ﻏﺎﻣﺾ ﻋ‬
‫ﺒﺎر اﻟﺠﺪﻳﺪة ﻟ‬
‫ﺘ‬‫ﺘﺨﺪام ‪AFL ++ ،‬ﻳﻮﻓﺮ ‪AFL ++‬ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺑﺎﺳ‬‫ﺘﺸﻮﻳ ﺶ‬ ‫ً‬
‫ﻋﺎدة ﻋﻨﺪ اﻟ‬
‫ﺑﻪ ﺣﺎﻟ ًﻴﺎ ﻣﻦ‬‫ﺘﻤﺪ ﻫﺬا ﻋﲆ ﻣﺎ ﻧﺸﻌﺮ‬
‫ﺒﺎﺷﺮة‪.‬ﻳﻌ‬
‫ﺒﺎر اﻟﺠﺪﻳﺪة إﱃ اﻟﻤﻮﻗﻊ اﻟﺼﺤﻴﺢ ﻣ‬
‫ﺘ‬‫ﺘ ﻲﺗﻨ ﺴﺦ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺒ ﺔ ﻣﻨﺎ ‪ ،‬واﻟ‬
‫ﺘ‬‫ﺘﺤﻤﻴﻞ ﻣﻜ‬
‫ﺑ‬‫ﺜﺮ ‪،‬ﻳﻘﻮم ‪AFL ++‬‬
‫ﺘ ﺴﺮﻳﻊ اﻟﻌﻤﻠﻴ ﺔ أﻛ‬
‫ﻟ‬
‫ﺘﻨﻔﻴﺬ اﻷول‬
‫ﺒﻞ اﻟ‬ ‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳﺤﻔﻆ ‪AFL ++‬أ ً‬
‫ﻳﻀﺎ ﺣﺎﻟ ﺔ اﻟ ﺴﺠﻼ ت واﻟﺬاﻛﺮة ﻗ‬ ‫ﺒﺪأ ﻣﻦ اﻟﻌﻨﻮان اﻟﺪاﺋﻢ‪.‬‬
‫ﺘ ﻲﺗ‬
‫ﻏﻤﻮض ‪ ،‬وﻟﻜﻨﻪ ﻋﺎدة ﻣﺎﻳﻜﻮن إﺣﺪى ﺣﺠﺞ اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺘﺎج اﻷﻋﻄﺎل‪.‬‬
‫ﺘﻤﺮ‪ .‬ﻫﺬاﻳﻀﻤﻦ أن ﻛﻞﺗﻜﺮار ﻟﻪ ﻧﻔ ﺲ اﻟﺤﺎﻟ ﺔ اﻷوﻟﻴ ﺔ وﻳﺠ ﺐ أنﻳ ﺴﻬﻞ إﻋﺎدة إﻧ‬
‫ﺗﻪ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ ﻛﻞﺗﻜﺮار ﻣ ﺴ‬
‫ﺘﻌﺎد‬
‫ﻟﻠﻌﻨﻮان اﻟﺪاﺋﻢ واﺳ‬

‫‪5.4.2‬إﺻﺪارا ت ‪AFL ++‬و ‪QEMU‬‬


‫ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﻟﻢﻳﻌﻤﻞ ‪AFL ++‬ﺧﺎرج اﻟﺼﻨﺪوق وواﺟﻬﻨﺎ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﺸﻜﻼ ت ‪،‬ﺳﻮاء ﻓ ﻲ ﻧﻬﺎﻳ ﺔ ‪QEMU‬أو ‪AFL ++.‬‬

‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﺑﻖ اﻟﻌﻨﻮان اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ تﻳﻄﺎ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻣﺆﺷﺮ اﻟ‬
‫ﺑﺎﻟ‬
‫ﺑﻪ ﺧﻄﺄ واﺣﺪﺗﻠﻮ اﻵﺧﺮ‪ .‬ﻗﺎم ‪AFL ++‬‬
‫ﺘﻤﺮ ﻓ ﻲ ‪aarch64 ،‬ﻧﻈ ﺮًاﻷن ‪AFL ++‬‬
‫ﺗﻢ ﻛ ﺴﺮ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺘﻢ ﺣﻔﻆ ﻣﺆﺷﺮ اﻹﻃﺎر أو‬
‫ﺘﺎﻟ ﻲ ﻟﻦﻳ‬
‫ﺑﺎﻟ‬
‫ﺜﺎﻧﻴ ﺔ ‪ ،‬و‬
‫ﺘﻌﻠﻴﻤ ﺔ اﻟ‬
‫ﺘﻤﺮ ﻓﻘﻂ ﻋﻨﺪ اﻟ‬
‫ﺘﻜﺮار اﻟﻤ ﺴ‬
‫ﺒﺪأ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟﺤﺎﻟﻴ ﺔ‪ .‬ﻟﺬﻟﻚ ‪،‬ﺳﻴ‬
‫ﺑﺎﻟﻔﻌﻞ إﱃ اﻟ‬‫ﺘﻌﻠﻴﻤﺎ ت وﻳﺸﻴﺮ‬
‫ﺒﻞ زﻳﺎدة ﻣﺆﺷﺮ اﻟ‬
‫ﻗ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻋﲆ ‪aarch64‬أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺑ ﺖ اﻵن‬
‫ﺜﺎ‬
‫ﺑ ﺴﻬﻮﻟ ﺔ وﻳﻌﻤﻞ ‪AFL ++‬ﻓ ﻲ اﻟﻮﺿﻊ اﻟ‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻓ ﻲ اﻟﻤﻜﺪس‪ .‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪،‬ﺗﻢ إﺻﻼح ذﻟﻚ‬‫ﺒﺎط‬
‫ﺗ‬‫ﺳﺠﻞ اﻻر‬

‫ﺑـ ‪QEMU‬‬‫ﺘﻌﻠﻖ‬
‫ﺛﻨﺎءﺗﻄﻮﻳﺮ ‪emmutaler.‬ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﻻﺗﺰال ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ أﺧﺮىﺗ‬
‫ﺘﻬﺎ ﻣﻊ ‪QEMU‬أ‬
‫ﺘ ﻲﺗﻤ ﺖ ﻣﻮاﺟﻬ‬
‫ﻳﺼﻒ اﻟﻘ ﺴﻢ ‪5.2.2.1‬إﺣﺪى اﻟﻤﺸﻜﻼ ت اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ ‪25.‬‬
‫ﺑﻌﻨﻮان "ﻳﺠ ﺐ ﻋﺪم اﻟﻮﺻﻮل إﱃ اﻟﻜﻮد" داﺧﻞ ﺣﻠﻘ ﺔ وﺣﺪة اﻟﻤﻌﺎﻟﺠ ﺔ اﻟﻤﺮﻛﺰﻳ ﺔ اﻟﺮ‬‫دون ﺣﻞ‪ .‬ﻧﻈ ﺮًا ﻟﻈﺮوف ﻏﻴﺮ ﻣﻌﺮوﻓ ﺔ ‪،‬ﻳﻤﻜﻦ ﻟـ ‪QEMU‬اﻟﻮﺻﻮل إﱃﺗﺄﻛﻴﺪ‬
‫ﺘﻢ‬ ‫ﺘﻘﺎط أﺟﺰاء ﻣﻦ ‪libc.‬وﻣﻊ ذﻟﻚ ‪،‬ﻳﻤﻜﻦ أنﻳﺤﺪ ث ﻫﺬا أﺣﻴﺎﻧًﺎ أ‬
‫ﺛﻨﺎءﺗﺸﻮﻳ ﺶ ‪USB.‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪ ،‬ﻟﻦﻳ‬ ‫ﺑﻬﺎم ‪IMG4 ،‬ﻋﻤﻠﻨﺎ ﻋﲆ ﺣﻞ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔ ‪ ،‬ﻣﻦ ﺧﻼل اﻟ‬
‫ﻹ‬
‫ﺑﺼﻤ ﺖ‪.‬‬‫ﺘﺠﺎ ﻫﻠﻪ‬
‫ﺘﺎﻟ ﻲ ﻧ‬
‫ﺑﺎﻟ‬
‫ﺑﻮاﺳﻄ ﺔ ‪AFL ++ ،‬و‬‫ﺑﻪ ﻋﲆ أﻧﻪﺗﻌﻄﻞ‬
‫ﺘ ﺴﺎ‬
‫اﺣ‬

‫‪5.5‬إزﻋﺎج ‪IMG4‬‬

‫ﺒﺎﺷﺮ‪.‬ﻳﻘﺮأ ﻣﻠﻒ إدﺧﺎلﻳﺼﻞ ﺣﺠﻤﻪ إﱃ‬


‫ﺑﻨﺎ واﺿﺢ وﻣ‬‫ﺒ ًﻴﺎ‪ .‬ﻛﻮد ‪C‬اﻟﺨﺎص‬ ‫ً‬
‫ﺳﻬﻼ ﻧ ﺴ‬‫ﺘﻔﺎﻋﻞ ﻣﻊ ‪SecureROM ،‬ﻛﺎن إﻋﺪادﺗﺸﻮﻳ ﺶ ‪IMG4‬‬
‫ﺘﻬﺎء ﻣﻦ أدوا ت اﻟ‬
‫ﺑﻤﺠﺮد اﻻﻧ‬
‫ﺘﻬﺎ اﻟﻤﺮﺟﻌ ﺔ‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻗﻴﻤ‬
‫ﺘﺸﻐﻴﻠﻬﺎ واﻟ‬
‫ﺑ‬‫ﺑﻨﺠﺎح ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻘﻮم‬‫ﺘﺤﻤﻴﻞ اﻟﺼﻮر ﻣﻦ ‪SecureROM.‬إذاﺗﻢﺗﺤﻤﻴﻞ اﻟﺼﻮرة‬
‫ﺒﺎﺷﺮة ﻟ‬
‫ﺑﺎﻳ ﺖ وﻳﻤﺮره ﻣ‬
‫‪0x10000‬‬
‫ﺘﻤﺎدًا ﻋﲆ ﻗﻴﻤ ﺔ اﻹرﺟﺎع‪.‬‬
‫ﺒﻴﻌ ﻲ اﻋ‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺘﻤﺮ‬
‫ﺒﻂ أو ﻧ ﺴ‬
‫ﻓ ﻲ اﻟﻘ ﺴﻢ ‪5.3 ،‬إﻣﺎ أن ﻧﺤ‬

‫ﺑﻌﺾ أﺟﺰاء‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪ ،‬ﻧﻈ ﺮًاﻷن‬


‫ﺘﺎج إﱃ إﻋﺪاد ﻛﻮﻣ ﺔ ‪SecureROM‬‬
‫ﺘﻌﺪادا ت‪ .‬ﻧﺤ‬
‫ﺒﻌﺾ اﻻﺳ‬
‫ﺑ‬ ‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ أ ً‬
‫ﻳﻀﺎ اﻟﻘﻴﺎم‬ ‫ﺘﻤﻜﻦ ﻣﻦﺗﺤﻤﻴﻞ اﻟﺼﻮرة ‪،‬ﻳ‬
‫ﺒﻞ أن ﻧ‬
‫ﻗ‬
‫ً‬
‫ﺒﺎﺷﺮة‪ .‬إﻧﻬﺎ‬
‫ﺘﺨﺪام وﻇﺎﺋﻒﺗﻬﻴﺌ ﺔ اﻟﻜﻮﻣ ﺔ اﻟﻌﺎدﻳ ﺔ داﺧﻞ ‪SecureROM‬ﻣ‬
‫ﺒﺎﺷﺮ ﻣﺮة أﺧﺮى ‪ ،‬ﺣﻴ ﺚﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﻤﺪ ﻋﲆﺗﻨﻔﻴﺬ ﻛﻮﻣ ﺔ ﻋﺎﻣﻠ ﺔ‪ .‬ﻫﺬا واﺿﺢ وﻣ‬
‫ﺗﺤﻠﻴﻞ اﻟﺼﻮرﺗﻌ‬
‫ﺑﺸﻜﻞ‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‬‫ﺘﻢﺗﺤﻤﻴﻞ ﻣﻠﻔﺎ ت اﻹدﺧﺎل اﻟﻤﻮﻗﻌ ﺔ‬
‫ﺑﺤﻴ ﺚﻳ‬‫ﺑﻌﺾ اﻟﺼﻤﺎﻣﺎ ت‬ ‫ﺘﺎج أ ً‬
‫ﻳﻀﺎ إﱃ إﻋﺪاد‬ ‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻧﺤ‬‫ﺒﻴ ﺮًا ﻣﻦ اﻟﺬاﻛﺮة‪.‬‬
‫ﺘﻄﻠ ﺐ ﺟﺰءًا ﻛ‬
‫ﻓﻘﻂﺗ‬
‫ً‬
‫ﺒﺎﺷﺮة‬
‫ﺑ ﺔ إﻟﻴﻬﺎ ﻣ‬
‫ﺘﺎ‬
‫ﺘﺎﻟ ﻲﻳﻤﻜﻨﻨﺎ اﻟﻜ‬
‫ﺑﺎﻟ‬
‫ﺒﺎﺷ ًﺮا ﻣﺮة أﺧﺮى ‪ ،‬ﻧﻈ ًﺮاﻷن اﻟﺼﻤﺎﻣﺎ تﺗﻢﺗﻌﻴﻴﻨﻬﺎ ﻟﻠﺬاﻛﺮة ‪ ،‬و‬
‫ﺻﺤﻴﺢ‪ .‬ﻛﺎن ﻫﺬا واﺿﺤًﺎ وﻣ‬

‫‪25‬ﻣﻦ اﻟﻮاﺿﺢ أﻧﻪ ﻣﻦ اﻟﻤﻤﻜﻦ اﻟﻮﺻﻮل إﱃ ﻫﺬا‪.‬‬


‫‪Machine Translated by Google‬‬

‫ﺘﺠﻤﻴﺪ‬
‫ﺗﺤ ﺴﻴﻦﺳﺮﻋ ﺔ اﻟ‬
‫‪5.6‬‬ ‫‪26‬‬

‫ﺘﻤﺪ ﻋﻠﻴﻪ‪.‬‬
‫ﺘﻬﺎ اﻟﺼﺤﻴﺤ ﺔ‪ .‬ﻋﲆ ﺣﺪ ﻋﻠﻤﻨﺎ ‪ ،‬ﻫﺬا ﻫﻮﺗﺤﻤﻴﻞ ﺻﻮرة اﻟﺤﺎﻟ ﺔ اﻟﻌﺎﻟﻤﻴ ﺔ اﻟﻮﺣﻴﺪ اﻟﺬيﻳﻌ‬
‫ﺒﻄﻬﺎ ﻋﲆ ﻗﻴﻤ‬
‫وﺿ‬

‫ﺑﺎﻟﻮﺻﻮل ﺧﺎرج اﻟﺤﺪود‬‫‪5.5.1‬اﻟ ﺴﻤﺎح‬

‫ﺜﺮ‬
‫ﺜﻨﺎﺋﻴ ﺔ ﻋﲆ اﻹﻃﻼق‪.‬ﻳﻮﺟﺪﺗﻔﺼﻴﻞ أﻛ‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻤﻠﻔﺎ ت اﻟ‬
‫ﺒﺮ اﻟﻜ‬
‫ﺘ‬‫ﺘﺎﻟ ﻲ ﻟﻢﺗﺨ‬
‫ﺑﺎﻟ‬
‫ﺒﻜ ﺮًا ﺟﺪًا ‪ ،‬و‬
‫ﺘﺤﻠﻴﻞ ﻣ‬
‫ﺒﺎر ﻓﺸﻠ ﺖ ﻓ ﻲ اﻟ‬
‫ﺘ‬‫ﺜﻴﺮ ﻣﻦ ﺣﺎﻻ ت اﻻﺧ‬
‫ﺘﺸﻮﻳ ﺶ ‪ ،‬ﻻﺣﻈﻨﺎ أن اﻟﻜ‬
‫ﺛﻨﺎء اﻟ‬
‫أ‬
‫ﺑﻨﺎ‪.‬‬‫ﺒﻴﻌ ﺔﺗﻨ ﺴﻴﻖ اﻟﻤﺪﺧﻼ ت اﻟﺨﺎص‬
‫ﺑﻬﺬه اﻟ ﺴﺮﻋ ﺔ ‪ ،‬ﻫ ﻲ ﻃ‬ ‫ﺗﻔﺼﻴ ﻼ ً ﻟﻬﺬا اﻷﻣﺮ ﻓ ﻲ اﻟﻔﺼﻞ ‪6 ،‬ﻟﻜﻨﻨﺎ ﻧﻘﺪم ﻓﻜﺮة ﻫﻨﺎ ﻟﻤﻜﺎﻓﺤ ﺔ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔ‪ .‬اﻟﻔﻜﺮة اﻷﺳﺎﺳﻴ ﺔ ﻟ ﺴ‬
‫ﺒ ﺐ ﻓﺸﻠﻬﺎ‬
‫ﺒﻴﺮة‪ .‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪ ،‬ﻣﻦ‬
‫ﺛﻴﺮا ت ﻛ‬
‫ﺘﻐﻴﻴﺮ اﻟﻄﻔﻴﻒ ﻓ ﻲ ﺣﻘﻞ اﻟﻄﻮلﻳﻤﻜﻦ أنﻳﻜﻮن ﻟﻪﺗﺄ‬
‫ﺘﻐﻴ ًﺮا ‪ ،‬ﻓﺈن اﻟ‬
‫ﺘﻤﺪ ﻋﲆ ﻗﻴﻤ ﺔ ﻃﻮل اﻟﻌﻼﻣ ﺔ ﻣﻊ ﻛﻮن اﻟﻄﻮل ﻣ‬
‫ﻧﻈ ًﺮاﻷن ‪DER‬ﻳﻌ‬
‫ﺗﻢ‬
‫ﺘﺤﺪﻳﺪ ﻣﻦ أن أي ﻋﻨﺼﺮ ‪DER‬‬
‫ﺘﺄﻛﺪ ‪SecureROM‬ﻋﲆ وﺟﻪ اﻟ‬
‫ﺑﻪ‪.‬ﻳ‬‫ﺜﻴﺮ ﻣﻤﺎ ﻫﻮ ﻣ ﺴﻤﻮح‬
‫ﺑﻜ‬‫ﺒﺮ‬
‫ﺒ ﺐ ﻓ ﻲ أنﻳﻜﻮن اﻟﻄﻮل أﻛ‬
‫ﺘﺴ‬‫اﻟ ﺴﻬﻞ ﺟﺪًا أنﻳﻨﻘﻠ ﺐ اﻟﻤﺼﻬﺮ ﻗﻠﻴ ﻼ ً وﻳ‬
‫ﺧﺎﺻﺎ ﻣﻦ‬
‫ً‬ ‫ﺘﺤﻘﻖ ﻫﺬه‪ .‬ﻟﺬﻟﻚ ‪ ،‬أﻧﺸﺄﻧﺎ إﺻﺪا ًرا‬
‫ﺘﺠﺎ ﻫﻞ ﻋﻤﻠﻴﺎ ت اﻟ‬ ‫ﺘﺠﺎوز اﻟﻌﻨﺼﺮ اﻷﺻﻞ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن ﺟﻤﻴﻊ وﻇﺎﺋﻒﺗﺤﻠﻴﻞ ‪DER‬ﻟﻬﺎ أ ً‬
‫ﻳﻀﺎ ﻣﻌﻠﻤ ﺔ ﻣﻔﻴﺪة ﻟ‬ ‫ﺗﺤﻠﻴﻠﻪ ﻻﻳ‬
‫ﺘﺨﺪام ﻫﺬا‬
‫ﺑﺎﺳ‬‫ﺘﺸﻮﻳ ﺶ اﻟﺬيﺗﻢ إﺟﺮاؤه‬
‫ﺘﻢﺗ ﺴﻤﻴ ﺔ اﻟ‬
‫ﺋﻤﺎ‪ .‬ﻓ ﻲ اﻟﻔﺼﻞ اﻟ ﺴﺎدس ‪،‬ﺳﻴ‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟﺤﺪود دا ً‬
‫ﺘﺠﺎ ﻫﻞ ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺘﺼﺤﻴﺢ وﻇﺎﺋﻒ ‪DER‬ﻟ‬
‫ﺑ‬‫‪SecureROM‬ﻳﻘﻮم‬
‫اﻹﺻﺪار ﻋﲆ أﻧﻪ ﺧﺎرج اﻟﺤﺪود‪.‬‬

‫ﺘﺸﻮﻳ ﺶ‬
‫ﺗﺤ ﺴﻴﻦﺳﺮﻋ ﺔ اﻟ‬
‫‪5.6‬‬

‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺜﻨﺎﺋ ﻲ‬
‫ﺘﺠﻤﻴﻊ اﻟﻤﻠﻒ اﻟ‬
‫ﺑ‬‫ﺜﺎل ‪ ،‬ﻗﻤﻨﺎ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺛﻨﺎﺋ ﻲ‪ .‬ﻋﲆﺳ‬‫ﺘ ﺴﺮﻳﻊ‬
‫ﺘﺨﺬ ﻫﺎ اﻟﻤﺮء ﻋﺎدة ﻟ‬
‫ﺘ ﻲ ﻗﺪﻳ‬
‫ﺗﺨﺬﻧﺎ ﻧﻔ ﺲ اﻹﺟﺮاءا ت اﻟ‬
‫ﻟﻠﺤﺼﻮل ﻋﲆﺳﺮﻋ ﺔﺗﺸﻮﻳ ﺶ أوﻟﻴ ﺔ ﺟﻴﺪة ‪ ،‬ا‬
‫ﺘﺸﻮﻳ ﺶ ﻗﺪر اﻹﻣﻜﺎن‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ‬
‫ﺘ ﺴﺮﻳﻊ اﻟ‬
‫ﺑﺪﻣﺞ ﺧﻄﻮا ت إﺿﺎﻓﻴ ﺔ ﻟ‬‫ﺘﺸﻮﻳ ﺶ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻗﻤﻨﺎ‬
‫ﺒﻨﻴﺎ ت اﻟﻤﺼﻤﻤ ﺔ ﻟﻠ‬
‫ﺘ ﺴﺠﻴﻞ إﱃ اﻟﺤﺪ اﻷدﻧﻰ ﻓ ﻲ اﻟ‬
‫‪-O3‬وواﺻﻠﻨﺎ اﻟ‬
‫ﺛﻴﺮه ﻓ ﻲ اﻟﻘ ﺴﻢ ‪6.5.‬‬
‫ﺘﺄ‬
‫ﺘﻔﺼﻴﻠﻴ ﺔ ﻟ‬
‫ﺘﺎﺋﺞ اﻟ‬
‫ﺘﻢﺗﻘﺪﻳﻢ اﻟﻨ‬
‫ﺘﺸﻮﻳ ﺶ‪.‬ﺳﻴ‬
‫ﺒﻴﺮ ﻋﲆ أداء اﻟ‬
‫ﺛﻴﺮ ﻛ‬
‫ﺘﻤﺮﺗﺄ‬
‫ﻓ ﻲ اﻟﻘ ﺴﻢ ‪5.4.1 ،‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻟﻠﻮﺿﻊ اﻟﻤ ﺴ‬

‫ﺗﺤﺪﻳﺪ ﻣﺸﺎﻛﻞ اﻟ ﺴﺮﻋ ﺔ‬


‫‪5.6.1‬‬

‫ﺘﺤﺪﻳﺪ‬
‫ﺑ‬‫ﺘﻔﺼﻴﻠﻴ ﺔ ﻓ ﻲ أﻗ ﺴﺎم ﻻﺣﻘ ﺔ ‪ ،‬ﻧﺼﻒ ﻛﻴﻒ ﻗﻤﻨﺎ‬
‫ﺒﻊ اﻟﻤﻘﺎرﻧﺎ ت اﻟ‬
‫ﺘ‬‫ﺑﻴﻨﻤﺎﺗ‬‫ﺘ ﻲ ﻻﺣﻈﻬﺎ اﻵﺧﺮون‪.‬‬
‫ﺑﺎﻟ ﺴﺮﻋ ﺔ اﻟ‬‫ﺘﻤﺮ ‪ ،‬ﻟﻢﻳﻜﻦ اﻟﻐﻤﻮض‬
‫ﺘﻰ ﻣﻊ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﺣ‬
‫ﺒﺮ ﻫﻨﺎ‪.‬‬
‫ﺘﺤﻘﻴﻖﺳﺮﻋ ﺔ أﻛ‬
‫ﻫﺬه اﻟﻤﺸﻜﻼ ت وﻣﺎ ﻓﻌﻠﻨﺎه ﻟ‬

‫ﺘﺤﻘﻖ‬
‫ﺒﻴﺮ ﻣﻦ اﻟﻮﻗ ﺖ ﻓ ﻲ اﻟﺤ ﺴﺎ ب واﻟ‬
‫ﺘﻢ إﻧﻔﺎق ﻗﺪر ﻛ‬
‫ﺘﻌﻠﻴﻤﺎ ت ‪PAC.‬ﻳ‬
‫ﺑ‬‫ﺘﻌﻠﻖ‬
‫ﺒﻘﻴ ﺔ‪ .‬أول ﻣﺎﻳﻨﻄﻠﻖ ﻓ ﻲ اﻟﻌﻴﻦﻳ‬
‫ﺘ‬‫ﺘﻨﺎﻗﺎ ت اﻟﻤ‬
‫ﺑ ﺴﺮﻋ ﺔ اﻻﺧ‬‫ﺘﺨﺪام اﻷداءﻳﻤﻜﻨﻨﺎ أن ﻧﺮى‬
‫ﺑﺎﺳ‬
‫ﺘﺸﻔﻴﺮ ﻫﺬه ﻓ ﻲ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﻣﻦﺗﻮاﻗﻴﻊ ﻣ ﺴﻮﻏﺎ ت اﻟﻮﺻﻮل اﻟﻤﺤﻤ ﻲ داﺧﻞ ﺟﺎﻣﻌ ﺔ ﻗﻄﺮ ﻟﻠﻄﻮارئ‪ .‬ﻫﺬا أﻣﺮ ﻣﻨﻄﻘ ﻲ ‪ ،‬ﻛﻤﺎ ﻫﻮ اﻟﺤﺎل ﻓ ﻲ رﻗﺎﺋﻖ ‪Apple‬اﻟﻔﻌﻠﻴ ﺔ ‪،‬ﺳﻴ‬
‫ﺜﻞ ‪QEMU.‬‬
‫ﺒﺮاﻣﺞ ﻣ‬
‫اﻷﺟﻬﺰة وﻟﻴ ﺲ ﻓ ﻲ اﻟ‬

‫ﺘﺤﻘﻖ ﻣﻨﻪ داﺧﻞ ‪QEMU.‬‬


‫ﺘﻮﻗﻴﻊ واﻟ‬
‫ﻛﺎن اﻟﺤﻞ اﻟ ﺴﻬﻞ ﻫﻨﺎ ﻫﻮﺗﺼﺤﻴﺢ إﻧﺸﺎء اﻟ‬
‫ﺑـ ‪nop.‬‬‫ﺑﻌﻀﻬﺎ‬‫ﺒﺪال‬
‫ﺘ‬‫ﺜﺮﺗﻌﻘﻴﺪًا ‪ ،‬ﺣﻴ ﺚ ﻻﻳﻤﻜﻦ اﺳ‬
‫ﻛﺎن ﻣﻦ اﻟﻤﻤﻜﻦ أنﻳﻜﻮنﺗﺼﺤﻴﺢ أيﺗﻌﻠﻴﻤﺎ ت ‪PAC‬داﺧﻞ ‪SecureROM‬أﻛ‬

‫ﺘﺸﻔﻨﺎ أنﺗﻨﻔﻴﺬ اﻟﻠﻘﻄﺎ ت ﻟﻠﻮﺿﻊ‬


‫ﺘﺤﻠﻴﻞ ‪ ،‬اﻛ‬
‫ﺑﻌﺪ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺒﺎ داﺧﻞ ‪memcpy.‬‬
‫ﺑﻌﺾ اﻟﺸ ﻲء‪.‬ﺗﻢ ﻗﻀﺎء ﻛﻞ اﻟﻮﻗ ﺖﺗﻘﺮﻳ ً‬‫ﺘﺎﻟ ﻲ ﻣﻔﺎﺟ ًﺌﺎ‬
‫ﺋﻴ ﺴ ﻲ اﻟ‬
‫ﺘﻨﺎق اﻟﺮ‬
‫ﻛﺎن اﻻﺧ‬
‫ﺘﻌﻴﺪ ﻫﺎ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ ﻛﻞ‬
‫ﺑ ﺔ وﻳ ﺴ‬
‫ﺘﺎ‬
‫ﺑﻠ ﺔ ﻟﻠﻜ‬
‫ﺘﻢ اﻹﻋﻼن ﻋﻨﻬﺎ ﻋﲆ أﻧﻬﺎ ﻗﺎ‬
‫ﺘﻘﻂ أي ﺻﻔﺤ ﺔﻳ‬
‫ﺘﻨﺎق‪ .‬ﻣﻦ ﺣﻴ ﺚ اﻟﺠﻮ ﻫﺮ ‪ ،‬ﻓﺈﻧﻪﻳﻠ‬
‫ﺋﻴ ﺴ ﻲ ﻟﻬﺬا اﻻﺧ‬
‫ﺒ ﺐ اﻟﺮ‬
‫ﺘﻤﺮ ﻟـ ‪AFL ++‬ﻛﺎن اﻟ ﺴ‬
‫اﻟﻤ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت و‬
‫ﺜﺎل ‪،‬ﺗﻌﺪ ﻛﻞ ﻣﻦ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺗﻪ )ﻋﲆﺳ‬
‫ﺑ ﺔ ﻓ ﻲ ﺣﺪ ذا‬
‫ﺘﺎ‬
‫ﺑﻠ ﺔ ﻟﻠﻜ‬
‫ﺒﻴﺮ ﺟﺪًا ﻣﻦ اﻟﺼﻔﺤﺎ ت اﻟﻘﺎ‬
‫ﺘﻮي ﻋﲆ ﻋﺪد ﻛ‬
‫ﺘﺼﺮ اﻷﻣﺮ ﻋﲆ أن ‪SecureROM‬ﻳﺤ‬
‫ﺘﻤﺮ‪ .‬ﻻﻳﻘ‬
‫ﺗﻜﺮار ﻣ ﺴ‬
‫ﺒﻞ ﻛﻞ‬
‫ﺑﺎﻳ ﺖ ﻣﻦ اﻟﺬاﻛﺮة ﻗ‬
‫ﺘﻘﻂ ﺣﻮاﻟ ﻲ ‪80‬ﻣﻴﻐﺎ‬
‫ﺜﻞ ‪IO.‬ﻓ ﻲ اﻟﻤﺠﻤﻮع ‪ ،‬ﻛﺎن ‪AFL ++‬ﻳﻠ‬
‫ﺜﺮ ﻣﻦ ﺻﻔﺤﺎ ت ﻛﺎﻓﻴ ﺔ ﻟﻤﻨﺎﻃﻖ ﺧﺎﺻ ﺔ ‪-‬ﻣ‬
‫ﺘﺨﺼﻴﺺ أﻛ‬
‫ﺑ‬‫ﺑﻞ ﻗﻤﻨﺎ‬‫ﺒﻴﺮة ﺟﺪًا( ‪،‬‬
‫‪bss‬ﻛ‬
‫ﺒﺤ ﺚ‬
‫ﺒﻴﺮ ﻣﻦ ‪libc‬ﻟﻤﻨﻊ اﻷﻋﻄﺎل‪ .‬ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ ﻛﺎن ﻋﻠﻴﻨﺎ اﻟ‬
‫ﺘﻘﺎط ﺟﺰء ﻛ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ اﻟ‬
‫ﺘﻘﺎط ﺻﻔﺤﺎ ت ﻣﻌﻴﻨ ﺔ ﻓﻘﻂ ‪ ،‬ﻻﻳﺰالﻳ‬
‫ﺘﻰ ﻋﻦ ﻃﺮﻳﻖﺗﻌﺪﻳﻞ ‪AFL ++‬ﻻﻟ‬
‫ﺘﻤﺮ‪ .‬ﺣ‬
‫ﺗﻜﺮار ﻣ ﺴ‬
‫ﺘ ﺴﺮﻳﻊ ‪AFL ++.‬‬
‫ﻋﻦ ﻃﺮﻳﻘ ﺔ أﺧﺮى ﻟ‬

‫‪26‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪5.4.2.‬‬


‫‪Machine Translated by Google‬‬

‫‪5.7 USB FUZZING‬‬ ‫‪27‬‬

‫ﺘﻘﺎطﺳﺮﻳﻊ ﻟﻠﺬاﻛﺮة‬
‫‪5.6.2‬وﺣﺪة ‪Kernel‬ﻻﻟ‬

‫ﺒﻴﻖ ‪COW.‬‬
‫ﺗﻪ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻧﻈﺮﻧﺎ ﻓ ﻲﺗﻄ‬
‫ﺘﻌﺎد‬
‫ﺘﺎﻟ ﻲﻳﻠﺰم اﺳ‬
‫ﺑﺎﻟ‬
‫ﺘﻤﺮ و‬
‫ﺛﻨﺎءﺗﻜﺮار ﻣ ﺴ‬
‫ﺘﻢﺗﻌﺪﻳﻠﻪ ﻓﻌﻠ ًﻴﺎ أ‬
‫ﺘﻘﻄ ﺔﻳ‬
‫ﺷ ﻲء واﺣﺪ أدرﻛﻨﺎه ‪ ،‬ﻫﻮ أن ﺟﺰءًا ﺻﻐﻴ ﺮًا ﻓﻘﻂ ﻣﻦ اﻟﺼﻔﺤﺎ ت اﻟﻤﻠ‬
‫ﺗﻤﺎﻣﺎ‪.‬‬
‫ً‬ ‫ﺘﺨﺪاﻣﻪ ‪،‬ﺗﻢ ﻛ ﺴﺮه‬
‫ﺒﻂ ﻛﻮﺣﺪة ‪kernel‬و ‪AFL ++‬ﻛﺎن ﻟﺪﻳﻪ دﻋﻢ ﻟﻠﻮﺣﺪة اﻟﻤﺬﻛﻮرة‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻋﻨﺪﻣﺎ ﺣﺎوﻟﻨﺎ اﺳ‬
‫ﺑﺎﻟﻀ‬‫ﺑﺎﻟﻔﻌﻞ ﻫﺬا‬‫ﺒﻖ‬
‫ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪[29] ،‬ﻃ‬

‫ﺘﻮ ت ﻋﲆ اﻟﻌﺪﻳﺪ ﻣﻦ أﺧﻄﺎء ‪UAF‬وﻇﺮوف اﻟﻌﺮق ‪ ،‬ﻣﻤﺎ أدى إﱃ اﻟﻌﺪﻳﺪ ﻣﻦ ﺣﺎﻻ ت اﻟﺬﻋﺮ ﻓ ﻲ اﻟﻨﻮاة‪.‬‬
‫ﺑﻞ اﺣ‬‫ﺘﺼﺮ اﻷﻣﺮ ﻋﲆ ﻋﺪمﺗﺠﻤﻴﻌﻬﺎ ﻓﺤ ﺴ ﺐ ‪،‬‬
‫ﻟﻢﻳﻘ‬

‫ﺒﺤ ﺚ ﻋﻨﻬﺎ‪.‬‬
‫ﺑﺄﺧﺮى أﺳﺮع ﻟﻠ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺑﻌﺾ ﻫﻴﺎﻛﻞ اﻟ‬‫ﺒﺪال‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻗﻤﻨﺎ‬‫ﺒﺎق‪.‬‬
‫ﺗﺨﻠﺼﻨﺎ ﻣﻦ ﻇﺮوف اﻟ ﺴ‬
‫ﺘﻬﺎ و‬
‫ﺘ ﻲﺗﻤ ﺖ ﻣﻮاﺟﻬ‬
‫أﺻﻠﺤﻨﺎ أﺧﻄﺎء ‪UAF‬اﻟ‬
‫ﺒﺎر اﻟﺨﺎﺻ ﺔ‬
‫ﺘ‬‫ﺑﺸﻜﻞ ﺧﺎص ‪ ،‬ﻧﻈ ﺮًاﻷن آﻻ ت اﻻﺧ‬‫ﺒﺮ ﻣﻦ إﺻﺪارا ت اﻟﻨﻮاة‪ .‬ﻛﺎن ﻫﺬا ﺿﺮورﻳًﺎ‬
‫ﺘﻮاﻓﻘ ﺔ ﻣﻊ ﻣﺠﻤﻮﻋ ﺔ أﻛ‬
‫ﺘﻜﻮن ﻣ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺟﺰاء ﻟ‬
‫ﺑ ﺔ اﻟﻜ‬
‫ﺘﺎ‬
‫ﺑﺈﻋﺎدة ﻛ‬ ‫أﺧﻴ ﺮًا ‪ ،‬ﻗﻤﻨﺎ أ ً‬
‫ﻳﻀﺎ‬
‫ﺑﻬﻢ‪.‬‬‫ﺒﻴﺮ ﻓ ﻲ إﺻﺪارا ت اﻟﻨﻮاة اﻟﺨﺎﺻ ﺔ‬
‫ﺑﺸﻜﻞ ﻛ‬‫ﺘﻠﻒ‬
‫ﺑﻨﺎﻳﻤﻜﻦ أنﺗﺨ‬

‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺗﻬﺎ‬
‫ﺘﻌﺎد‬
‫ﺘﻢ اﺳ‬
‫ﺘﻢ اﻟﻮﺻﻮل إﻟﻴﻬﺎ ‪ ،‬ﻓﻠﻦﺗ‬
‫ﺘﻘﺎﻃﻬﺎ ﻫ ﻲ أول ﺻﻔﺤ ﺔﻳ‬
‫ﺘ ﻲﺗﻢ اﻟ‬
‫ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﻻﺗﺰال وﺣﺪة ‪kernel‬ﺧﺎﻟﻴ ﺔ ﻣﻦ اﻷﺧﻄﺎء‪ .‬إذا ﻛﺎﻧ ﺖ اﻟﺼﻔﺤ ﺔ اﻟ‬
‫ﺑﺎﻟﻔﻌﻞ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن ﻫﺬا ﻻ‬‫ﺘﻢ ﻃﻠ ﺐ اﻟﺼﻔﺤ ﺔ‬
‫ﺘﺎﻟ ﻲ ﻻ ﻧﻼﺣﻆ ﻋﻨﺪﻣﺎﻳ‬
‫ﺑﺎﻟ‬ ‫ﺒﻖ ‪COW‬ﻋﲆ إدﺧﺎﻻ ت ﺟﺪول اﻟﺼﻔﺤ ﺔ أ ً‬
‫ﻳﻀﺎ ‪ ،‬و‬ ‫ﺘﻘﺪ أن ﻫﺬاﻳﺮﺟﻊ إﱃ ﺣﻘﻴﻘ ﺔ أن اﻟﻨﻮاةﺗﻄ‬
‫ﻧﻌ‬
‫ﺘﻢ اﻟﻮﺻﻮل إﱃ أي ﻣﻦ ﺻﻔﺤﺎ ت اﻟﻠﻘﻄ ﺔ أوﻻً‪.‬‬
‫ﺛﺮ ﻋﲆ ﻏﻤﻮﺿﻨﺎ ﻋﲆ اﻹﻃﻼق ‪ ،‬ﺣﻴ ﺚ ﻻﻳ‬
‫ﻳﺆ‬

‫ﺗﺸﻮﻳ ﺶ ‪USB‬‬
‫‪5.7‬‬
‫ﺛﻴﻖ‬
‫ﺗﻮﻛﻮل ‪DFU‬أيﺗﻮ‬
‫ﺒﺮو‬
‫ﺜﺮﺗﻌﻘﻴﺪًا‪ .‬ﻟﻤﺮة واﺣﺪة ‪ ،‬ﻟﻢﻳﻜﻦ ﻟ‬
‫ﺒ ﺖﺗﺸﻮﻳ ﺶ ‪USB‬أﻧﻪ أﻛ‬
‫ﺛ‬‫ﺘﺄﺳﻴ ﺴﻴ ﺔ ‪ ،‬أ‬
‫ﺑﻤﺠﺮدﺗﻮﻓﺮ اﻷدوا ت اﻟ‬‫ﺒ ًﻴﺎ‬
‫ﻓ ﻲ ﺣﻴﻦ أن ﻏﻤﻮض ‪IMG4‬ﻛﺎن واﺿﺤًﺎ ﻧ ﺴ‬
‫ﺑﻔﻀﻞ اﻟﺠﻬﻮد اﻟﻬﻨﺪﺳﻴ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ اﻟﺮاﺋﻌ ﺔ ‪،‬‬‫ﺴﺎو‪.‬‬
‫ٍ‬ ‫ﺘ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺗﻮﻛﻮل ‪USB‬اﻟﻘﻴﺎﺳ ﻲ اﻟﺬيﺗﻨﻔﺬه ‪SecureROM‬ﻗﻠﻴﻠ ﺔ‬
‫ﺑﺮو‬‫ﺘﻔﺎﻋﻞ ﻣﻊ‬
‫ﺑﺎﻟ‬‫ﺛﺎﺋﻖ اﻟﺨﺎﺻ ﺔ‬
‫ﻋﲆ اﻹﻃﻼق وﻛﺎﻧ ﺖ اﻟﻮ‬
‫ﺘﻀﺢ ﻓ ﻲ اﻷﻗ ﺴﺎم‬
‫ﺑﻌﺾ اﻟﻘﻴﻮد ‪ ،‬ﻛﻤﺎﺳﻴ‬‫ﺒﺮ ﻗﺪر ﻣﻤﻜﻦ ﻣﻦ اﻟﻤﺮوﻧ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻻﺗﺰال ﻫﻨﺎك‬
‫ﺑﺄﻛ‬‫ﺗﻤﺎﻣﺎ اﻵن وﻳﻤﻜﻨﻨﺎﺗﺸﻮﻳﺸﻬﺎ‬
‫ً‬ ‫ﺒﺤ ﺖ ﻣﻌﻈﻢ ﻣﻜﺪس ‪USB‬ﻣﻔﻬﻮﻣ ﺔ‬
‫أﺻ‬
‫ﺘﺎﻟﻴ ﺔ‪.‬‬
‫اﻟ‬

‫ﺒﻴﻖﻳﺆدي‬
‫ﺜﻞﺗﺸﻮﻳ ﺶ ‪IMG4.‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ ﻋﺪم وﺟﻮدﺗﻄ‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﺘ ﻲﺗﻮاﺟﻬﻬﺎ ﻓ ﻲﺗﺸﻐﻴﻞﺗﺸﻮﻳ ﺶ ‪USB ،‬ﻓﺈن اﻟﻌﻤﻠﻴ ﺔﺗﻌﻤﻞ‬
‫ﺑﺎ ت اﻟ‬
‫ﺑﺼﺮف اﻟﻨﻈﺮ ﻋﻦ اﻟﺼﻌﻮ‬
‫ﺜﻴﻼ ت ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪5.4.‬ﻛﺎﻧ ﺖ ﻛﻞ ﻣﺠﻤﻮﻋ ﺔ‬
‫ﺛﻼ ث ﻣﺠﻤﻮﻋﺎ ت ﻣﺸﻮﺷ ﺔ ‪ ،‬ﻛﻞ ﻣﻨﻬﺎﻳﺸﻐﻞ اﻟﻤ‬‫ﺑﻌﺾ اﻟﺤﺪود ﻫﻨﺎ ‪ ،‬ﻓﻘﺪ ﻛﺎن ﻟﺪﻳﻨﺎ‬ ‫أ ً‬
‫ﻳﻀﺎ إﱃﺗﻌﻄﻴﻞ ﻓﺤﺺ‬
‫ﺜﻞ ‪checkm8‬ﻓ ﻲ‬
‫ﺜﻮر ﻋﲆ ﺧﻄﺄ ﻣ‬
‫ﺘﻐﺮﻗﻬﺎ اﻟﻌ‬
‫ﺘ ﻲﻳ ﺴ‬
‫ﺘﻴﺢ ﻟﻨﺎ ذﻟﻚ اﻟﺤﺼﻮل ﻋﲆ ﻓﻜﺮة ﻋﻦ اﻟﻤﺪة اﻟ‬
‫ﺜﻨﺎﺋ ﻲ وﻟﻬﺎ ﻧﻔ ﺲ اﻟﻤﻌﻠﻤﺎ ت ﻓ ﻲ ﻛﻞ ﺣﺎﻟ ﺔ‪.‬ﻳ‬
‫ﺘﻬﺪف ﻧﻔ ﺲ اﻟﻨﻈﺎم اﻟ‬
‫ﺗﺴ‬
‫ﺘﺎﺋﺞ ﻫﺬه اﻟﻌﻤﻠﻴ ﺔ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪6.4.‬‬
‫ﺘﻮﺳﻂ‪.‬ﺗﻤ ﺖ ﻣﻨﺎﻗﺸ ﺔ ﻧ‬
‫اﻟﻤ‬

‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬ﻣﺨﺼﺺ‬
‫‪5.7.1‬‬

‫ﺘﺄﻛﻴﺪ ‪،‬‬
‫ﺑﺎﻟ‬‫ﺘﻐﺸﻴ ﺔ رﺳﺎﺋﻞ ‪USB.‬ﻓ ﻲ ﺣﻴﻦ أن ﻫﺬاﺳﻴﻌﻤﻞ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬داﺧﻞ ‪SecureROM‬إﺣﺪى اﻟﻄﺮق اﻟﻤﻤﻜﻨ ﺔ ﻟ‬‫ﺘﺨﺪﻣﻬﺎ‬
‫ﺘ ﻲﻳ ﺴ‬
‫ﺑ ﺔ اﻟ ﺴﺠﻼ ت اﻟ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻦ ﻗﺮاءة وﻛ‬
‫ﺘﻠﻒ ﻣﻦ ‪SecureROM.‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪ ،‬ﻓﺈنﺗﻨﻔﻴﺬ ‪USB‬داﺧﻞ ‪ SecureROM‬ﻫﻮ‬
‫ﺑﻴﻦ إﺻﺪار ﻣﺨ‬‫ﺑ ﺴﻬﻮﻟ ﺔ اﻟﻔﺼﻞ‬‫ﺜﻴﺮ ﻣﻦ اﻟﻬﻨﺪﺳ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ وﻳﻤﻜﻨﻪ‬
‫ﺘﻄﻠ ﺐ اﻟﻜ‬
‫إﻻ أﻧﻪﻳ‬
‫ﺒﺪالﺗﻌﻠﻴﻤﺎ ت واﺣﺪة داﺧﻞ‬
‫ﺘ‬‫ﺘﺮاﺿ ﻲ‪ .‬ﻣﻦ ﺧﻼل اﺳ‬
‫ﺒﻪ اﻓ‬
‫ﺒﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ﺷ‬
‫ﺑ‬‫ﺒﻪ‬
‫ﺑﺸﻜﻞ أﺷ‬‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ﻣﺨﺼﺺﻳﻌﻤﻞ‬‫ﺑﺔ‬‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ﻛ‬
‫ﺘﺎ‬ ‫ﺑﺎﻟﻔﻌﻞ ﻣﻌﻴﺎري ﻟﻠﻐﺎﻳ ﺔ وﻳﻤﻜﻨﻨﺎ‬
‫ﺑﺄﻣﺮﻧﺎ‪.‬‬‫ﺘﺸﻐﻴﻞ اﻟﺤﺎﻟ ﻲ‬
‫ﺑﺮﻧﺎﻣﺞ اﻟ‬‫ﺒﺪل‬
‫ﺘ‬‫‪SecureROM ،‬ﻓﺈﻧﻨﺎ ﻧ ﺴ‬

‫ﺑﻄﻮل ﻣﺤﺪد‪.‬ﺗﺤﻘﻴﻘﺎ ﻟﻬﺬه‬‫ﺑ ﺴﻴﻂ ﻟﻠﻐﺎﻳ ﺔ‪ .‬وﻇﻴﻔ ﺔ واﺣﺪة ‪-‬إرﺳﺎل اﻟﻤﺨﺰن اﻟﻤﺆﻗ ﺖ ‪ USB -‬ﻫ ﻲ اﻟﻤ ﺴﺆوﻟ ﺔ ﻋﻦ "إرﺳﺎل" ﺟﻬﺎز إرﺳﺎل‬‫ﻋﲆ اﻟﺠﺎﻧ ﺐ اﻟﻤﺮﺳﻞ ‪،‬ﺳﺎﺋﻘﻨﺎ‬
‫ﺘﺪﻋﻴﻬﺎ اﻟ ﺴﺎﺋﻖ اﻟﻌﺎدي ‪،‬‬
‫ﺘ ﻲﻳ ﺴ‬
‫ﺘﺮي اﻟﻤﺤﺪد‪ .‬ﻫﺬه ﻫ ﻲ اﻟﻮﻇﻴﻔ ﺔ ﻧﻔ ﺴﻬﺎ اﻟ‬
‫ﺘﻠﻘﻰ داﺧﻞ ‪SecureROM‬ﻣﻊ اﻟﻤﺸ‬
‫ﺒﺾﺗﺤﻜﻢ ‪USB‬ﻳ‬
‫اﻟﻐﺎﻳ ﺔ ‪ ،‬ﻧﺤﻦ ﻓﻘﻂ ﻧ ﺴﻤ ﻲ ‪usb core -‬ﻣﻘ‬
‫ﺗﺼﺎل ‪USB‬ﺣﻘﻴﻘ ﻲ‪.‬‬
‫ﺘﻬ ﻲ ﻣﻦ ﻗﺮاءة ﻋﺎﻣﻞ اﻟﺸﺮاء ﻣﻦ ا‬
‫ﻋﻨﺪﻣﺎﻳﻨ‬

‫ﺑﺎﻟﻔﻌﻞ‪ .‬ﻣﺮة أﺧﺮى ‪،‬‬‫ﺒﺎر ﻣﺎ إذا ﻛﺎﻧ ﺖﺗﻌﻤﻞ‬


‫ﺘ‬‫ﺘﻴﺢﺳﻬﻮﻟ ﺔ اﺧ‬ ‫ﺘﻢ أ ً‬
‫ﻳﻀﺎﺗﻨﻔﻴﺬ اﻟﻘﺪرة ﻋﲆﺗﻠﻘ ﻲ اﻟﺮدود ‪،‬ﻷﻧﻬﺎﺗ‬ ‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ ﻋﺪم اﻟﺤﺎﺟ ﺔ إﻟﻴﻬﺎ ﺣ ًﻘﺎ ﻟﻠ‬
‫ﺘﺸﻮﻳ ﺶ ‪ ،‬إﻻ أﻧﻪﻳ‬
‫ﺘﻼك‬
‫ﺑ ﺔ‪ .‬ﻋﺪم إﻣ‬
‫ﺘﺠﺎ‬
‫ﺘﻠﻘﻰ اﺳ‬
‫ﺑﺎﻟ ﺴﺎﺋﻖ وﺳﻮف ﻧ‬‫ﺘﻨﻔﻴﺬ وﻇﻴﻔ ﺔ ‪USB do endpoint io‬اﻟﺨﺎﺻ ﺔ‬
‫ﺑ‬‫ﺑ ﺴﻴﻂ ﻟﻠﻐﺎﻳ ﺔ ‪،‬ﻷﻧﻨﺎ ﻧﻘﻮم ﻓﻘﻂ‬‫ﻫﺬا‬
‫‪Machine Translated by Google‬‬

‫‪5.7 USB FUZZING‬‬ ‫‪28‬‬

‫ﺗﻔﻌﻞ ﻧﻘﻄ ﺔ ﻧﻬﺎﻳ ﺔ ‪io‬وأ ً‬


‫ﻳﻀﺎ ﻗﺮاءة داﺧﻞ اﻟﻤﺨﺰن اﻟﻤﺆﻗ ﺖ‬ ‫ﺘﻐﻴﺮ ﻋﺎﻟﻤ ﻲ داﺧﻞ ‪USB‬‬
‫ﺘﻠﻤ ﺔ إﱃ ﻣ‬
‫ﺑﺔ ﻣﺴ‬
‫ﺘﺠﺎ‬
‫ﺑ ﺔ أي اﺳ‬
‫ﺘﺎ‬
‫ﺘﻢ ﻛ‬
‫ﺑ ﺔ ‪،‬ﺗ‬
‫ﺘﺠﺎ‬
‫ﺘﻈﺎر اﻻﺳ‬
‫ﺑﺸﺄن اﻻﺿﻄﺮار إﱃ اﻧ‬‫ﻟﻠﻘﻠﻖ‬
‫ﺑﻨﺎ ‪.‬‬‫ﺒﻴﻖ ‪USB do endpoint io‬اﻟﺨﺎص‬
‫ﺘﺪﻋﺎءﺗﻄ‬
‫ﺑﻌﺪ اﺳ‬‫ﺗﺠﻌﺎ ت‬
‫ﺘﻠﻘﻰ إﻻ اﻟﻤﺮ‬
‫ﺒﺾ ‪USB‬اﻷﺳﺎﺳ ﻲ ﻻﻳ‬
‫ﺑﻤﻘ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ ‪USB‬‬
‫ﻟﻺرﺳﺎل ‪USB.‬ﻳﻌﻤﻞ ﻫﺬا ‪ ،‬ﻧﻈ ًﺮاﻷن اﻟ‬

‫ﺘﺸﻐﻴﻞ اﻟﻌﺎدي ‪،‬‬


‫ﺛﻨﺎء اﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ‪USB.‬أ‬
‫ﺑﻂ ﻟﻠ‬
‫ﺘﺮا‬
‫ﺘﻌﺪدة ﻣﺆﺷﺮا ت اﻟ‬
‫ﺒﻴﻌ ﺔ ﻣ‬
‫ﺒﻴﺮة ﻫ ﻲ اﻟﻄ‬
‫ﺒ ًﻴﺎ ‪ ،‬إﻻ أن إﺣﺪى اﻟﻤﺸﻜﻼ ت اﻟﻜ‬
‫ﺑ ﺴﻴﻂ ﻧ ﺴ‬‫ﺘﺸﻐﻴﻞ‬
‫ﺑﺮﻧﺎﻣﺞ اﻟ‬‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن‬
‫ﺘﺸﻐﻴﻞ اﻷﺻﻠ ﻲ ﻓ ﻲ‬
‫ﺑﺮﻧﺎﻣﺞ اﻟ‬‫ﺒﺪأ‬
‫ﺘﺸﻐﻴﻞ ‪،‬ﻳ‬
‫ﺑﺪء اﻟ‬‫ﺘﻤﺎﻟﻪ‪ .‬ﻋﻨﺪ‬
‫ﺗﻮﻛﻮل ‪DFU‬ﻟﻺﺷﺎرة إﱃ اﻛ‬
‫ﺑﺮو‬‫ﺘﻈﺮ‬
‫ﺛﻢﻳﻨ‬‫ﺒﺪأﺗﺸﻐﻴﻠﻪ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB ،‬وﻳ‬‫ﺘﻬﻴﺌ ﺔ‬
‫ﺑ‬‫ﻳﻘﻮم ‪getDFUImage‬‬
‫ﺘﻼﻣﻬﺎ ﻋﲆ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬ﻹرﺳﺎل اﻟﺮﺳﺎﺋﻞ واﺳ‬‫ﺘﻢﺗﺸﻐﻴﻞ‬
‫ﺒﺪﻳﻞ اﻟﻐﺮض ﻣﻦ اﻟﺨﻴﻮط ﺣﻮﻟﻬﺎ‪.‬ﻳ‬
‫ﺘ‬‫ﺑ‬‫ﺘﻼﻣﻬﺎ‪ .‬ﻓ ﻲﺗﻨﻔﻴﺬﻧﺎ ‪ ،‬ﻧﻘﻮم‬
‫ﻣﻬﻤ ﺔ ﻣﻨﻔﺼﻠ ﺔ ﻹرﺳﺎل رﺳﺎﺋﻞ ‪USB‬واﺳ‬
‫ً‬
‫ﺒﺎﺷﺮة‬
‫ﺘﺪﻋﺎء وﻇﺎﺋﻒ اﻹرﺳﺎل ﻣ‬
‫ﺜﻴ ﺮًا ‪ ،‬ﺣﻴ ﺚﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﻢﺗﺸﻐﻴﻞ ‪getDFUImage‬ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ﻣﻨﻔﺼﻠ ﺔ‪ .‬ﻫﺬاﻳﺠﻌﻞ اﻟﻐﻤﻮض أﺳﻬﻞ ﻛ‬
‫ﺑﻴﻨﻤﺎﻳ‬‫ﺋﻴ ﺴﻴ ﺔ ‪،‬‬
‫اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﺮ‬
‫ُﻈﻬﺮ اﻟﺮﻣﺰ ‪5.12‬اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﺨﺪﻣ ﺔ ﻓ ﻲ ‪getDFUImage.‬ﻳ‬
‫ﺑﻂ ‪USB‬اﻟﻤ ﺴ‬
‫ﺴﻄﺎ ﻣﻦ وﻇﻴﻔ ﺔ ﻣﺆﺷﺮﺗﺮا‬
‫ﺒ ً‬‫ُﻈﻬﺮ اﻟﺮﻣﺰ ‪5.11‬إﺻﺪا ًرا ﻣ‬
‫ﺘﻤﺮ ﻟـ ‪AFL ++.‬ﻳ‬
‫ﺘﺨﺪام اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺑﺎﺳ‬
‫ﺘﻢ إرﺳﺎﻟﻬﺎ إﱃ ‪SecureROM.‬‬
‫ﺋﻴ ﺴ ﻲ ﻟﻤﻌﺎﻟﺠ ﺔ رﺳﺎﺋﻞ ‪USB‬ﻟﻴ‬
‫ﺘ ﻲﻳﺪﻳﺮ ﻫﺎ اﻟﺨﻴﻂ اﻟﺮ‬
‫ﺒ ﺴﻄ ﺔ اﻟ‬
‫اﻟﻤ‬

‫ﺘﻤﺮ ﻓ ﻲ اﻟﻌﻮدة إﱃ‬


‫ﺘﺄﻛﺪ ﻣﻦ أﻧﻨﺎ ﻧ ﺴ‬
‫ﺘﺎج إﱃ اﻟ‬
‫ﺘﺼﻒ إرﺳﺎل اﻟﺮﺳﺎﺋﻞ ﻋﻨﺪ ﻋﻮدة ‪getDFUImage ،‬ﻧﺤ‬
‫ﺋﻴ ﺴﻴ ﺔ ‪ ،‬ﻗﺪ ﻧﻜﻮن ﻓ ﻲ ﻣﻨ‬
‫ﻧﻈ ﺮًاﻷﻧﻨﺎ ﻓ ﻲ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﺮ‬
‫ﺘﻜﺮار داﺧﻞ ﺧﻴﻂ ‪USB‬اﻟﻤﺨﺼﺺ‪.‬‬
‫ﺘﻠﻔ ﺔ ‪ ،‬ﻧﺤﻘﻖ ذﻟﻚ ﻣﻦ ﺧﻼل اﻟ‬
‫ﺒﺎ ب ﻣﺨ‬
‫‪getDFUImage‬ﻃﺎﻟﻤﺎ ﻟﺪﻳﻨﺎ رﺳﺎﺋﻞ‪.‬ﻷﺳ‬

‫ﺛﻴﺮ ﻋﲆ دﻻﻻ تﺗﻨﻔﻴﺬﻧﺎ‬


‫ﺘﻜﺮار داﺧﻞ اﻟﺨﻴﻂ‪.‬ﻳﺠ ﺐ أﻻﻳﻜﻮن ﻟﻬﺬا أيﺗﺄ‬
‫ﺘﻤﺮار ﻓ ﻲ اﻟ‬
‫ﺘﺎﻟ ﻲﻳﻜﻮن ﻣﻦ اﻷﺳﻬﻞ اﻻﺳ‬
‫ﺑﺎﻟ‬ ‫ﺑﻄﻴ ًﺌﺎ ‪ ،‬ﺧﺎﺻ ﺔ ﻋﻨﺪ اﻟ‬
‫ﺘﺸﻮﻳ ﺶ ‪ ،‬و‬ ‫ﻳﻌﺪ إﻧﺸﺎء ﺧﻴﻂ ﺟﺪﻳﺪ‬
‫ﺘﻤﻜﻦ ﻣﻦ‬
‫ﺘﻰﻳ‬
‫ﺘﺪﻋﺎء ‪getDFUImage ،‬ﺣ‬
‫ﺘﻤﺮ ﻓ ﻲ اﺳ‬
‫ﺛﻠ ﺔ داﺧﻞ ‪SecureROM.‬ﻃﺎﻟﻤﺎﺗﻢﺗﻨﺸﻴﻂ وﺿﻊ ‪DFU ،‬ﻓ ﺴﻴ ﺴ‬
‫ﻟﻤﻌﺎﻟﺠ ﺔ ‪USB DFU ،‬ﺣﻴ ﺚﺗﻮﺟﺪ ﺣﻠﻘ ﺔ ﻣﻤﺎ‬
‫ﺗﺸﻐﻴﻞ ﺻﻮرة ﺻﺎﻟﺤ ﺔ‪.‬‬

‫ﺑﺎﻃﻠ ﺔ(‬
‫ﺑﺎﻃﻞ )ﺻﻔﺤﺎ ت *‬
‫‪usb_main_thread‬‬
‫{‬
‫ﺑﻴﻨﻤﺎ { )‪(! main_should_exit‬‬
‫اﻟﺪﻗ ﺔ ؛ )‪ load_and_test_image (img_info، kDEFAULT_TYPE، rom_img_start، res‬؛ )‪(rom_img_start، res‬‬
‫‪ Struct image_info * img_info = image_create_from_memory‬؛ )‪int = rom_getDFUImage (rom_img_start، kIMG_SIZE‬‬
‫ﻣﺠﺎﻧًﺎ ؛ )‪(img_info‬‬

‫}‬
‫}‬

‫ﺒ ﺴﻄ ﺔ‪.‬‬
‫اﻟﻜﻮد ‪5.11:‬وﻇﻴﻔ ﺔ ﺧﻴﻂ ‪USB‬ﻣ‬

‫ﺑﺎﻃﻞ *ﻣﺨﺰن ﻣﺆﻗ ﺖ ‪uint64_t length) { ،‬‬


‫ﺑﺎﻃﻠ ﺔ )‬
‫‪process_messages‬‬

‫ﺗﻴﺎر‪> -‬ﻧﻮع( {‬
‫ﺒﺪﻳﻞ )‬
‫ﺘ‬‫ﻣﻦ أﺟﻞ _ _ _ _ _ _ ‪ i‬؛ ‪( int i = 0‬اﻟ‬

‫ﺣﺎﻟ ﺔ اﻹﻋﺪاد‪:‬‬

‫ﺑﻴﺎﻧﺎ ت اﻟﺤﺎﻟ ﺔ ‪:‬‬

‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻷﻧﻮاع اﻷﺧﺮى ‪* / ...‬‬


‫ﺘﺮاﺣ ﺔ؛ ‪* /‬اﻟ‬
‫ﺒﻴﺎﻧﺎ ت ‪،‬ﺗﻴﺎر‪> -‬ﻧﻮع ==إﻋﺪاد( ؛ اﺳ‬
‫ﺑﻴﺎﻧﺎ ت ‪،‬ﺗﻴﺎر‪> -‬ﺣﺠﻢ اﻟ‬
‫ﺗﻴﺎر‪> -‬‬
‫‪)Transmit_usb_buffer‬‬

‫}‬
‫}‬
‫}‬

‫ﺋﻴ ﺴ ﻲ‪.‬‬
‫ﺒ ﺴﻄ ﺔ ‪،‬ﺗﻌﻤﻞ ﻋﲆ اﻟﺨﻴﻂ اﻟﺮ‬
‫اﻟﻜﻮد ‪5.12:‬ﺣﻠﻘ ﺔ ﻣﻌﺎﻟﺠ ﺔ رﺳﺎﺋﻞ ‪USB‬ﻣ‬

‫ﺑﻖ‬
‫ﺒﺪو ﻣﻦ اﻟ ﺴﺎ‬
‫ﺑﻂ ‪ USB.‬ﻫﺬا ﻟﻴ ﺲﺗﺎﻓﻬً ﺎ ﻛﻤﺎ ﻗﺪﻳ‬
‫ﺋﻴ ﺴ ﻲ وﺧﻴﻂ ‪USB‬ﻟﻠﺨﺮوج ﻣﻦ اﻟﺤﻠﻘ ﺔ داﺧﻞ ﻣﺆﺷﺮﺗﺮا‬
‫ﺑﻴﻦ اﻟﺨﻴﻂ اﻟﺮ‬‫وﻣﻊ ذﻟﻚ ‪،‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻫﻨﺎك ﻣﺰاﻣﻨ ﺔ‬

‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺘﺼﺤﻴﺢ اﻷﺧﻄﺎء وﻟﻴ ﺲ ﺿﺮورﻳًﺎ ﻟﻠ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ﻟ‬‫ﺑ ﺴﻬﻮﻟ ﺔ ‪ ،‬إﻻ أﻧﻪﻳﻌﻤﻞ‬‫ﺒﺪو دﻗﻴ ًﻘﺎ وﻳﻤﻜﻦ أنﻳﻨﻜ ﺴﺮ‬
‫‪27‬ﻓ ﻲ ﺣﻴﻦ أن ﻫﺬا ﻗﺪﻳ‬
‫‪Machine Translated by Google‬‬

‫‪5.7 USB FUZZING‬‬ ‫‪29‬‬

‫ﺘﺤﻮل ﻣﻦ ﻣﻜﺪس ‪USB‬ﻋﻨﺪﻣﺎﻳﻌﻮد‪.‬‬


‫ﺗﻮﻛﻮل ‪DFU‬داﺧﻞ ‪SecureROM.‬ﻛﻤﺎ أﻧﻪﻳﻮﻗﻒ اﻟ ﺴﺎﺋﻖ وﻳ‬
‫ﺑﺮو‬‫ﺛًﺎ ﻣﻦﺗﻨﻔﻴﺬ‬
‫ﺘﻈﺮ ﺣﺪ‬
‫ﻗﻮاﺋﻢ اﻟﺮﻣﻮز ‪ ،‬ﻧﻈ ًﺮاﻷن ‪getDFUImage‬ﻳﻨ‬
‫ﺜﻞ‬
‫ﺘﻠﻘ ﻲ ﻣ‬
‫ﺑﻌﺪ ﻟ‬‫ﺒﺎط‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻗﺪ ﻻﻳﻜﻮنﺳﺎﺋﻘﻨﺎ ﺟﺎ ﻫ ًﺰا‬
‫ﺘﻈﺎر ﺣﺪ ث ﻣﺎ ‪،‬ﻳﻤﻜﻨﻨﺎ إرﺳﺎل ﻃﻠ ﺐ إﺣ‬
‫ﺜﻠ ﺔ ﻓ ﻲﺗﻮﻗﻒ ‪getDFUImage‬ﻓ ﻲ اﻧ‬
‫ﺘﻤ‬‫ﻹﺻﻼح اﻟﻤﺸﻜﻠ ﺔ اﻷوﱃ اﻟﻤ‬
‫ﺑﻂ ‪USB‬ﻟﻠﺨﺮوج ‪ ،‬و ﻫﻮ ﻣﺎ ﻗﺪ ﻻﻳﺤﺪ ث ‪،‬ﻷﻧﻪ ﻗﺪﻳ ﺴﻤﻰ ‪getDFUImage.‬‬
‫ﺋﻴ ﺴ ﻲ ﻋﲆ ﻣﺆﺷﺮﺗﺮا‬
‫ﺘﻈﺮ اﻟﺨﻴﻂ اﻟﺮ‬
‫ﺛﻢﻳﻨ‬‫ﺘﻮ‪.‬‬
‫ﺑﻤﺎ ﻋﺎد ﻟﻠ‬
‫ﻫﺬا اﻟﻄﻠ ﺐ ‪ ،‬ﻧﻈ ﺮًاﻷن ‪getDFUImage‬ر‬
‫ﺘﺸﺬﻳﺮ اﻟ ﺴﻴ ﺊ ﻓ ﻲ اﻟﻜﻮد ‪5.13.‬‬
‫ﺜﺎل ﻋﲆ ﻫﺬا اﻟ‬
‫ﻳﻤﻜﻦ رؤﻳ ﺔ ﻣ‬

‫ﺑﻴﻨﻤﺎ ‪(! main_should_exit) { // main_should_exit‬ﻻﺗﺰال‬ ‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬ﻏﻴﺮ ﻧﺸﻂ اﻵن‬ ‫‪rom_getDFUImage (...) //‬ﻳﻌﻮد ‪| USB //‬‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬ﻻﻳﺰال ﻏﻴﺮ ﻧﺸﻂ!‬ ‫ﺘﻢ إرﺳﺎل ‪MAIN // abort ،‬ﻧﻈ ﺮًاﻷن‬
‫ﺧﺎﻃﺌ ﺔ ‪| USB send_abort_nowait () //‬ﻳ ﺴﻤﻰ &إرﺟﺎع |ﻟﻢﻳ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB // USB‬ﻧﺸﻂ اﻵن ﻓﻘﻂ ‪ ،‬ﻟﻜﻨﻨﺎ وﺻﻠﻨﺎ‬
‫‪thread_join (usb_thread) //‬ﻳ ﺴﻤﻰ ‪| MAIN rom_getDFUImage (...) //‬ﻳ ﺴﻤﻰ |‬
‫إﱃ ﻃﺮﻳﻖ ﻣ ﺴﺪود!‬

‫ﺗﺸﺬﻳﺮﺳ ﻲء ﻟﻤﺤﺎوﻟ ﺔ اﻟﺨﺮوج ﻣﻦ ﺣﻠﻘ ﺔ ‪USB.‬‬


‫اﻟﻜﻮد ‪5.13:‬‬

‫ﺜﺎل ‪ ،‬ﻣﻠﻒ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻌﺪدة‪ .‬ﻋﲆﺳ‬
‫ﻧﻈﺎﻣﺎ ﻣﻌﻘﺪًا ﻣﻦ اﻷﻗﻔﺎل واﻷﺣﺪا ث اﻟﻤ‬
‫ً‬ ‫ﺘﻀﻤﻦ ﺣﻠﻨﺎ ﻟﻬﺬا‬
‫ﻳ‬
‫ﺑﻌﺪ‪.‬‬‫ﺑﻂ ‪USB‬ﻟﻢﻳﺨﺮج ﻣﻦ اﻟﺤﻠﻘ ﺔ‬
‫ﺒﺎﻃﺎ ﻃﺎﻟﻤﺎ أن ﻣﺆﺷﺮﺗﺮا‬
‫ﺋﻴ ﺴ ﻲ إﺣ ً‬
‫ﺑﻂ اﻟﺮ‬
‫ﺘﺮا‬
‫ﻳﺮﺳﻞ ﻣﺆﺷﺮ اﻟ‬

‫‪5.7.2‬ﻟﻠﺬﻋﺮ أو ﻋﺪم اﻟﺬﻋﺮ‬

‫ﺑﺎﻳ ﺖ‬
‫ﺗﻮﻛﻮل ‪DFU‬أﻗﻞ ﻣﻦ ‪0x10‬‬
‫ﺑﺮو‬‫ﺑ ﺴﻬﻮﻟ ﺔ ﺷﺪﻳﺪة‪ .‬إذاﺗﻠﻘﻰ‬‫ﺑﺎﻟﺬﻋﺮ‬‫ﺑﻤﻌﺎﻟﺠ ﺔ ‪DFU‬داﺧﻞ ‪SecureROM‬و ﻫ ﻲ أﻧﻪﻳﻤﻜﻦ أنﻳﺼﺎ ب‬‫ﺘﻌﻠﻖ‬
‫ﺒﻴﺮة أﺧﺮىﺗ‬
‫ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻛ‬
‫ﺘﻰ أن اﻹﺟﻬﺎضﺳﻴﻔﻌﻞ‬
‫ﺗﻮﻛﻮل ‪ ،‬ﺣ‬
‫ﺒﺮو‬
‫ﺑﺪءﺗﺸﻐﻴﻞ اﻟ‬ ‫ﺑﺎﻟﺬﻋﺮ‪ .‬ﻣﻦ اﻟ ﺴﻬﻞ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺗﻮﻛﻮل ‪DFU ،‬ﻓ ﺴﻮفﻳﺼﺎ ب‬
‫ﺑﺮو‬‫ﺘﻬﺎء ﻣﻦ‬
‫ﺒﻞ اﻻﻧ‬
‫ﺘﺎﻟﻴ ﺔ ‪ ،‬ﻗ‬
‫ﺒﻴﺎﻧﺎ ت ﻟﺼﻮرة اﻟﻤﺮﺣﻠ ﺔ اﻟ‬
‫ﻣﻦ اﻟ‬
‫ﺒﻴﻘﻨﺎ‪.‬‬
‫ﺒﺮﺗﻄ‬
‫ﺘ‬ ‫ﺘﺸﻮﻳ ﺶ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ ﻋﻨﺪﻣﺎ ﻛﻨﺎ ﻧﺼﺤﺢ اﻷﺧﻄﺎء وﻧﺨ‬ ‫ﺛﻨﺎء اﻟ‬
‫ذﻟﻚ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻣﻦ اﻟﺸﺎﺋﻊ ﺟﺪًا رؤﻳ ﺔ ذﻋﺮ ‪SecureROM ،‬ﻟﻴ ﺲ ﻓﻘﻂ أ‬

‫ﺘﺸﻮﻳ ﺶ ﻓ ﻲ‬
‫ﺒﻴﻌ ﻲ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻋﻨﺪ اﻟ‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺒﺪال ﻣﻌﺎﻟﺞ اﻟﺬﻋﺮ واﻟﺨﺮوج‬
‫ﺘ‬‫ﺒﻴﺮة ‪ ،‬ﺣﻴ ﺚﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﻘﻞ ‪ ،‬ﻟﻦﻳﻜﻮن اﻟﺬﻋﺮ ﻣﺸﻜﻠ ﺔ ﻛ‬
‫ﺘﺸﻮﻳ ﺶ ﻓ ﻲ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﻋﻨﺪ اﻟ‬
‫ﺘﻤﺮ ‪ ،‬ﻓﺈنﺗﺸﻐﻴﻞ‬
‫ﺘﻢﺗﻨﻈﻴﻒ اﻷﻗﻔﺎل أو اﻟﺨﻴﻮط‪ .‬ﻧﻈ ﺮًاﻷن اﻟﻌﻤﻠﻴ ﺔ ﻟﻦﺗﺨﺮج ﻓﻌﻠ ًﻴﺎ ﻓ ﻲ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺘﻤﺮ ‪،‬ﻳﻜﻮن اﻟﺬﻋﺮ ﻏﻴﺮ ﻣﺮﻏﻮ ب ﻓﻴﻪ ﻟﻠﻐﺎﻳ ﺔ ‪ ،‬ﺣﻴ ﺚ ﻻﻳ‬
‫اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺜﻞ ﻫﺬا اﻟﺬﻋﺮ‪ .‬ﻟﺬﻟﻚ ‪،‬‬
‫ﺘﻢﺗﻌﻠﻴﻘﻬﺎ ﻋﻨﺪﻣﺎ ﻧﺼﻞ إﱃ ﻣ‬
‫ﺘ ﻲﻳ‬
‫ﺒﻂ ﻣﺎ ﻫ ﻲ اﻷﻗﻔﺎل اﻟ‬
‫ﺑﺎﻟﻀ‬‫ﺑﻌ ﺔ‪ .‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪ ،‬ﻧﺤﻦ ﻧﻌﺮف‬
‫ﺘﺎ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﻟﻤ‬
‫ﺗﻤﺎﻣﺎ وﻟﻦﻳ‬
‫ً‬ ‫ﺘﻮﻗﻒ‬
‫ﺘﺎﻟ ﻲﺳﻴ‬
‫ﺘﺸﻮﻳ ﺶ اﻟ‬
‫اﻟ‬
‫ﺒﻴﻌ ﻲ‪ .‬ﻫﺬاﻳﻀﻤﻦ أﻧﻨﺎﻳﻤﻜﻦ أن‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺛﻢﻳﺨﺮج أﺧﻴ ﺮًا‬‫ﺑﺸﻜﻞ ﻧﻈﻴﻒ‬
‫ﺑﻂ ‪USB‬‬
‫ﺑﺈﻟﻐﺎء ﻗﻔﻞ ﻫﺬه اﻷﻗﻔﺎل ‪ ،‬وﻳﻀﻤﻦ ﺧﺮوج ﻣﺆﺷﺮﺗﺮا‬‫ﻳﻘﻮم ﻣﻌﺎﻟﺞ اﻟﺬﻋﺮ اﻟﻤﺨﺼﺺ ﻟﺪﻳﻨﺎ‬
‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺒﺪأ ﺟﻮﻟ ﺔ أﺧﺮى ﻣﻦ اﻟ‬
‫ﻧ‬

‫ﺗﻨ ﺴﻴﻖ ﻣﻠﻒ اﻹدﺧﺎل‬


‫‪5.7.3‬‬

‫ﺘﻐﻴﺮ‪.‬‬
‫ﺘ ﻲﻳﻤﻜﻦ أنﺗ‬
‫ﺑﻤﻠﻔﺎ ت اﻹدﺧﺎل اﻟ‬
‫ﺘﻌﻴﻦﺗﺰوﻳﺪ ‪AFL ++‬‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬ﻣﺨﺼﺺ ‪ ،‬ﻻﻳﺰالﻳ‬‫ﺘﻰ ﻣﻊ وﺟﻮد‬
‫ﺣ‬
‫ﺘﻢﺗﺠﻤﻴﻌﻬﺎ ﻣﻌً ﺎ ﻓ ﻲ‬
‫ﺘ ﻲﻳ‬
‫ﺑﺸﻜﻞﺗﻌ ﺴﻔ ﻲ ﻣﻦ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺮﺳﺎﺋﻞ اﻟﻤ ﺴﻤﺎة ﻣﻦ ﻧﻔ ﺲ اﻟﺤﺠﻢ ‪ ،‬واﻟ‬‫ﺘﺄﻟﻒ‬
‫ﺘﺸﻮﻳ ﺶ‪ .‬و ﻫﻮﻳ‬
‫ﻟﺬﻟﻚ ‪،‬ﺗﻢﺗﺼﻤﻴﻢﺗﻨ ﺴﻴﻖ ﻣﺨﺼﺺﺗﻢﺗﺤ ﺴﻴﻨﻪ ﻟﻠ‬
‫ﺜﺎل ﻓ ﻲ ﺣﺪ ث ‪USB.‬ﻳﻤﻜﻦ رؤﻳ ﺔﺗﻌﺮﻳﻒ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒ ﺐ ﻋﲆﺳ‬
‫ﺘﺴ‬ ‫ﺘﺼﺮ ﻋﲆ رﺳﺎﻟ ﺔ ‪USB ،‬وﻟﻜﻦﻳﻤﻜﻦ أ ً‬
‫ﻳﻀﺎ أنﺗ‬ ‫اﻟﻤﻠﻒ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻬﺎﺗ ﺴﻤﻰ رﺳﺎﺋﻞ ‪ ،‬إﻻ أﻧﻬﺎ ﻻﺗﻘ‬
‫اﻟﺮﺳﺎﻟ ﺔ اﻟﻮاﺣﺪة ﻓ ﻲ اﻟﻜﻮد ‪5.14.‬‬

‫ﺑﻴﺎﻧﺎ ت ؛ ‪ } usb_msg_t‬؛ ]‪uint8_t [0x40‬‬


‫؛ ‪ uint8_t data_size‬؛‪typedef Struct usb_msg { uint8_t type‬‬

‫ﺗﻨ ﺴﻴﻖ إدﺧﺎل ‪USB.‬‬


‫اﻟﻜﻮد ‪5.14:‬‬
‫‪Machine Translated by Google‬‬

‫‪5.7 USB FUZZING‬‬ ‫‪30‬‬

‫ﺒﻴﺎﻧﺎ ت‬
‫ﺋﻤﺎ‪ .‬وﻟﻬﺬه اﻟﻐﺎﻳ ﺔ ‪ ،‬ﻓﺈن ﻛﻼ ﻣﻦ اﻟﻨﻮع وﺣﺠﻢ اﻟ‬
‫ﺒﺎﺷﺮ دا ً‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺋﻲ‬
‫ﺛﻴﺮ ﻣﺮ‬
‫ﺘﻘﻠﻴ ﺐ اﻹدﺧﺎلﺗﺄ‬
‫ﻳﻬﺪرﺗﻨ ﺴﻴﻖ اﻹدﺧﺎل أﻗﻞ ﻣ ﺴﺎﺣ ﺔ ﻣﻤﻜﻨ ﺔ ‪ ،‬ﻟﺬﻟﻚﻳﺠ ﺐ أنﻳﻜﻮن ﻟ‬
‫ﺑﺎﻳ ﺖ‬‫ﺑ ﺴﻬﻮﻟ ﺔ‬‫ﺑﺎﻳ ﺖ ‪ ،‬ﻟﺬا ﻓﺈن اﻟﺤﺠﻢ اﻷﻗﺼﻰﻳﻨﺎﺳ ﺐ‬
‫ﺑﺤﺪ أﻗﺼﻰ ‪0x40‬‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘﺨﺪام اﻟﻤﺰﻳﺪ ‪ .‬ﻛﻤﺎ رأﻳﻨﺎ ‪،‬ﺗﻜﻮن اﻟ‬
‫ﺑﺎﻳ ﺖ واﺣﺪ ﻓ ﻲ اﻟﺤﺠﻢ ‪ ،‬ﺣﻴ ﺚ ﻻﻳﻤﻜﻨﻬﻢ اﺳ‬‫ﻫﻤﺎ ﻓﻘﻂ‬
‫ﺒﻠ ﻲ‪.‬‬
‫ﺘﻘ‬‫ﺘﻮﺳﻊ اﻟﻤ ﺴ‬
‫ﺒ ﺴﺎﻃ ﺔ واﻟ‬
‫ﺑﺎﻳ ﺖ واﺣﺪ ‪ ،‬ﻓﻘﺪﺗﻢﺗﺠﻨ ﺐ ذﻟﻚ ﻣﻦ أﺟﻞ اﻟ‬‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ‬
‫ﺑﻴﻦ اﻟﻨﻮع وﺣﺠﻢ اﻟ‬‫واﺣﺪ‪ .‬ﻓ ﻲ ﺣﻴﻦ أﻧﻪﻳﻤﻜﻦ إ ﻫﺪار ﻣ ﺴﺎﺣ ﺔ أﻗﻞ ﻣﻦ ﺧﻼل اﻟﺠﻤﻊ‬

‫ﺘﺎ ت‪ .‬إذا ﻛﺎن ﺣﺠﻤﻬﺎ‬


‫ﺒ‬‫ﺒﻴﺮة ﻓ ﻲﺗﻔ ﺴﻴﺮ اﻹدﺧﺎل ‪ ،‬ﻣﻊﺗﻐﻴﻴﺮ ﻋﺪد ﻣﺤﺪود ﻓﻘﻂ ﻣﻦ اﻟ‬
‫ﺑﺤﻴ ﺚ ﻻﻳﻜﻮن ﻟﻬﺎﺗﻐﻴﻴﺮا ت ﻛ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘﻢﺗﺤﺪﻳﺪ ﺣﺠﻢ اﻟ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳ‬
‫ﺒﻴﺮ ﻋﲆ ﺟﻤﻴﻊ اﻟﺮﺳﺎﺋﻞ اﻟﻼﺣﻘ ﺔ‪.‬‬
‫ﺛﻴﺮ ﻛ‬
‫ﺒﻴﺎﻧﺎ تﺳﻴﻜﻮن ﻟﻪﺗﺄ‬
‫ﺴﻴﻄﺎ ﻓ ﻲ ﺣﺠﻢ اﻟ‬
‫ً‬ ‫ﺑ‬‫ﺒﻴﺎﻧﺎ ت ﻛﻤﻌﻠﻮﻣﺎ ت ﻋﻦ ﺣﺠﻤﻬﺎ ‪ ،‬ﻓﺈنﺗﻐﻴﻴ ﺮًا‬
‫ﺘﺨﺪام ﺣﺠﻢ اﻟ‬
‫ﺑﺎﺳ‬‫ﺘﻐﻴ ﺮًا ‪،‬‬
‫ﻣ‬

‫ﺗﻤﺎﻣﺎ‪ .‬ﻻﻳﺆدي ﻫﺬا‬


‫ً‬ ‫ﺘﻐﻴﺮ اﻟﺮﺳﺎﺋﻞ اﻟﻼﺣﻘ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت أوﺗﻘﻠﻴﺼﻬﺎ ‪-‬ﻓﻘﺪﺗ‬
‫ﺜﺎل ﻋﻦ ﻃﺮﻳﻖﺗﻮﺳﻴﻊ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻐﻴﻴﺮ ﻓ ﻲ ﻫﺬا اﻟﻤﺠﺎل ‪-‬ﻋﲆﺳ‬
‫ﻧﻈ ًﺮاﻷن اﻟﻤﺼﻬﺮ ﻻﻳﻌﺮفﺗﻔ ﺴﻴﺮ اﻟ‬
‫ﺑ ﺴﺮﻋ ﺔ‪.‬‬‫ﺑ ﺔ‪.‬ﺳﻴﻜﻮن ﻣﻦ اﻟﺼﻌ ﺐﺗﺤﺪﻳﺪ اﻟﺮﺳﺎﺋﻞ اﻟﻤﻬﻤ ﺔ‬
‫ﺜﺮ ﺻﻌﻮ‬
‫ﺒﺎر أﻛ‬
‫ﺘ‬‫ﺘﺎج ﺣﺎﻻ ت اﻻﺧ‬ ‫ﺑﻞﺳﻴﺠﻌﻞ أ ً‬
‫ﻳﻀﺎ إﻋﺎدة إﻧ‬ ‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟﺰﻏ ﺐ ﻓﺤ ﺴ ﺐ ‪،‬‬
‫إﱃﺗﻘﻠﻴﻞ اﻟ‬

‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺘﻢﺗﻨﻔﻴﺬ اﻷﻧﻮاع اﻟ‬
‫ﺑﺎﻟﻌﻮدة إﱃﺗﻌﺮﻳﻒ اﻟﺮﺳﺎﻟ ﺔ ‪،‬ﻳ‬

‫ﺑﻴﺎﻧﺎ ت ﻫﺬه اﻟﺮﺳﺎﻟ ﺔ ﻛﺤﺰﻣ ﺔ إﻋﺪاد ‪USB 28‬وإرﺳﺎﻟﻬﺎ إﱃ‬‫‪• SETUP:‬ﻳﺠ ﺐ ﻣﻌﺎﻣﻠ ﺔ‬
‫ﺳﺎﺋﻖ ‪USB‬وﻓﻘﺎ ﻟﺬﻟﻚ‪.‬‬

‫ﺑﻴﺎﻧﺎ ت ‪USB‬وإرﺳﺎﻟﻬﺎ إﱃ ‪USB‬‬‫ﺑﻴﺎﻧﺎ ت ﻫﺬه اﻟﺮﺳﺎﻟ ﺔ ﻛﺤﺰﻣ ﺔ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ‬


‫ﺒﻴﺎﻧﺎ ت‪:‬ﻳﺠ ﺐ اﻟ‬
‫•اﻟ‬
‫وﻓﻘﺎ ﻟﺬﻟﻚ اﻟ ﺴﺎﺋﻖ‪.‬‬

‫ﺘﻮي ﺣﺪ ث‬ ‫ً‬
‫ﺒﺎﺷﺮة إﱃ ﻣﻌﺎﻟﺞ ﺣﺪ ث ‪USB‬اﻷﺳﺎﺳ ﻲ ﻣﻦ ‪SecureROM.‬ﻳﺤ‬
‫ﺗﻤﺮﻳﺮ ﻫﺎ ﻣ‬
‫ﺒﻴﺎﻧﺎ ت ﻛﺤﺪ ث ‪USB t‬و‬
‫ﺑﻌ ﺔ اﻷوﱃ ﻣﻦ اﻟ‬
‫ﺘﺎ ت اﻷر‬
‫ﺒﺎﻳ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟ‬
‫ﺘﻢ اﻟ‬
‫•اﻟﺤﺪ ث‪:‬ﻳ‬
‫ﺘﺼﻞ وإﻋﺎدةﺗﻌﻴﻴﻦ ‪USB.‬‬
‫ﺑﻞ ﻏﻴﺮ ﻣ‬
‫ﺘﺼﻞ وﻛﺎ‬
‫ﺒﻞ ﻣ‬
‫ﺘﺎﻟﻴ ﺔ ‪- known29 - pos sible:‬ﻛ‬
‫‪USB t‬ﻋﲆ اﻟﻘﻴﻢ اﻟ‬

‫ﺒﻴﺎﻧﺎ ت ﻋﲆ أﻧﻬﺎ ‪uint64 t ،‬ﻣﻤﺎﻳﺸﻴﺮ إﱃ ﻋﺪد اﻟﻤﻠﻞ‬


‫ﺑﺎﻳ ﺖ ﻣﻦ اﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ أول ‪8‬‬
‫ﺘﻢ اﻟ‬
‫‪• SLEEP:‬ﻳ‬
‫ﺛﻮاﻧﻰ ﻟﻠﻨﻮم‪.‬‬

‫•ﻻ‪ :‬ﻻﺗﻔﻌﻞ ﺷﻴ ًﺌﺎ‪.‬‬

‫ﺒﺖ‬
‫ﺜ‬‫ﺛﻨﻴﻦ اﻵﺧﺮﻳﻦ ﻟﻴ ﺴﻮا ﻛﺬﻟﻚ‪.‬ﻳﻤﻜﻦ أنﻳ‬
‫ﺑﺄن اﻻ‬‫ﺘﺄﻛﻴﺪ أنﻳﺠﺎدل‬
‫ﺑﺎﻟ‬‫ﺒ ﺐ اﻟﺤﺎﺟ ﺔ إﻟﻴﻬﺎ ‪،‬ﻳﻤﻜﻦ ﻟﻠﻤﺮء‬
‫ﺒ ﺔ إﱃ ‪SETUP‬و ‪DATA‬و ‪EVENT ،‬ﻣﻦ اﻟﻮاﺿﺢﺳ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺑﻴﻨﻤﺎ‬
‫ﺒﻄﻴﺌ ﺔ أو ﻣﺤﺎوﻟ ﺔ ‪AFL ++‬‬
‫ﺒﺎر اﻟ‬
‫ﺘ‬‫ﺒﺎق‪ .‬ﻟﻠﺤﺪ ﻣﻦ أيﺗﺪ ﻫﻮر ﻣﺰﻋﺞ ‪-‬ﺳﻮاء ﻛﺎن ذﻟﻚ ﻓ ﻲ ﺣﺎﻻ ت اﻻﺧ‬
‫ﺘﻤﺪ ﻋﲆ ﻇﺮوف اﻟ ﺴ‬
‫ﺘﻤﻞﻳﻌ‬
‫‪SLEEP‬أﻧﻪ ﻣﻔﻴﺪ ‪ ،‬إذا ﻛﺎن اﻻﻧﻬﻴﺎر اﻟﻤﺤ‬
‫ﺑﻪ ﻫﻮ ‪10.‬‬‫ﺛﺎﻧﻴ ﺔ اﻟﻤ ﺴﻤﻮح‬‫ﺒﺎر ﻣﻌﻠﻘ ﺔ ‪ ،‬ﻓﺈن اﻟﺤﺪ اﻷﻗﺼﻰ ﻟﻌﺪد اﻟﻤﻠﻠ ﻲ‬
‫ﺘ‬‫ﻹﻧﺸﺎء ﺣﺎﻻ ت اﺧ‬

‫ﺘﺄﻛﻴﺪ إزاﻟ ﺔ ‪NOP ،‬ﻟﻜﻦﺗﻨﻔﻴﺬه‬


‫ﺑﺎﻟ‬‫ﺜﻴ ﺮًا ﻓ ﻲ ﻧﻔ ﺲ اﻟﻮﻗ ﺖ‪ .‬ﻣﻦ ﻧﺎﺣﻴ ﺔ أﺧﺮى ‪،‬ﻳﻤﻜﻦ‬
‫ﺘﺸﻮﻳ ﺶ ﻛ‬
‫ﺑﻄﺎء اﻟ‬
‫ﺒﺎق ‪ ،‬ﻣﻊ ﻋﺪم إ‬
‫ﺛﺎرة ﻣﻌﻈﻢ ﻇﺮوف اﻟ ﺴ‬
‫ﺘًﺎ ﻛﺎﻓ ًﻴﺎ ﻹ‬
‫ﻳﺠ ﺐ أنﻳﻤﻨﺢ ﻫﺬا وﻗ‬
‫ﻛﺎنﺗﺎﻓﻬﺎ ً أ ً‬
‫ﻳﻀﺎ‪.‬‬

‫ﺘﺸﻮﻳ ﺶ ‪USB‬‬
‫ﺑﺖ ﻟ‬
‫ﺜﺎ‬
‫‪5.7.4‬اﻟﻮﺿﻊ اﻟ‬

‫ﺑﻂ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬واﺟﻬﻨﺎ‬


‫ﺘﺮا‬
‫ﺑﺪرﺟ ﺔ ﻣﺮﺿﻴ ﺔ ﻣﻊ اﻟ‬‫ﺘﻤﺮ ﻟﻠﻌﻤﻞ‬
‫ﺑﻘ ﺔ ‪ ،‬ﻛﺎن ﻫﻨﺎك ﻋﺪد ﻏﻴﺮ ﻗﻠﻴﻞ ﻣﻦ اﻟﻤﺸﺎﻛﻞ ﻓ ﻲ اﻟﺤﺼﻮل ﻋﲆ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻷﻗ ﺴﺎم اﻟ ﺴﺎ‬
‫ﺑ ﺔ‪ .‬ﻟ ﺴﻮء اﻟﺤﻆ ‪ ،‬ﻻﺗﺪﻋﻢ وﺣﺪة‬
‫ﺘﺎ‬
‫ﺑﻠ ﺔ ﻟﻠﻜ‬
‫ﺘﻌﺎدة ﻛﻞ اﻟﺬاﻛﺮة اﻟﻘﺎ‬
‫ﺘﻘﺎط واﺳ‬
‫ﻧﻔ ﺲ اﻟﻤﺸﻜﻠ ﺔ ﻣﺮة أﺧﺮى ﻛﻤﺎ رأﻳﻨﺎ ﻋﻨﺪﺗﺸﻮﻳ ﺶ ‪IMG4 ،‬ﻓﻘﺪﺗﻢ ﻗﻀﺎء ﻣﻌﻈﻢ اﻟﻮﻗ ﺖ ﻓ ﻲ اﻟ‬
‫ﺘﻮﻗﻒ ﻓ ﻲ ﻣﻜﺎن ﻣﺎ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﻘﺪ‬
‫ﺘﻌﻄﻞ ‪QEMU‬أو ﻧ‬
‫ﺑﻂ ﻋﲆ اﻹﻃﻼق‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻣﺎ زﻟﻨﺎ ﻧﺤﺎولﺗﺸﻐﻴﻠﻪ ‪ ،‬وﻟﻜﻦ دون ﺟﺪوى‪ .‬ﻋﻨﺪﺗﺸﻐﻴﻠﻪ ‪ ،‬إﻣﺎ أنﻳ‬
‫ﺘﺮا‬
‫‪kernel‬اﻟ‬
‫ﺘﻪ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪6.5.‬‬
‫ﺘﻘﻞ ‪ ،‬ﻛﻤﺎﺗﻤ ﺖ ﻣﻨﺎﻗﺸ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻟ‬
‫ﺘﺸﻮﻳ ﺶ ﻓ ﻲ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬ ‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﺘﺨﺪام اﻟﻮﺿﻊ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﻴ ﺮًا‬
‫ﺒﻨﺎﺗ ﺴﺮﻳﻌً ﺎ ﻛ‬
‫ﺘﺴ‬‫اﻛ‬

‫ﺒﻴﺎﻧﺎ ت‪ .‬وﻓ ًﻘﺎ ﻟﻤﻌﻴﺎر ‪USB ،‬ﻳﻌﺪ اﻹﻋﺪاد‬


‫ﺗﻮﻛﻮل ‪DFU ،‬ﻳﻤﻜﻦ أنﺗﻜﻮن ﺣﺰم ‪USB‬ﻣﻦ ﻧﻮﻋﻴﻦ‪ :‬اﻹﻋﺪاد واﻟ‬
‫ﺑﺮو‬‫‪28‬ﻓ ﻲ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺜﺮ ﻣﻦ ﺣﺰم اﻟ‬
‫ﺒﻊ اﻟﺤﺰﻣ ﺔ ﺻﻔﺮ أو أﻛ‬
‫ﺘ‬‫ﺋﻤﺎ ﻣﺎﻳ‬
‫دا ً‬
‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ‪.‬‬
‫ﺛﻨﺎء اﻟ‬
‫ﺜﻮر ﻋﲆ ﻋﻨﺎﺻﺮ إﺿﺎﻓﻴ ﺔ أ‬
‫ﺘﻢ اﻟﻌ‬
‫‪29‬ﻟﻢﻳ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻤﻜﻴﻦ ﺧﻴﻮط وآﻣﻨ ﺔ )‪(FETA‬‬


‫‪5.8‬ﻣﺨﺼﺺﺗﺠﻤﻴﺪ ‪-‬‬ ‫‪31‬‬

‫ﺗﺨﺼﻴﺺ )‪Fuzzing-Enable Thread-safe Allocator (FETA‬‬


‫‪5.8‬‬
‫ﺑﻴﻨﻤﺎ‬ ‫ﺘﻐ ﻼ ً‬
‫ﺑﻮاﺳﻄ ﺔ ‪checkm8.‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻋﻨﺪ ﻣﺤﺎوﻟ ﺔﺗﺸﻐﻴﻞ ‪UAF‬ﻳﺪوﻳًﺎ ‪ ،‬ﻻﺣﻈﻨﺎ أﻧﻪ‬ ‫ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎنﺗﺸﻮﻳ ﺶ ‪USB‬ﻧﺎﺟﺤًﺎ ‪ ،‬أردﻧﺎ ﻣﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎنﺳﻴﺠﺪ ‪UAF‬ﻣ ﺴ‬
‫ﺘﺮي اﻟﻤﺤﺮر ﻣﺮة أﺧﺮى‪.‬‬
‫ﺘﻢﺗﺨﺼﻴﺺ اﻟﻤﺸ‬
‫ﺘ ﺐ ﻓﻴﻬﺎ ﻣﺸﻐﻞ ‪USB‬إﱃ اﻟﻤﺆﺷﺮ اﻟﻤﺤﺮر ‪،‬ﻳ‬
‫ﺘ ﻲﻳﻜ‬
‫ﺘﻌﻄﻞ‪ .‬ﻋﻨﺪ اﻟﻨﻘﻄ ﺔ اﻟ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﺟﻌﻠﻪﻳ‬
‫ﻛﻨﺎ ﻗﺎدرﻳﻦ ﻋﲆﺗﺸﻐﻴﻞ ‪UAF ،‬ﻟﻢ ﻧ‬
‫ﺘﻠ ﺔ ﻛﻮﻣ ﺔ‬
‫ﺒﻞ‪ .‬ﻟﺬﻟﻚ ‪،‬ﻳﺸﻴﺮ اﻟﻤﺆﺷﺮ اﻟﻤﺤﺮر إﱃ ﻛ‬
‫ﺘﻢﺗﺨﺼﻴﺺ ‪bu er‬ﻓ ﻲ ﻧﻔ ﺲ اﻟﻤﻮﻗﻊ ﻛﻤﺎ ﻛﺎن ﻣﻦ ﻗ‬
‫ﺑﻘ ﺔ ﻟﺬﻟﻚ ‪،‬ﻳ‬
‫إذا ﻟﻢﻳﻜﻦ ﻫﻨﺎك ﻛﻮﻣ ﺔ ﻣﻌﻘﺪة ﻣﻦ ‪feng shui‬ﺳﺎ‬
‫ﺘﺎﻟ ﻲ دون اﻟﺤﺎﺟ ﺔ‬
‫ﺑﺎﻟ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦﺗﺨﻄﻴﻂ اﻟﻜﻮﻣ ﺔ ‪-‬و‬
‫ﺘﺸﺎف ‪UAF‬‬
‫ﺘﻜﻮن ﻗﺎد ًرا ﻋﲆ اﻛ‬
‫ﺑﺪون ﻣﺸﻜﻠ ﺔ‪ .‬ﻟ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪USB‬‬‫ﺑﺔ ﻓ ﻲ‬
‫ﺘﺎ‬
‫ﺗﻨﺠﺢ اﻟﻜ‬
‫ﺗﻤﺎﻣﺎ ﻣﺮة أﺧﺮى و‬
‫ً‬ ‫ﺻﺎﻟﺤ ﺔ‬
‫ﺜﻮر أوﻻ ً ﻋﲆ ﻛﻮﻣ ﺔ ﻋﻤﻞ ‪feng shui -‬أﻧﺸﺄﻧﺎ ‪"Fuzzing-Enabled Thread-safe Allocator" (FETA).‬‬
‫إﱃ ‪fuzzer‬ﻟﻠﻌ‬

‫ﺋﻴ ﺴ ﻲ ﻟـ ‪ FETA‬ﻫﻮ‬
‫ﺗﻬﺎ اﻟﺨﺎﺻ ﺔ ﻓ ﻲ ‪FETA.‬اﻟﻬﺪف اﻟﺮ‬ ‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ إﱃﺗﻄ‬
‫ﺒﻴﻘﺎ‬ ‫ﺘﺬ ﻫ ﺐ‬
‫ﺘﺼﺤﻴﺢ ﻫﺬه اﻟﻤﻜﺎﻟﻤﺎ ت ﻟ‬
‫ﺑ‬‫ﺒﺎﺷﺮ ﻟـ ‪malloc‬وﻣﺠﺎﻧ ﻲ ‪ ،‬ﻟﺬﻟﻚ ﻗﻤﻨﺎ‬
‫ﺑﺪﻳﻞ ﻣ‬‫إﻧﻪ‬
‫ﺜﻞ اﻟﻔﻴﻀﺎﻧﺎ ت أو ‪UAF ،‬ﻣﻊ ﻛﻮﻧﻪ آﻣﻨًﺎ أ ً‬
‫ﻳﻀﺎ‪.‬ﻳﺤﻘﻖ ‪ FETA‬ﻫﺬا ‪ ،‬ﻣﻦ ﺧﻼلﺗﻌﻴﻴﻦ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﺼﻔﺤﺎ ت‬ ‫ﺘﺸﺎف أي ﻣﺸﻜﻼ ت ﻓ ﻲ اﻟﻜﻮﻣ ﺔ ﻗﺪﻳﻮاﺟﻬﻬﺎ اﻟﻤﺼﻬﺮ ‪ ،‬ﻣ‬
‫اﻛ‬
‫ﺘﺨﺼﻴﺺ‬
‫ﺘﺨﺪام ﻟﻠ‬
‫ﺒ ﺐ ﻫﺬا ‪ ،‬ﻓﺈن أي اﺳ‬
‫ﺑﺴ‬‫ﺑﻠ ﺔ‪ .‬و‬
‫ﺘﻢ إﻟﻐﺎءﺗﻌﻴﻴﻦ اﻟﺼﻔﺤﺎ ت اﻟﻤﻘﺎ‬
‫ﺘ ﺔ ‪،‬ﻳ‬
‫ﺘﻢﺗﺤﺮﻳﺮﺗﺨﺼﻴﺺ ﻛﻮﻣ ﺔ اﻟﺬاﻛﺮة اﻟﻤﺆﻗ‬
‫ﻟﻜﻞﺗﺨﺼﻴﺺ ﻛﻮﻣ ﺔ ﻣﻄﻠﻮ ب‪ .‬ﻋﻨﺪﻣﺎﻳ‬
‫ﺘﻢ‬
‫ﺘﺎﻟ ﻲ ﻟﻦﻳ‬
‫ﺑﺎﻟ‬
‫ﺑﻖ ﻣﺮة أﺧﺮى ‪-‬و‬
‫ﺘﺨﺼﻴﺺ اﻟ ﺴﺎ‬
‫ﺘﺨﺼﻴﺺ اﻟﻤﺬﻛﻮر‪ .‬ﻟﻀﻤﺎن ﻋﺪمﺗﻌﻴﻴﻦ اﻟ‬
‫ﺘﻰ ﻟﻮ ﻛﺎن ﻣﺠﺮد ﻗﺮاءة ﻟﻠ‬
‫ﺋﺔ ‪ ،‬ﺣ‬
‫اﻟﻤﺤﺮر ‪،‬ﺳﻴﺆدي ﻋﲆ اﻟﻔﻮر إﱃ ﺣﺪو ث ﺧﻄﺄﺗﺠﺰ‬
‫ﺘ ﺔ‪.‬‬
‫ﺑ‬‫ﺛﺎ‬‫ﺘﻢﺗﻌﻴﻴﻦ اﻟﺼﻔﺤﺎ ت ﻋﲆ ﻋﻨﺎوﻳﻦ‬
‫ﺘﺨﺼﻴﺼﺎ ت اﻟﺠﺪﻳﺪة ﻓﻘﻂ وﻳ‬
‫ﺗﺰداد ﻋﻨﺎوﻳﻦ اﻟ‬
‫ﺘﺸﺎف ‪UAF ،‬‬
‫اﻛ‬

‫ﺘﺨﺼﻴﺺ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟﺼﻔﺤﺎ ت اﻟﻤﻌﻴﻨ ﺔ‬


‫ﺑﺤﻴ ﺚﺗﻜﻮن ﻧﻬﺎﻳ ﺔ اﻟ‬‫ﺘﺨﺼﻴﺺ ‪،‬‬
‫ﺗﺠﻊ ﻟﻠ‬
‫ﺘﻢ ﺣ ﺴﺎ ب اﻟﻌﻨﻮان اﻟﻤﺮ‬
‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻟﻤﻨﻊ أيﺗﺠﺎوزا ت أو ﻋﻤﻠﻴﺎ ت ﻗﺮاءة زاﺋﺪة ‪،‬ﻳ‬
‫ﺗﻤﺎﻣﺎ‪.‬‬
‫ً‬
‫ّﻴﻨ ﺔ ‪ ،‬ﻣﻤﺎﻳﻀﻤﻦﺗﻌﻄﻞﺗﺠﺎوز أوﺗﺠﺎوز اﻟﻘﺮاءة‪.‬‬
‫ﺘﺠﺎورﻳﻦ ‪،‬ﺗﻮﺟﺪ ﺻﻔﺤ ﺔ ﺣﻤﺎﻳ ﺔ ﻏﻴﺮ ﻣﻌ‬
‫ﺑﻴﻦ أيﺗﺨﺼﻴﺼﻴﻦ ﻣ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬‬

‫ﺘﻘﺎط ﺣﺎﻟ ﺔ اﻟﻜﻮﻣ ﺔ‬


‫ﺑﺎﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻮﺻﻔﻴ ﺔ ﻟـ ‪FETA‬‬ ‫ً‬
‫ﺒﺎﺷﺮة‪.‬ﺗ ﺴﻤﺢ اﻟ‬
‫ﺗﺠﻊ ﻣ‬
‫ﺒﻞ اﻟﻤﺆﺷﺮ اﻟﻤﺮ‬
‫ﺘﻌﺮﻳﻒ اﻟﻤﻘﻄﻮﻋ ﺔ ﻗ‬
‫ﺑﻴﺎﻧﺎ ت اﻟ‬‫أﺧﻴ ﺮًا ‪،‬ﻳﺨﺰن ‪FETA‬ﻣﺆﺷ ﺮًا إﱃ ﻣﻌﻠﻮﻣﺎ ت‬
‫ﺘﻘﺎط أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺘﺎج ‪FETA‬إﱃ اﻻﻟ‬
‫ﺘﺎﻟ ﻲ ﻻﻳﺤ‬
‫ﺑﺎﻟ‬
‫ﺘﻨﻔﻴﺬ اﻟﻠﻘﻄﺎ ت ‪ ،‬و‬
‫ﺑ‬‫ﺘﺨﺪام ﻫﺬا ﺣﺎﻟ ًﻴﺎ ‪ ،‬ﻧﻈ ًﺮاﻷن ‪AFL ++‬ﻧﻔ ﺴﻪﻳﻘﻮم‬
‫ﺘﻢ اﺳ‬
‫ﺑﻘ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻻﻳ‬
‫ﺘﻌﺎدة اﻟﻜﻮﻣ ﺔ إﱃ ﻟﻘﻄ ﺔﺳﺎ‬
‫واﺳ‬

‫ﺘﺨﺼﻴﺺ اﻷوﻟ ﻲﺳﻴﺤﺪ ث‬


‫ﺘﺮض أن ﺣﺠﻢ اﻟﺼﻔﺤ ﺔ اﻟﻘﻴﺎﺳ ﻲ ﻫﻮ ‪0x1000‬وأن اﻟ‬
‫ﺘﻬﺎ ﻓ ﻲ اﻟﻜﻮد ‪5.15.‬ﻧﻔ‬
‫ﺘ ﻲﺗﻤ ﺖ رؤﻳ‬
‫ﺘﺨﺼﻴﺼﺎ ت اﻟ‬
‫ﺜﻠ ﺔ اﻟ‬
‫ﺑﻌﺾ أﻣ‬
‫ﻳﺼﻮر اﻟﺸﻜﻞ ‪5.1‬‬
‫ﻋﻨﺪ ‪0x20000.‬‬

‫ﺑﺎﻃﻞ ؛ )‪(0x1000‬‬
‫ﺑﺎﻃﻞ ؛ )‪* chunk1 = malloc (0x100‬‬
‫ﺑﺎﻃﻞ ؛ )‪= malloc (0x201‬‬
‫‪* chunk2 = malloc‬‬
‫‪* chunk3‬ﻣﺠﺎﻧ ﻲ ؛ )‪(chunk2‬‬

‫ﺘﺨﺼﻴﺼﺎ ت‪.‬‬
‫ﺜﺎل ﻋﲆ اﻟ‬
‫اﻟﺮﻣﺰ ‪5.15:‬ﻣ‬

‫ﺘﻐﻄﻴ ﺔ‬
‫‪5.9‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬

‫ﺘﻞ اﻟﻤﻐﻄﺎة ‪32‬ﻗﺪﺗﻌﺮﺿ ﺖ‬


‫ﺜﺎل ‪-‬ﻻﻳﻌﻄ ﻲ أي إﺷﺎرة إﱃ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻜ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻐﻄﻴ ﺔ ‪ ،‬ﻓﻬﻮ ﻣﺤﺪود ﻟﻠﻐﺎﻳ ﺔ ‪-‬ﻋﲆﺳ‬
‫ﺑﻌﺾ ﻣﻌﻠﻮﻣﺎ ت اﻟ‬‫ﺑﺎﻟﻔﻌﻞ‬
‫ﺑﻴﻨﻤﺎﻳﻮﻓﺮ ‪AFL ++‬‬
‫ﺘﻞ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ ﻓ ﻲ اﻟﻮﺻﻮل إﻟﻴﻬﺎ‬ ‫ﺑﺎﻟﻔﻌﻞ ﻟﻴ ﺲ ﻓﻘﻂ ﻓ ﻲ اﻟﻮﺻﻮل إﱃ ﻣﻌﻈﻢ اﻟﻜ‬‫ﺘﻐﻄﻴ ﺔ ﻗﺪ ﻧﺠﺢ‬
‫ﺑﺎﻟ‬‫ﺘﻼﻋ ﺐ اﻟﻤﻮﺟﻪ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻣﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن اﻟ‬
‫ﺜﻴ ﺮًا أم ﻻ‪ .‬ﻟﻜ ﻲ ﻧ‬
‫ﻟﻠﻀﺮ ب ﻛ‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﺪاﺧﻠﻴ ﺔ ﻟـ‬
‫ﺑﻂ اﻟﻜ‬
‫ﺑﺮ‬‫ﺘ ﻲﺗ ﺴﻤﺢ‬
‫ﺘﻄﻮﻳﺮ اﻟﻤﻜﻮﻧﺎ ت اﻹﺿﺎﻓﻴ ﺔ اﻟ‬
‫ﺒﻴﻘﺎ ت ﻟ‬
‫ﺑﺮﻣﺠ ﺔﺗﻄ‬‫ﺘﺨﺪام ﺷ ﻲء آﺧﺮ‪ .‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪،‬ﺗﻮﻓﺮ ‪QEMU‬واﺟﻬ ﺔ‬
‫ﺜﻴ ًﺮا ‪ ،‬ﻛﺎن ﻋﻠﻴﻨﺎ اﺳ‬
‫ﻛ‬
‫‪QEMU [21].‬‬

‫ﺘﻐﻼل‪.‬‬
‫ﺘﺨﺼﻴﺼﺎ ت اﻟﻤﺤﺮرةﻳﻤﻜﻦ أنﺗ ﺴﺎﻋﺪ ﻓ ﻲ اﻻﺳ‬
‫ﺒﺎ ت ﻋﻦ ﻃﺮﻳﻖ ﻗﺮاءة اﻟ‬
‫ﺘ ﺴﺮﻳ‬
‫ﺘﻰ اﻟ‬
‫‪30‬ﺣ‬
‫ﺘﻤﺎلﺗ ﺴﺮ ب اﻟﻜﻮﻣ ﺔ‪.‬‬
‫ﺜﺮ ﻣﻦ اﻟﺠﺰء اﻟﻤﺨﺼﺺ ‪ ،‬ﻣﻤﺎﻳﺆدي ﻣﺮة أﺧﺮى إﱃ اﺣ‬
‫‪31‬ﻗﺮاءة أﻛ‬
‫ﺘﺪﻓﻖ‪.‬‬
‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟ‬
‫ﺒﻴﺎﻧ ﻲ اﻟﻘﻴﺎﺳ ﻲ ﻟﻠ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ ﻓ ﻲ اﻟﺮﺳﻢ اﻟ‬
‫ﺘﻞ ﻓﻴﻤﺎﻳﻠ ﻲ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﺸﻴﺮ إﱃ اﻟﻜ‬
‫ﻋﻨﺪﻣﺎ ﻧﺸﻴﺮ إﱃ اﻟﻜ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻤﻜﻴﻦ ﺧﻴﻮط وآﻣﻨ ﺔ )‪(FETA‬‬


‫‪5.8‬ﻣﺨﺼﺺﺗﺠﻤﻴﺪ ‪-‬‬ ‫‪32‬‬

‫اﻟﺼﻔﺤﺎ ت اﻟﻤﻌﻴﻨ ﺔ‬ ‫ﺻﻔﺤ ﺔ اﻟﺤﺮس‬

‫ﻛﻮﻣ ﺔ ﻗﻄﻌ ﺔ‬ ‫ﺗﺤﺮﻳﺮ اﻟﺼﻔﺤﺎ ت‬


‫‪0x20000‬‬

‫اﻟﻌﻨﻮان اﻟﺤﺎﻟ ﻲ‬

‫)أ( ﺣﺎﻟ ﺔ اﻟﻜﻮﻣ ﺔ اﻷوﻟﻴ ﺔ‪.‬‬

‫‪0x20f00‬‬ ‫‪0x22000‬‬

‫ﻗﻄﻌ ﺔ ‪1‬‬ ‫اﻟﻌﻨﻮان اﻟﺤﺎﻟ ﻲ‬

‫ﺘﺨﺼﻴﺺ اﻷول‪.‬‬
‫ﺑﻌﺪ اﻟ‬‫) ب(‬

‫‪0x20f00‬‬ ‫‪0x24000‬‬

‫ﻗﻄﻌ ﺔ ‪1‬‬ ‫ﻗﻄﻌ ﺔ ‪2‬‬ ‫اﻟﻌﻨﻮان اﻟﺤﺎﻟ ﻲ‬

‫ﺜﺎﻧ ﻲ‪.‬‬
‫ﺘﺨﺼﻴﺺ اﻟ‬
‫ﺑﻌﺪ اﻟ‬‫)ج(‬

‫‪0x20f00‬‬ ‫‪0x25dff‬‬ ‫‪0x26000‬‬

‫ﻗﻄﻌ ﺔ ‪1‬‬ ‫ﻗﻄﻌ ﺔ ‪2‬‬ ‫ﻗﻄﻌ ﺔ ‪3‬‬ ‫اﻟﻌﻨﻮان اﻟﺤﺎﻟ ﻲ‬

‫ﺜﺎﻟ ﺚ‪.‬‬
‫ﺘﻮزﻳﻊ اﻟ‬
‫ﺑﻌﺪ اﻟ‬‫)د(‬

‫‪0x20f00‬‬ ‫‪0x25dff‬‬ ‫‪0x26000‬‬

‫ﻗﻄﻌ ﺔ ‪1‬‬ ‫ﻗﻄﻌ ﺔ ‪2‬‬ ‫ﻗﻄﻌ ﺔ ‪3‬‬ ‫اﻟﻌﻨﻮان اﻟﺤﺎﻟ ﻲ‬

‫ﺑﻌﺪ اﻟﺤﺮة‪.‬‬‫)ه(‬

‫ﺘﺨﺼﻴﺼﺎ ت‪.‬‬
‫ﺜﻠ ﺔ اﻟ‬
‫ﺗﺼﻮر أﻣ‬
‫اﻟﺸﻜﻞ ‪5.1:‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻐﻄﻴ ﺔ‬
‫‪5.9.‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬ ‫‪33‬‬

‫ﺘﺸﻮﻳ ﺶ ﻫ ﻲ ﻛﻤﺎﻳﻠ ﻲ‪ .‬أوﻻ ً ‪،‬ﻳﺤﻔﻆ ‪AFL ++‬أي ﻣﺪﺧﻼ تﺗﻮﻟﺪﺗﻐﻄﻴ ﺔ ﺟﺪﻳﺪة ﻟﻤﻠﻒ ‪،‬ﻳﺸﺎر إﻟﻴﻬﺎ ﻓﻴﻤﺎ‬
‫ﺗﺼﻮرﺗﻐﻄﻴ ﺔ ﻋﻤﻠﻴ ﺔ اﻟ‬
‫اﻟﻔﻜﺮة اﻷﺳﺎﺳﻴ ﺔ وراء ﻗﻴﺎس و‬
‫ﺘﻪ‬
‫ﺜﻞ ﻣﻬﻤ‬
‫ﺘﻤ‬‫ﺗ‬
‫ﺘﺨﺪام ﻣﻜﻮن إﺿﺎﻓ ﻲ ﻣﺨﺼﺺ ‪ ،‬و‬
‫ﺑﺎﺳ‬
‫ﺘﻤﺎم‪.‬ﻳﻤﻜﻦﺗﺸﻐﻴﻞ ﻫﺬه اﻟﻌﻨﺎﺻﺮﻳﺪوﻳًﺎ واﺣﺪًاﺗﻠﻮ اﻵﺧﺮ ﻣﻦ ﺧﻼل ‪QEMU‬‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺑﻌﺪ ﻋﲆ أﻧﻬﺎ ﻣﺪﺧﻼ ت ﻣ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﻤ ﺴﺎﻋﺪ ‪[10].‬‬
‫ﺘﺨﺪام ﻧ ﺴﺨ ﺔ ﻣﻌﺪﻟ ﺔ ﻣﻦ اﻟ‬
‫ﺑﺎﺳ‬
‫ﺗﺠ ﺔ إﱃ ‪IDA‬‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻨﺎ‬
‫ﺘﻴﺮاد ﻣﻠﻔﺎ ت اﻟ‬
‫ﺘﻐﻄﻴ ﺔ ﻓ ﻲ ﻣﻠﻒ‪ .‬أﺧﻴ ﺮًا ‪،‬ﻳﻤﻜﻦ اﺳ‬
‫ﻓ ﻲ ﺣﻔﻆ ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ وﺟﻮد اﻹﺣﺼﺎﺋﻴﺎ ت اﻷوﻟﻴ ﺔ ﻓﻘﻂ‪.‬‬
‫ﺘﻐﻄﻴ ﺔ ﻋﲆ ﻣﺨﻄﻂﺗﺪﻓﻖﺗﺤﻜﻢ )‪(CFG‬‬
‫ﺘﻴﺢ ذﻟﻚ إﻣﻜﺎﻧﻴ ﺔﺗﺼﻮر اﻟ‬
‫‪Lighthouse‬ﻳ‬

‫ﺑ ﺴﻴﻂ ﻟﻠﻐﺎﻳ ﺔ‪.‬ﻳﻤﻜﻦ ﻟﻠﻤﺮءﺗﺤﺪﻳﺪ ﻧﻄﺎق اﻟﻌﻨﻮان اﻟﺬيﻳﺠ ﺐ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﻤ ﺴﺎﻋﺪ ‪QEMU ،‬ﻓﺈن اﻟﻤﻜﻮن اﻹﺿﺎﻓ ﻲ ﻓ ﻲ اﻟﻮاﻗﻊ‬
‫ﺒﻴﻘﺎ ت اﻟ‬
‫ﺑﺮﻣﺠ ﺔﺗﻄ‬‫ﺑﻔﻀﻞ واﺟﻬ ﺔ‬
‫ﺑ ﺖ ﻟﻜﻞ ﻋﻨﻮان ﻓ ﻲ اﻟﻨﻄﺎق اﻟﻤﺤﺪد‪ .‬ﻫﺬه اﻟﻤﺼﻔﻮﻓ ﺔ ‪،‬‬
‫ﺘﻮاء ﻋﺪد ﺻﺤﻴﺢ واﺣﺪ ﻣﻦ ‪16‬‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻻﺣ‬‫ﺒﻴﺮة‬
‫ﺛﻢﻳﺨﺼﺺ ﻣﺼﻔﻮﻓ ﺔ ﻋﺪد ﺻﺤﻴﺢ ‪ ،‬ﻛ‬‫ﺘﻪ‪.‬‬
‫ﺘﻘﺎطﺗﻐﻄﻴ‬
‫اﻟ‬
‫ﺘﻰ ﻟﻮﺗﻌﻄﻞ ‪QEMU‬أوﺗﻮﻗﻒ ‪،‬ﻳﺠ ﺐ أنﺗﻈﻞ‬
‫ﺘﻴﺠ ﺔ ﻟﻬﺬا ‪ ،‬ﺣ‬
‫ﺒﺎﺷﺮة ﻓ ﻲ اﻟﺬاﻛﺮة‪ .‬ﻧ‬
‫ﺑﻤﻠﻒ ﻣﻦ ﻧﻔ ﺲ اﻟﺤﺠﻢ ‪ ،‬ﻋﻦ ﻃﺮﻳﻖﺗﻌﻴﻴﻦ واﺻﻒ ﻣﻠﻒ ﻣ‬‫ﺑﺎﻟﻔﻌﻞ‬‫ﻣﺪﻋﻮﻣ ﺔ‬
‫ﺑﻞ ﻟﻌﻨﻮان ﻣﻌﻴﻦ ‪ ،‬ﻛﻠﻤﺎﺗﻢﺗﻨﻔﻴﺬﺗﻌﻠﻴﻤﺎ ت ﻋﲆ ﻫﺬا اﻟﻌﻨﻮان‪.‬‬
‫ﺑﻌﺪ ذﻟﻚ زﻳﺎدة ﻋﻨﺼﺮ اﻟﻌﺪد اﻟﺼﺤﻴﺢ اﻟﻤﻘﺎ‬
‫ُﻄﻠ ﺐ ﻣﻦ ‪QEMU‬‬
‫ﺘ ﺔ ﻋﲆ اﻟﻘﺮص‪.‬ﻳ‬
‫ﺑ‬‫ﺛﺎ‬‫ﺘﻐﻄﻴ ﺔ‬
‫ﻣﻌﻠﻮﻣﺎ ت اﻟ‬

‫ﺘﻤﺎم‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬ ‫ﺘ ﻲﺗﻢ ﻗﻄﻌﻬﺎ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ ﻋﲆ ﻋﺪد اﻟﻤﺮا ت‪ .‬ﻓ ﻲ ﺟﻮ ﻫﺮ ﻫﺎ ‪،‬ﺗﻌﻄ ﻲ اﻟﻤﺪﺧﻼ ت اﻟﻤ‬ ‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻐﻄﻴ ﺔ ﻓﻘﻂ ﻋﲆ اﻟ‬
‫ﺘﻮي ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﻣﻊ ﻫﺬا اﻟﻨﻬﺞ ‪ ،‬ﻻﺗﺤ‬
‫ﺒﺼﻴﺮة ﻓ ﻲ ﻧﺠﺎح ﻏﻤﻮﺿﻨﺎ ‪ ،‬ﻣﻦ ﺧﻼل اﻟﻨﻈﺮ ﻓ ﻲ‬
‫ﺑﻌﺾ اﻟ‬‫ﺘ ﺴﺎ ب‬
‫ﺜﻨﺎﺋ ﻲ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻧﻬﺪف إﱃ اﻛ‬
‫ﺜﻮر ﻋﻠﻴﻬﺎ ﻓ ﻲ ﺟﻤﻴﻊ أﻧﺤﺎء اﻟﻨﻈﺎم اﻟ‬
‫ﺘ ﻲﺗﻤﻜﻦ اﻟﻤﺼﻬﺮ ﻣﻦ اﻟﻌ‬
‫ﺟﻤﻴﻊ اﻟﻤ ﺴﺎرا ت اﻟ‬
‫ﺒﻌﺾ وﺟﻤﻴﻊ اﻟﻤ ﺴﺎرا ت اﻟﻤﻮﺟﻮدة‪.‬‬
‫ﺒﻌﻀﻬﺎ اﻟ‬
‫ﺑ‬‫ﺘﻌﻠﻖ‬
‫ﺘﻠﻔ ﺔ ﻓﻴﻤﺎﻳ‬
‫ﺘﻞ اﻟﻤﺨ‬
‫ﻛﻴﻔﻴ ﺔ أداء اﻟﻮﻇﺎﺋﻒ أو اﻟﻜ‬

‫ﺜﻮر‬
‫ﺘﺎﻟ ﻲ ﻣﻦ اﻟﻤﺮﺟﺢ اﻟﻌ‬
‫ﺑﺎﻟ‬
‫ﺘﻤﻠ ﺔ ‪ ،‬و‬
‫ﺘﻨﻮﻋ ﺔ ﻣﻦ اﻟﺤﺎﻻ ت اﻟﻤﺤ‬
‫ﺘﻢ إدﺧﺎﻟﻬﺎ ﻣﻊ ﻣﺠﻤﻮﻋ ﺔ ﻣ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ ﻓ ﻲ ﻣﻌﻈﻢ اﻟﻤ ﺴﺎرا ت ‪ ،‬ﻣﻦ اﻟﻤﺮﺟﺢ أنﻳ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻠ ﺔ اﻟ‬
‫ﺜﺎل ‪ ،‬اﻟﻜ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺜﺮﺗﻔﺼﻴ ﻼ ً ‪ ،‬ﻧﻘﺪم ﻣﻘﻴﺎﺳﻴﻦ‪.‬‬
‫ﺘﻐﻄﻴ ﺔ اﻷﻛ‬
‫ﺘﺨﺪام ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﺳ‬
‫ﺘ‬‫ﻋﲆ اﻻﻧﻬﻴﺎر ‪-‬إذا ﻛﺎن ﻣﻮﺟﻮدًا‪ .‬ﻟ‬

‫ﺘﻠ ﺔ أﺳﺎﺳﻴ ﺔ‬
‫ﺘ ﻲﺗﻢﺗﻨﻔﻴﺬ ﻛ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻟﻌﻤﻠﻴﺎ ت اﻹﻋﺪام ‪ ،‬اﻟ‬
‫ﺘﺼﺎر ‪ ،‬اﻟﻨ ﺴ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ‪i‬ﻟﻼﺧ‬
‫ﺒﻴ ﺔ ﻟﻺدﺧﺎل أو اﻟﻨ ﺴ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ اﻟﻨ ﺴ‬
‫ﻳﻌﻄ ﻲ اﻟﻤﻘﻴﺎس اﻷول ‪ ،‬اﻟﻨ ﺴ‬
‫ﺘﻠ ﺔ‬
‫ﺘﻠ ﺔ أﺳﺎﺳﻴ ﺔ ﻣﻌﻴﻨ ﺔ‪.‬ﻳﻤﻜﻦ أنﺗﺸﻴﺮ اﻟﻜ‬
‫ﺘ ﻲﺗﻘﻊ ﻋﻠﻴﻬﺎ ﻛ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻣﻦ اﻟﻤ ﺴﺎرا ت اﻟ‬
‫ﺘﺎج اﻟﻨ ﺴ‬
‫ﺘﻨ‬‫ﺘﺨﺪام ﻫﺬا ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺑﺎﺳ‬‫ﻣﻌﻴﻨ ﺔ ﻟﻬﺎ ﻣﺮة واﺣﺪة ﻋﲆ اﻷﻗﻞ‪.‬‬
‫ﺘﺎﻟ ﻲ ﻻﻳﺰال ﻣﻦ اﻟﻤﻤﻜﻦ ﺣﺪو ث‬
‫ﺑﺎﻟ‬
‫ﺘﻤﻠ ﺔ ‪ ،‬و‬
‫ﺘﻌﺮض ﻟﻠﻌﺪﻳﺪ ﻣﻦ اﻟﺤﺎﻻ ت اﻟﻤﺤ‬
‫ﺘﻠ ﺔ ﻟﻢﺗ‬
‫ﺒ ﺔ ﺻﻐﻴﺮة ﻣﻦ اﻟﻤ ﺴﺎرا ت إﱃ أن اﻟﻜ‬
‫ﺘ ﻲﺗﻘﻊ ﻋﲆ ﻧ ﺴ‬
‫اﻷﺳﺎﺳﻴ ﺔ اﻟﻤﻌﻘﺪة اﻟ‬
‫ﺘﻤﺎم‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﻌﻴﻴﻦ ‪I‬ﻛﻤﺠﻤﻮﻋ ﺔ ﻣﻦ ﺟﻤﻴﻊ اﻟﻤﺪﺧﻼ ت اﻟﻤ‬
‫ﺑ‬‫ﺘﻠ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪bb.‬ﻧﻘﻮم‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻟﻠﻜ‬
‫ﺣﻮاد ثﺗﺤﻄﻢ ﻫﻨﺎك‪.‬ﺗﻮﺿﺢ اﻟﻤﻌﺎدﻟ ﺔ ‪ 5.1‬ﺻﻴﻐ ﺔ ﺣ ﺴﺎ ب اﻟﻨ ﺴ‬
‫ﺛﻨﺎء اﻹدﺧﺎل ‪I 2 I.‬‬
‫ﺘﻠ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪bb0‬أ‬
‫و ) ‪execsI (bb0‬ﺣﻴ ﺚﺗﻢﺗﻨﻔﻴﺬ ﻋﺪد ﻣﺮا تﺗﻨﻔﻴﺬ اﻟﻜ‬

‫ﺒﺔ‬
‫| }‪| {I 2 I | execsI (bb)> 0‬اﻟﻨ ﺴ‬
‫اﻟﻤﺌﻮﻳ ﺔ ) ب ب( =‬ ‫)‪(5.1‬‬
‫|أﻧﺎ |‬

‫ﺘﻮي ﻏﻼﻓﻨﺎ ﻧﻔ ﺴﻪ ﻋﲆ ﺣﻠﻘ ﺔ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻗﺪ‬


‫ﺘﺤﻠﻴﻞ ﻋﲆ ﺣﻠﻘﺎ ت أو ﻓ ﻲ ﺣﺎﻟ ﺔﺗﺸﻮﻳ ﺶ ‪USB ،‬ﻳﺤ‬
‫ﺘﻮي وﻇﺎﺋﻒ اﻟ‬
‫ﺒﺎ ﻣﺎﺗﺤ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ‪ .‬ﻏﺎﻟ ً‬
‫ﺒﺎن ﻟﻤﻘﻴﺎس اﻟﻨ ﺴ‬
‫ﻫﻨﺎك ﻋﻴ‬
‫ﺘﻢ ﻓﻘﺪ ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬
‫ﺜﺮ ﻣﻦ ﻏﻴﺮ ﻫﺎ ‪ ،‬وﻟﻜﻦ ﻧﻈ ﺮًاﻷﻧﻬﺎﺗﺤ ﺴ ﺐ ﻣﺮة واﺣﺪة ﻓﻘﻂ ﻟﻜﻞ إدﺧﺎل ‪،‬ﻳ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن أﻛ‬
‫ﺘﻠﻔ ﺔ ﻓ ﻲ ﻛ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ ﻟﺤﺎﻻ ت ﻣﺨ‬
‫ﺑﻌﺾ اﻟﻜ‬‫ﺘﻌﺮض‬
‫ﺗ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ‪.‬‬
‫ﺑﻴﻦ اﻟﻜ‬ ‫اﻟﻌﻴ ﺐ اﻵﺧﺮ ﻫﻮ أﻧﻪ إذاﺗﻢﺗﻨﻔﻴﺬ وﻇﻴﻔ ﺔ ﻣﺎ ﻗﻠﻴ ﻼ ً ﺟﺪًا ‪ ،‬ﻓ ﺴ‬
‫ﺘﻜﻮن ﺟﻤﻴﻊ اﻟﻨ ﺴ ﺐ اﻟﻤﺌﻮﻳ ﺔ ﺻﻐﻴﺮة ﺟﺪًا ﻣﻤﺎﻳﺠﻌﻞ ﻣﻦ اﻟﺼﻌ ﺐﺗﻤﻴﻴﺰ أي ﻓﺮوق‬

‫ﺘﻠ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪،‬‬


‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻟﻤﺮا تﺗﻨﻔﻴﺬ اﻟﻜ‬
‫ﺘﺼﺎر‪.‬ﻳﻌﻄ ﻲ اﻟﻨ ﺴ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ‪f‬ﻟﻼﺧ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻟﻠﻮﻇﻴﻔ ﺔ أو اﻟﻨ ﺴ‬
‫ﺜﺎﻧ ﻲ ‪ ،‬اﻟﻨ ﺴ‬
‫ﻟﻤﻜﺎﻓﺤ ﺔ ﻫﺬه اﻟﻌﻴﻮ ب ‪ ،‬ﻧﻘﺪم اﻟﻤﻘﻴﺎس اﻟ‬
‫ﺒ ﺔ إﱃ اﻟﻮﻇﻴﻔ ﺔ ‪F.‬ﻧﺤﻦ ﻧﻌﻴﻦ‬
‫ﺑﺎﻟﻨ ﺴ‬
‫ﺘﻠ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪bb‬‬ ‫ُﻈﻬﺮ اﻟﻤﻌﺎدﻟ ﺔ ‪5.2‬ﻣﻌﺎدﻟ ﺔ ﺣ ﺴﺎ ب اﻟﻨ ﺴ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ‪f‬ﻟﻠﻜ‬ ‫ﺘ ﻲﺗﻢ ﻓﻴﻬﺎ إدﺧﺎل اﻟﻮﻇﻴﻔ ﺔ‪.‬ﺗ‬
‫ﺒ ﺔ ﻟﻌﺪد اﻟﻤﺮا ت اﻟ‬
‫ﺑﺎﻟﻨ ﺴ‬
‫ﺘﻢ‬
‫ﺘﻠ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻣﻦ اﻟﻮﻇﻴﻔ ﺔ ‪F‬ﻳ‬
‫ﺒﺮ ﺟﻤﻴﻊ اﻟﻤﺪﺧﻼ ت واﻟﻤﺪﺧﻞ )‪(F‬ﻋﲆ أﻧﻬﺎ اﻟﻜ‬
‫ﺘﻠ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪bb0‬ﻋ‬
‫) ‪execs (bb0‬ﻋﲆ أﻧﻬﺎ اﻟﻌﺪد اﻹﺟﻤﺎﻟ ﻲ ﻟﻤﺮا ت إدﺧﺎل اﻟﻜ‬
‫ﺗﻨﻔﻴﺬ ﻫﺎ ﻋﻨﺪ اﻟﺪﺧﻮل‪.‬‬

‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ‪)(bb) = execs‬اﻹدﺧﺎل ))‪(F‬‬


‫)‪execs (bb‬اﻟﻨ ﺴ‬
‫)‪(5.2‬‬

‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ‪f.‬‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ اﻷﺧﺮى اﻟﻨ ﺴ‬
‫ﺘﺨﺪم ﺟﻤﻴﻊ اﻟﻜ‬
‫ﺑﻴﻨﻤﺎﺗ ﺴ‬‫ﺘﻠ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻹدﺧﺎل داﻟ ﺔ ‪،‬‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ‪i‬ﻟﻠﻜ‬
‫ﺘﺨﺪم اﻟﻨ ﺴ‬
‫ﺘﺎﺋﺞ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪6.6‬وﻧ ﺴ‬
‫ﺘﻢ ﻋﺮض اﻟﻨ‬
‫ﻳ‬

‫ﺘﻌﻄﻞ ‪ ،‬واﻟﺬي ﻟﻸﺳﻒ ﻻﻳﺰالﻳﺤﺪ ث ﻣﻦ وﻗ ﺖﻵﺧﺮ‪.‬‬


‫‪33‬ﻣﻌﻨﻰ ‪QEMU‬ﻧﻔ ﺴﻪﺳﻴ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪6‬‬

‫ﺗﻘﻴﻴﻢ‬

‫ﺜﻴﺮة‬
‫ﺛ ﺔ إﺟﺮاءا تﺗﺨﻔﻴﻒ ﻣ‬
‫ﺛﻼ‬‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ‬‫ﺑﺖ ‪،‬‬
‫ﺜﺎ‬
‫ﺘﺎﺋﺞﺗﺤﻠﻴﻠﻨﺎ اﻟ‬
‫ﺒﺪء ‪ ،‬ﻧﻘﺪم ﻧ‬
‫ﺛﻨﺎءﺗﻄﻮره‪ .‬ﻟﻠ‬
‫ﺘ ﻲﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ ﻣﻊ ‪emmutaler‬وأ‬
‫ﺘﺎﺋﺞ اﻟ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻧﻘﺪم اﻟﻨ‬
‫ﺑﻌﺪ‬‫ﺘﻬﻤﺎ ﻓ ﻲ ﻣﻜﺎن آﺧﺮ‪.‬‬
‫ﺘﻢ ﻣﻨﺎﻗﺸ‬
‫ﺘﺨﻔﻴﻔﻴ ﺔ ﺟﺪﻳﺪة وﻟﻢﺗ‬
‫ﺛﻨﻴﻦ ﻣﻦ ﻫﺬه اﻟﻌﻮاﻣﻞ اﻟ‬
‫ﺑﺸﻜﻞ ﺧﺎص ﻣﻮﺟﻮدة ﻓ ﻲ ‪SecureROM‬وﺟﺪﻧﺎ ﻫﺎ‪ .‬ﻋﲆ ﺣﺪ ﻋﻠﻤﻨﺎ ‪ ،‬ﻓﺈن ا‬‫ﺘﻤﺎم‬
‫ﻟﻼ ﻫ‬
‫ﺛﻴﺮ ﻫﺎ ﻋﲆ‬
‫ﺘﻠﻔ ﺔ وﻣﻨﺎﻗﺸ ﺔﺗﺄ‬
‫ﺑﻤﻘﺎرﻧ ﺔ أوﺿﺎع ‪AFL ++‬اﻟﻤﺨ‬‫ﺘﺸﺎف ﺧﻄﺄ ‪checkm8.‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻗﻤﻨﺎ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻛ‬‫ﺘﻔﺼﻴﻞ ‪،‬‬
‫ﺑﺎﻟ‬‫ﺘﺎﺋﺞ اﻟﻐﺎﻣﻀ ﺔ‬
‫ذﻟﻚ ‪ ،‬ﻧﻨﺎﻗ ﺶ اﻟﻨ‬
‫ﺘﺎﺋﺞ اﻟﻤﺤﻴﺮة‪.‬‬
‫ﺑﺎﻟﻨ‬‫ﺑﻄﻬﺎ‬
‫ﺘﻔﺼﻴﻞ ور‬
‫ﺑﺎﻟ‬‫ﺘﻐﻄﻴ ﺔ اﻟﻤﺤﻘﻘ ﺔ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺑ‬‫ﺘﺸﻮﻳ ﺶ‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻧﻘﻮم‬
‫ﺳﺮﻋ ﺔ اﻟ‬

‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ‬
‫‪6.1‬اﻟ‬
‫ﺑﻔﻀﻞ‬‫ﺗﻤﺎﻣﺎ‪.‬‬
‫ً‬ ‫ﺑ ﺔ ﺻﺤﻴﺤ ﺔ اﻵن و ﻫ ﻲ ﻣﻔﻬﻮﻣ ﺔ‬
‫ﺘﺎ‬
‫ﺒﺎ ﻋﲆﺗﻮاﻗﻴﻊ ﻛ‬
‫ﺘﻮي ﺟﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ اﻟﻤﺤﺪدةﺗﻘﺮﻳ ً‬
‫ﺑﺎﻻﺳﻢ‪.‬ﺗﺤ‬
‫ﺗﻢﺗﺤﺪﻳﺪ ‪554‬‬
‫ﺑﻴﻦ ‪724‬وﻇﻴﻔ ﺔ ‪1 ،‬‬‫ﻓ ﻲ اﻟﻤﺠﻤﻮع ‪ ،‬ﻣﻦ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا‬
‫ﺗﻬﺎ اﻵن ﻓ ﻲ اﻟﻜﻮد ‪6.1.‬ﻟﻠﺤﺼﻮل ﻋﲆ وﻇﻴﻔ ﺔ أﻛ‬
‫ﺜﺎل ﻟﻮﻇﻴﻔ ﺔ أﺻﻐﺮﻳﻤﻜﻦ ﻗﺮاء‬
‫وﻣﻔﻜﻚ‪.‬ﻳﻈﻬﺮ ﻣ‬
‫ﺑﻞ ﻟﻠﻘﺮاءة ُ‬
‫ﺘﻮي ﻣﻌﻈﻢ اﻟﻮﻇﺎﺋﻒ ﻋﲆ ﻛﻮد ﻗﺎ‬
‫ﺗﻮاﻗﻴﻊ اﻟﻨﻮع ‪،‬ﺗﺤ‬
‫ﺘﺮاﺿﻴ ﺔ ‪ ،‬اﻧﻈﺮ اﻟﻤﻠﺤﻖ ج‪.‬‬
‫ﺘﺪﻋﺎءا ت وﻇﺎﺋﻒ اﻓ‬
‫ﺘﻀﻤﻦ اﺳ‬
‫ﺗ‬

‫{ )‪__int64 sub_100009BCC (char * a1‬‬


‫ﺑﻨﻴ ﺔ ﻣﻬﻤ ﺔ { )‪* a1‬‬
‫ﺑﺎﻃﻠ ﺔ )‬
‫‪Task_destroy‬‬
‫‪ // x0‬؛ ‪__int64 v3‬‬
‫‪enter_critical_section () ،‬إذا )‪== & bootstrap_task || a1 == & idle_task‬‬
‫‪sub_1000127BC () ،‬إذا ؛ )( ‪unk_19C0107C0) sub_100008F90‬‬ ‫‪(a1‬‬
‫& == ‪(a1 == aKsat || a1‬‬ ‫ذﻋﺮ)(؛‬
‫؛ )‪ exit_critical_section () ، heap_free (a1‬؛ )‪arch_task_destroy (a1‬‬
‫إذا ))‪(* ((_ QWORD *) a1 + 3) || * ((_ QWORD *) a1 + 4‬‬ ‫؛ )‪ list_delete (& a1-> task_list_node‬؛ )‪list_delete (& a1-> queue_node‬‬
‫؛ )‪sub_100009C50 (a1 + 24‬‬ ‫)‪if (a1-> queue_node.prev || a1-> queue_node.next‬‬
‫؛ )‪ sub_100012810 (v3‬؛ )‪(a1‬‬
‫‪ v3 = sub_100001C14‬؛ )‪(a1 + 8‬‬
‫‪sub_100009C50‬إرﺟﺎع ؛ )‪(a1‬‬
‫‪sub_10000FEF4‬‬ ‫}‬
‫}‬
‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ‪.‬‬
‫ﺑﻌﺪ اﻟ‬‫) ب( اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺑ ﺖ‪.‬‬
‫ﺛﺎ‬‫ﺒﻞ أيﺗﺤﻠﻴﻞ‬
‫)أ( اﻟﻮﻇﻴﻔ ﺔ ﻗ‬

‫ﺘﻬﺎء ﻣﻬﻤ ﺔ‪.‬‬


‫ﺑﻌﺪ اﻧ‬‫ﺘﻨﻈﻴﻒ‬
‫ﺜﺎل ﻋﲆ وﻇﻴﻔ ﺔ ﻣ ﺴﺆوﻟ ﺔ ﻋﻦ اﻟ‬
‫اﻟﻜﻮد ‪6.1:‬ﻣ‬

‫ﺑﻞﺗﻢﺗﺤﺪﻳﺪ ‪202‬ﻧﻮﻋً ﺎ وﻋﻜ ﺴﻬﺎ‪.‬‬‫ﺑ ﺔ ﻓ ﻲ ﻣﻌﻈﻢ اﻟﻮﻇﺎﺋﻒ اﻵن ‪،‬‬


‫ﺘﺎ‬
‫ﺘﺼﺮ اﻷﻣﺮ ﻋﲆ وﺟﻮدﺗﻮاﻗﻴﻊ ﻛ‬
‫ﻻﻳﻘ‬

‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺛﻨﺎء اﻟﻜ‬
‫ﺜﻮر ﻋﲆ اﻟﻤﺰﻳﺪ أ‬
‫ﺗﻢ اﻟﻌ‬
‫ﺑﻴﻨﻤﺎﻳﻤﻜﻦ أنﻳﻜﻮن ﻫﻨﺎك اﻟﻤﺰﻳﺪ ‪-‬‬‫ﺘ ﻲ وﺟﺪﻧﺎ ﻫﺎ‪.‬‬
‫‪1‬ﻋﲆ اﻷﻗﻞ ﻫﺬا ﻫﻮ ﻋﺪد اﻟﻮﻇﺎﺋﻒ اﻟ‬
‫ﺒﻴ ًﺮا‪.‬‬ ‫ﻫﺬه اﻷﻃﺮوﺣ ﺔ ‪-‬ﻟﻦﻳﻜﻮن ﻣ ً‬
‫ﺒﻠﻐﺎ ﻛ‬

‫‪34‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺖ‬
‫ﺛﺎ‬‫ﺗﺤﻠﻴﻞ‬
‫‪6.1‬‬ ‫‪35‬‬

‫ﺜﺎل ‪ ،‬ﻣﻦ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ وﺟﻌﻞ اﻟﺮﺟﻮع أﺳﻬﻞ‪.‬ﻳﻤﻜﻦ رؤﻳ ﺔ ﻣ‬‫ﺑﻌﺮض ﻣﺮاﺟﻊ أﻋﻀﺎء اﻟﻬﻴﻜﻞ‬‫ﺘﻨﻤﻴ ﺔ‬
‫ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻜﻮد ‪6.1 ،‬ﻓﺈن ﻫﺬاﻳ ﺴﻤﺢ ﻟﻠﻤﺆﺳ ﺴ ﺔ اﻟﺪوﻟﻴ ﺔ ﻟﻠ‬
‫ﻫﺬا اﻟﻨﻮع ﻓ ﻲ اﻟﻜﻮد ‪6.2.‬‬

‫ﻫﻴﻜﻞ { ‪Img4DecodeImplementation‬‬

‫؛ )* ‪uint64_t * ، uint64_t * ، uint8_t * ، uint8_t * ، uint64_t ، image4_wrapper_context‬‬


‫‪ int (* parse_cert_chain) (DERByte * ، DERSize ،‬؛ )‪*، DERSize، uint8_t *، uint64_t، uint64_t‬‬
‫‪int (* do_ccdigest) (DERByte‬‬
‫؛ )‪int (* check_pkcs1_sig) (const DERItem pubKey ، DERItem sig ، const DERItem toVerify ، void ،! * hasher‬‬

‫؛ ‪ hash_info * hasher_info‬؛ )* ‪check_payload_properties) (img4 *، image4_wrapper_context‬‬


‫*( ‪int‬‬
‫؛ ‪DERItem * Digest_oid‬‬
‫؛ } ؛ ‪DERItem * alg_oid‬‬

‫ﺒﻴﻖ ‪IMG4.‬‬
‫ﺑﻮاﺳﻄ ﺔﺗﻄ‬‫ﺘﺨﺪم‬
‫اﻟﻜﻮد ‪6.2:‬ﻧﻮعﻳ ﺴ‬

‫ﺘﺸﺎف اﻟﻌﺪﻳﺪ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﺗﻢ اﻛ‬‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺗﻤﺎﻣﺎﻷي ﺷ ﻲء ﻣﻔﻴﺪ ﻟﻠ‬
‫ً‬ ‫ﺗﻢ إﺟﺮاء ﻫﻨﺪﺳ ﺔ ﻋﻜ ﺴﻴ ﺔ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ‪ ،‬و‬‫ﺘﺤﻠﻴﻞ اﻟ ﺴﺎﻛﻦ‬
‫ﺑﺸﻜﻞ ﻋﺎم ‪،‬ﺳﺎر ت ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺒﺪو أﻧﻬﺎﺗﺸﻴﺮ إﱃ‬
‫ﺘﺨﺪام ﺷﺮﻳﺤ ﺔ ‪A12‬وﻳ‬
‫ﺑﺎﺳ‬‫ﺘﺨﻔﻴﻒ ﻫﺬه‬
‫ﺑ ﺖ‪.‬ﺗﻢﺗﻘﺪﻳﻢ ﻣﻌﻈﻢ ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬ ‫ﺑ ًﻘﺎ أ‬
‫ﺛﻨﺎء اﻟ‬ ‫ﺘﻤﺎم وﻏﻴﺮ اﻟﻤﻌﺮوﻓ ﺔﺳﺎ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﺨﻔﻴﻒ اﻟﻤ‬
‫ﻣﻦ ﻋﻮاﻣﻞ اﻟ‬
‫إﻏﻼق ﻋﺎم ﻟـ ‪SecureROM‬ﻟﺰﻳﺎدة اﻷﻣﺎن‪.‬‬

‫ﺘﺨﻔﻴﻒ ‪1:‬اﻟﺠﺮي ﻓ ﻲ ‪EL0‬‬


‫‪6.1.1‬اﻟ‬

‫ﺜﻨﺎء أﻗﻞ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻣﻊ ‪A12 ،‬‬


‫ﺘ‬‫ﺘﻮى اﺳ‬
‫ﺘﻤﻞ أنﺗﻨﺨﻔﺾ إﱃ ﻣ ﺴ‬
‫ﺘ ﻲ ﻣﻦ اﻟﻤﺤ‬
‫ﺘﺎﻟﻴ ﺔ ‪ ،‬واﻟ‬
‫ﺘﻰ اﻟﻘﻔﺰ إﱃ اﻟﻤﺮﺣﻠ ﺔ اﻟ‬
‫ﺘﻌﻤﻞ ‪SecureROM‬ﻓ ﻲ ‪EL1 / EL3‬ﺣ‬
‫ﺘﻰ ‪A11 ،‬ﺳ‬
‫ﺣ‬
‫ﺑﺪءًا ﻣﻦ ‪A12.‬‬
‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻤﻠﻴﺎ ت ‪syscalls‬‬
‫ﺘﻐﻠ ﺐ ﻋﲆ اﻟﻘﻴﻮد اﻟﻤﻮﺟﻮدة ﻓ ﻲ ‪EL0 ،‬ﻳ‬
‫ﺋﻴ ﺴﻴ ﺔ‪ .‬ﻟﻠ‬
‫ﺑﻌﺪ دﺧﻮل اﻟﻮﻇﻴﻔ ﺔ اﻟﺮ‬
‫ﺑ ﺴﺮﻋ ﺔ إﱃ ‪EL0‬‬
‫ﻳﻨﺨﻔﺾ ‪SecureROM‬‬

‫ﺘﻨﻔﻴﺬ ﻛـ ‪EL1.‬‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟ‬
‫‪• svc 0:‬ﻳﻌﻮد ﻫﺬا ‪syscall‬ﻓﻮ ًرا ﻣﻦ ﻣﻌﺎﻟﺠﻪ ‪ ،‬ﻟﻜﻨﻪﻳ ﺴ‬
‫ﺗ ﺴﻤﺢ اﻟﻄﺮﻳﻘ ﺔ‬
‫ﺒﺮﻣﺠﻴ ﺔ ﻛـ ‪EL0.‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻘﻴ ﺔﺗﺪﻓﻖ اﻟ‬‫ﺘﻢﺗﺸﻐﻴﻞ‬
‫ﺘﻰ ﻋﻨﺪﻣﺎﻳ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻤﻤﻴﺰة ‪ ،‬ﺣ‬
‫ﺗﻨﻔﻴﺬ اﻟ‬
‫ﻣﻦ ﺧﻼل ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ‪،‬ﻳﻤﻜﻦ ﻟـ ‪SecureROM‬‬
‫ﺑﻔﻀﻞ اﻟﻄﺮق اﻟﻤ ﺴﺎﻋﺪة ‪،‬ﻳﻤﻜﻦ إﺟﺮاءﺗﺪاﺧﻞ ﻟﻬﺬه اﻟﻌﻤﻠﻴ ﺔ وﺳﻴﻌﻮد‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬‬‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻤﻤﻴﺰة‪.‬‬
‫ﺑﻤﺠﺮدﺗﻨﻔﻴﺬ اﻟ‬
‫ﺑﺎﻟﻌﻮدة إﱃ ‪EL0 ،‬‬‫اﻟﻤ ﺴﺎﻋﺪة‬
‫ﺑﻌﺪ ﻓﻘﻂ ﻓﻌﻠ ًﻴﺎ إﱃ ‪EL0.‬‬
‫ﺜﻴﻞ اﻷ‬
‫اﻟﻤ‬

‫ﺑﻤﺠﺮد ﻣﻌﺎﻟﺠ ﺔ ‪IRQ‬‬‫ﺒﻞ‪.‬‬


‫ﺘﻌﺎﻣﻞ ﻣﻊ ‪IRQ‬ﻛﻤﺎ ﻛﺎن ﻣﻦ ﻗ‬
‫ﺘﻤﺮ اﻟ‬
‫ﺘﻨﻔﻴﺬ إﱃ ‪EL0‬وﻳ ﺴ‬
‫ﺘﻼم ‪IRQ ،‬ﻳﻌﻮد اﻟ‬
‫ﺑﻤﺠﺮد اﺳ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ‪IRQ‬ﻓ ﻲ ‪EL0.‬‬
‫ﺘﻢ اﻵن اﻟ‬
‫‪• svc 1:‬ﻳ‬
‫ﺘﺨﺪم ‪ SecureROM‬ﻫﺬا ‪syscall‬ﻟﻠﻌﻮدة ﻣﻦ ﻣﻌﺎﻟﺠ ﺔ ‪IRQ.‬ﻳﻌﻮد ﻫﺬا ‪syscall‬ﻣﻦ ﻣﻌﺎﻟﺠ ﺔ ‪IRQs‬‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪،‬ﻳ ﺴ‬

‫‪• svc 2:‬ﻣﻮﺟﻮد ﻓﻘﻂ ﻋﲆ ‪A14 ،‬ﻳﺆدي ﻫﺬا اﻟﻨﻈﺎم إﱃﺗﻌﻄﻴﻞ اﻟﻤﻘﺎﻃﻌﺎ ت‪ .‬ﻋﲆ اﻟﺮﻗﺎﺋﻖ اﻟﻘﺪﻳﻤ ﺔ ‪،‬ﺗﻢ ذﻟﻚ‬
‫ﻣﻦ ﺧﻼل ﻣﻌﺎﻟﺠ ﺔﺳﺠﻼ ت اﻟﻨﻈﺎم‪.‬‬

‫ﺘﻢ‬
‫ﺘﻴﺢ اﻟﻤﻘﺎﻃﻌﺎ ت‪ .‬ﻣﺮة أﺧﺮى ‪ ،‬ﻫﺬا ﻣﻮﺟﻮد ﻓﻘﻂ ﻓ ﻲ ‪A14 ،‬ﻛﻤﺎ ﻫﻮ اﻟﺤﺎل ﻓ ﻲ اﻟﺮﻗﺎﺋﻖ اﻟﻘﺪﻳﻤ ﺔ ﻛﺎنﻳ‬
‫ﺑﻘ ﺔ ‪ ،‬ﻓﻬﻮﻳ‬
‫ﺑﻞ ﻟﻤﻜﺎﻟﻤ ﺔ اﻟﻨﻈﺎم اﻟ ﺴﺎ‬
‫‪ • svc 3:‬ﻫﺬا ﻫﻮ اﻟﻤﻘﺎ‬
‫ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ ﻣﻌﺎﻟﺠ ﺔﺳﺠﻼ ت اﻟﻨﻈﺎم‪.‬‬

‫ﺒﺎﺷﺮة ﻟﻠﺤﺼﻮل‬
‫ﺜﻞ ﻫﺬا اﻟﻤﻬﺎﺟﻢﺗﻨﻔﻴﺬ ‪syscall‬ﻣ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪.‬ﻳﻤﻜﻦ ﻟﻤ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘ ﺴ ﺐﺗﻨﻔﻴﺬ اﻟ‬
‫ﺘﻤﺎم ‪،‬ﻷﻧﻪ ﻏﻴﺮ ﻣﻔﻴﺪ ﺿﺪ اﻟﻤﻬﺎﺟﻢ اﻟﺬيﻳﻜ‬
‫ﺜﻴﺮ ﻟﻼ ﻫ‬
‫ﺘﺨﻔﻴﻒ ﻣ‬
‫ﻫﺬا اﻟ‬
‫ﺜﺎل ‪[14].‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑ ﺔ ﻟﺬاﻛﺮة ﻣﻤﻴﺰة ‪ ،‬ﻋﲆﺳ‬
‫ﺘﺎ‬
‫ﺘﻤﺪ ﻋﲆ اﻟﻜ‬
‫ﺘ ﻲﺗﻌ‬
‫ﺘﺄﻛﻴﺪ ﺿﺪ اﻟﻬﺠﻤﺎ ت اﻟ‬
‫ﺑﺎﻟ‬‫ﺘﺨﻔﻴﻔﺎ ت‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﻬ ﻲﺗ ﺴﺎﻋﺪ‬
‫ﺘﻢ ﻫﺰﻳﻤ ﺔ اﻟ‬
‫ﺛﻢﺳﻴ‬‫ﻋﲆ ‪EL1 / EL3‬وﻣﻦ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎﺋ ﻲ‬
‫‪6.2‬اﻟﺨﻠﻖ اﻟ‬ ‫‪36‬‬

‫ﺘﺨﻔﻴﻒ ‪2:‬رﻣﻮز ﻣﺼﺎدﻗ ﺔ اﻟﻤﺆﺷﺮ )‪(PAC‬‬


‫‪6.1.2‬اﻟ‬
‫ﻧﻈ ﺮًاﻷن ‪ A12‬ﻫﻮ أول ﺷﺮﻳﺤ ﺔﺗﺪﻋﻢ ‪ARMv8.3-A ،‬ﻓﻘﺪ أدﺧﻠ ﺖ أ ً‬
‫ﻳﻀﺎ ‪PAC‬ﻓ ﻲ ‪SecureROM.‬‬
‫ﺑ ًﻘﺎ‪ .‬ﻫﺬاﻳﻌﻨ ﻲ أن أيﺗﻌﻠﻴﻤﺎ ت‬
‫ّﻦ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢﺳﺎ‬
‫ﺘﺎح ‪IB‬ﻓﻘﻂ ‪-‬اﻧﻈﺮ اﻟﻘ ﺴﻢ ‪2.5 -‬ﻣﻤﻜ‬
‫ﺑﻘﻴﻢ ﻋﺸﻮاﺋﻴ ﺔ ‪ ،‬إﻻ أن ﻣﻔ‬‫ﺘﻬﺎ‬
‫ﺗﻴﺢ ‪PAC‬ﻗﺪﺗﻤ ﺖﺗﻬﻴﺌ‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﺟﻤﻴﻊ ﻣﻔﺎ‬
‫ﺒﺪو أن ‪SecureROM‬‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳ‬
‫ﺑـ ‪PAC 2.‬‬‫ﺘﻌﻠﻖ‬
‫ﺘ ﻲ ﻻﺗ‬
‫ﺑﺄداء وﻇﺎﺋﻔﻬﻢ اﻟ‬‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪،‬ﻳﻘﻮﻣﻮن ﻓﻘﻂ‬‫ﺘﺤﻘﻖ ﻣﻦﺗﻮاﻗﻴﻊ اﻟﻤﺆﺷﺮا ت‪.‬‬
‫ﺗﻴﺢ أﺧﺮى ﻻﺗﻨﺸ ﺊ وﻻﺗ‬
‫ﺘﺨﺪم ﻣﻔﺎ‬
‫ﺗﺴ‬
‫ﺜﺮ‬
‫ﺗﻴﺢ أﻛ‬
‫ﺘﻢﺗﻬﻴﺌ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻔﺎ‬
‫ﺗ‬‫ﺒﺪو أﻧﻪ ﻓ ﻲ ‪A14 ،‬‬
‫ﺗﻬﺎ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬ﻳ‬
‫ﺘﻌﻠﻴﻤﺎ‬
‫ﺘﺨﺪم إﺻﺪارا ت ‪PAC‬ﻟ‬
‫ﺗﺠﻌﺎ تﺗ ﺴ‬
‫ﻗﺪﺗﻢﺗﺠﻤﻴﻌﻪ ﻣﻊﺗﻤﻜﻴﻦ ‪PAC ،‬ﻧﻈ ًﺮاﻷن ﺟﻤﻴﻊ اﻟﻔﺮوع واﻟﻤﺮ‬
‫ﺑﺎﻟﻔﻌﻞ‪ .‬ﻗﺪ‬‫ﺗﻴﺢ‬
‫ﺘﺨﺪام ﻫﺬه اﻟﻤﻔﺎ‬
‫ﺘﺤﻴﻞ ﻣﻌﺮﻓ ﺔ اﻟﻐﺮض ﻣﻦ اﺳ‬
‫ﺘﻨﻔﻴﺬ ‪ ،‬ﻓﻤﻦ اﻟﻤ ﺴ‬
‫ﺒﺪو ﻓ ﻲﺳﺠﻼ ت ﻧﻈﺎم ﻣﺤﺪدة ﻟﻠ‬
‫ﻣﻤﺎ ﻫﻮ ﻣﺤﺪد ﻓ ﻲ ﻣﻮاﺻﻔﺎ ت ‪ARM.‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻧﻈ ﺮًاﻷن ﻫﺬهﺗ‬

‫ﺗﻴﺢ ﻏﻴﺮ‬
‫ﺒﻂ ﻧﻔ ﺲ اﻟﻤﻘﺪار ﻣﻦ اﻟﻤﻔﺎ‬
‫ﺑﺎﻟﻀ‬‫ﺘﺨﻤﻴﻨﺎ ت إﱃ ﺣﻘﻴﻘ ﺔ أن ﻫﻨﺎك‬
‫ﺘﻨﺪ ﻫﺬه اﻟ‬
‫ﺗﺴ‬‫ﺗﻴﺢ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ‪EL0 ،‬وﻛﺬﻟﻚ ﻟـ ‪EL3.‬‬
‫ﺘﻤﺎﻻ ت ‪ ،‬ﻧﻔ ﺲ ﻣﺠﻤﻮﻋ ﺔ اﻟﻤﻔﺎ‬
‫ﻳﻜﻮن أﺣﺪ اﻻﺣ‬
‫ﺗﻴﺢ ‪EL0 PAC‬اﻟﻤﻌﺮوﻓ ﺔ‪.‬‬
‫ﺜﻞ ﻣﻔﺎ‬
‫اﻟﻤﻌﺮوﻓ ﺔ ﻣ‬

‫ّ ف ﻓﻘﻂ ‪ ،‬ﻻ‬
‫ﺘﻢﺗﻤﻜﻴﻦ اﻟﻮﺳﻴﻂ اﻟﻤﻌ ﺮ‬
‫ﺑﺎﻟﻔﻌﻞ ﻟﻤﻨﻊ ﻓﻴﻀﺎن اﻟﻤﻜﺪس‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻧﻈ ﺮًاﻷﻧﻪﻳ‬‫ﺘﺨﺪم‬
‫ﺒﻘ ﺔ أﻣﺎن إﺿﺎﻓﻴ ﺔ أﻋﲆ اﻟﻜﻨﺎري اﻟﻤﻜﺪس اﻟﻤ ﺴ‬
‫ﺗﻮﺟﺪ ﻃ‬
‫ﺘﺨﺪام ‪PAC ،‬‬
‫ﺑﺎﺳ‬
‫ﺗﻴﺢ ‪PAC‬اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻢﺗﻤﻜﻴﻦ ﻣﻔﺎ‬
‫ﺘﻤﻞ أنﻳﻜﻮنﺗﺪاول أداء‪ .‬ﻗﺪ ﻻﻳ‬
‫ﺋ ﺔ ‪-.‬ﻓ ﻲ ﺣﻴﻦ أن ﻫﺬاﻳﻀﻌﻒ اﻷﻣﺎن ‪ ،‬ﻓﻤﻦ اﻟﻤﺤ‬
‫ﺘﺠﺰ‬
‫ﺜﻞﺗﻨﻔﻴﺬ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت أو ﻣﺆﺷﺮا ت اﻟﻮﻇﺎﺋﻒ ‪-‬ﻣ‬
‫ﺘﻢ ﺣﻤﺎﻳ ﺔ اﻟ‬
‫ﺗ‬
‫ﺒﺪاﻳ ﺔ‪.‬‬
‫ﺗﻴﺢ ﻓ ﻲ اﻟ‬
‫ﺑﻌﺪﺗﻌﻴﻴﻦ اﻟﻤﻔﺎ‬ ‫ﺘًﺎ ﻃﻮﻳ ﻼ ً ﻟ‬
‫ﺘﻮﻗﻴﻊ اﻟﻤﺆﺷﺮا ت‬ ‫ﺘﻐﺮق اﻷﻣﺮ وﻗ‬
‫ﺒﻴﺎﻧﺎ ت وﻣﺆﺷﺮا ت اﻟﻮﻇﺎﺋﻒ ‪ ،‬ﺣﻴ ﺚ ﻗﺪﻳ ﺴ‬
‫ﺑﺎﻟ‬

‫ﺘﺨﻔﻴﻒ ‪3:‬ﻗﺮاءا ت اﻟﺼﻤﺎﻣﺎ ت اﻟﻤﻌﻘﺪة‬


‫‪6.1.3‬اﻟ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺎ ‪ ،‬ﻓﺈن ذﻟﻚﺳﻴﺆدي إﱃ‬‫ﺑﺪﻻ ً ﻣﻦ ‪1‬ﻟﻬﺬه اﻟﻘﻄﻌ ﺔ‬
‫ﺑ ﺖ واﺣﺪ ﻓ ﻲ أﺣﺪ اﻟﺼﻤﺎﻣﺎ ت‪ .‬ﻫﺬاﻳﻌﻨ ﻲ أﻧﻪ ﻣﻦ ﺧﻼل ﺟﻌﻞ اﻟﻤﻌﺎﻟﺞﻳﻘﺮأ ‪0‬‬‫ﺗﻢﺗﺨﺰﻳﻦ وﺿﻊ اﻷﻣﺎن ﻓ ﻲ‬
‫ﺘﻰ ‪A11 ،‬‬
‫ﺣ‬
‫ﺜﺎل ﺧﻠﻞ ﻓ ﻲ اﻟﻘﺮاءة‪.‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻌﺪة ﻃﺮق ‪ ،‬ﻋﲆﺳ‬‫ﺗﻤﺎﻣﺎ‪.‬ﻳﻤﻜﻦﺗﺤﻘﻴﻖ ذﻟﻚ‬
‫ً‬ ‫ﻫﺰﻳﻤ ﺔ أﻣﺎن ‪SecureROM‬‬

‫ﺘﻢ ﻗﺮاءة اﻟﺼﻤﺎﻣﺎ ت اﻟﻤﺤﺪدة ‪-‬‬


‫ﺘﺎﻟ ﻲ‪ .‬ﻓ ﻲ ‪A12‬واﻹﺻﺪارا ت اﻷﺣﺪ ث ‪،‬ﺗ‬
‫ﺘﺨﻔﻴﻒ اﻟ‬
‫ﺑﺎﻟﻜﺎﻣﻞ ﻟﺠﻬﺎز ﻋﻦ ﻃﺮﻳﻖ ﺧﻠﻞ ﻓ ﻲ ﻗﺮاءة واﺣﺪة اﻟ‬‫ﻗﺪﺗﻔ ﺴﺮ إﻣﻜﺎﻧﻴ ﺔ ﻫﺰﻳﻤ ﺔ ﻧﻤﻮذج اﻷﻣﺎن‬
‫ﺘﻢ ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ‬
‫ﺑﻖ ‪ ،‬ﻛﺎنﻳ‬
‫ﺒﺎرك ﻗﺮاءة ﻗﻴﻤ ﺔ وﺿﻊ اﻷﻣﺎن اﻟﺤﺎﻟ ﻲ‪ .‬ﻓ ﻲ اﻟ ﺴﺎ‬
‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا‪ .‬ﻋﲆﺳ‬
‫ﺑﻄﺮﻳﻘ ﺔ أﻛ‬
‫ﺑﻨﻤﻮذج أﻣﺎن اﻟﺠﻬﺎز ‪-‬‬‫ﺛﻴ ًﻘﺎ‬
‫ﺒﺎﻃﺎ و‬
‫ﺗ ً‬‫ﺒﻄ ﺔ ار‬
‫ﺗ‬‫ﺗﻠﻚ اﻟﻤﺮ‬
‫ﺘﻢﺗﻌﻴﻴﻦ اﻟﻘﻴﻤ ﺔ اﻷوﻟﻴ ﺔ ﻟـ ‪config fuse 0.‬ﻳﻮﺿﺢ‬
‫ﺣ ﺴﺎ ب ‪(rCFG_FUSE0_RAW >> 1) & 1 ،‬ﺣﻴ ﺚﺗﻜﻮن ‪ rCFG_FUSE0_RAW‬ﻫ ﻲ اﻟﻜﻠﻤ ﺔ اﻟﻤﺰدوﺟ ﺔ ﻓ ﻲ ﻣﻮﻗﻊ اﻟﺬاﻛﺮة ﺣﻴ ﺚﻳ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ﻋﲆ اﻷﺟﻬﺰة اﻷﺣﺪ ث ‪3.‬‬
‫ﺒﺪو اﻟﻌﻤﻠﻴ ﺔ اﻷﻛ‬
‫اﻟﻜﻮد ‪6.3‬ﻛﻴﻒﺗ‬

‫ﺛﻨﺎﺋ ﻲ‬‫‪6.2‬إﻧﺸﺎء‬

‫ﺗﺞ‬
‫ﺜﻨﺎﺋ ﻲ اﻟﻨﺎ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫ﺑﻨﺎ‪ .‬ﻻﻳﻤﻜﻨﻨﺎ ﻓﻘﻂﺗﺸﻐﻴﻞ اﻟ‬‫ﺘﺨﺪام اﻟﺨﺎﺻ ﺔ‬
‫ﺜﺎﻟ ﻲ ﻟﺤﺎﻟ ﺔ اﻻﺳ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺜﻨﺎﺋ ﻲ ‪ ،‬إﻻ أﻧﻬﺎ ﻋﻤﻠ ﺖ‬
‫ﺘﻘﺪﻳﻤﻬﺎ ﻟﻺﻧﺸﺎء اﻟ‬
‫ﺘﺎﺋﺞ ﻟ‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ ﻋﺪم وﺟﻮد اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻨ‬
‫ﺒﻘ ﻲ ﻣﻦ ‪Apple‬ﻧﻔ ﺴﻬﺎ ‪ ،‬ﻛﺎن ﻣﻦ اﻟ ﺴﻬﻞﺗﺸﺨﻴﺺ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺧﻄﺎء وإﺻﻼﺣﻬﺎ‪.‬‬
‫ﺘ‬‫ﺒﻊ اﻟﻤ‬
‫ﺘ‬‫ﺘ‬‫ﺑ ﺴﻬﻮﻟ ﺔ‪ .‬ﺧﺎﺻ ﺔ ﻣﻊ رﻣﺰ اﻟ‬ ‫ﺑﻞﻳﻤﻜﻨﻨﺎ أ ً‬
‫ﻳﻀﺎﺗﺼﺤﻴﺤﻪ‬ ‫ﺑ ﺴﻬﻮﻟ ﺔ ﺧﺎرج اﻷداة اﻟﻐﺎﻣﻀ ﺔ ‪،‬‬
‫ﺘﺎﻟ ﻲﻳﻜﻮن ﻟﺪﻳﻨﺎ وﻗ ﺖ أﺳﻬﻞ ﻓ ﻲﺗﺸﺨﻴﺺ‬
‫ﺑﺎﻟ‬
‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ ‪IDA ،‬و‬‫ﺜﻨﺎﺋ ﻲ اﻟﻤﺸﺮوح‬
‫ﺑﺮﻧﺎﻣﺞ ‪SecureROM‬اﻟ‬‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺜﻨﺎﺋﻴ ﺔ‬
‫ﺘﻰﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء اﻟ‬
‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬ﻳﻤﻜﻨﻨﺎ ﺣ‬
‫ﺘﺤﻠﻴﻞ ﻋﺎم وﻣﻨﺼ ﺔﺗﺼﺤﻴﺢ أﺧﻄﺎء ﻟـ ‪SecureROM ،‬ﺧﺎرج‬
‫ﺑ ﺔ ﻗﺎﻋﺪة ﻟ‬
‫ﺜﺎ‬
‫ﺑﻤ‬ ‫ﺘﺸﻮﻳ ﺶ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘﺨﺪام ‪emmutaler‬ﻓﻘﻂ ﻟﻠ‬ ‫اﻟﻤﺸﻜﻼ ت أ ً‬
‫ﻳﻀﺎ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻣﻦ اﻟﻤﻨﻄﻘ ﻲ أﻧﻪ ﻻﻳﻤﻜﻦ اﺳ‬
‫ﺘﻤﺮار‪.‬‬
‫ﺑﺎﺳ‬
‫ﺒﺎر ‪ ،‬ﻋﻨﺪﻣﺎ ﻻﻳﻀﻄﺮ اﻟﻤﺮء إﱃ إﻋﺎدةﺗﺸﻐﻴﻞ ﺟﻬﺎز ‪iPhone‬‬
‫ﺘ‬‫ﺘﺼﺤﻴﺢ واﻻﺧ‬
‫ﺛﺮ أﺳﻬﻞ ﻓ ﻲ اﻟ‬
‫‪Apple.‬ﻣﻦ اﻟﻤﺆﻛﺪ أن اﻟﻤﺂ‬

‫ﺑﻌﺾ اﻟﺮﻣﻮز‬‫ﺘﻌﺮف ﻋﲆ‬


‫ﺑﻴﻨﻤﺎﻳﻤﻜﻦ اﻟ‬‫ﺘﻠﻔ ﺔ‪.‬‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻌﻤﻞ اﻟﻴﺪوي ﻟﻠﻌﻤﻞ ﻣﻊ إﺻﺪارا ت ‪SecureROM‬اﻟﻤﺨ‬
‫ﺘﻄﻠ ﺐ اﻟﻜ‬
‫ﺘﻪ اﻟﺤﺎﻟﻴ ﺔ ‪ ،‬ﻻﻳﺰال ‪emmutaler‬ﻳ‬
‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻓ ﻲ ﺣﺎﻟ‬

‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ اﻟﺬاﻛﺮة‬‫ﺘﻼﻓﻬﺎ ﻗﻠﻴ ﻼ ً ﺟﺪًا‪.‬‬


‫ﺘﻌﺮف ﻋﻠﻴﻬﺎ ‪ ،‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ اﺧ‬
‫ﺘﻢ اﻟ‬
‫ﺒﺎ ﻣﺎ ﻻﻳ‬
‫ﺗﻠﻘﺎﺋ ًﻴﺎ ﻓ ﻲ إﺻﺪارا ت أﺧﺮى ‪ ،‬ﻏﺎﻟ ً‬

‫ﺘﺤﻘﻖ أ ً‬
‫ﻳﻀﺎ ﻣﻦﺗﻮﻗﻴﻊ ﻣﺆﺷﺮ اﻟﻌﻮدة‪.‬‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻟ‬‫ﺜﺎل ‪ ،‬ﻗﺪﺗﻌﻮد ‪retaa‬ﻓﻘﻂ ‪،‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫‪2‬ﻋﲆﺳ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻮﺿﻊ اﻵﻣﻦ ﻓ ﻲ اﻟﻤﺼﻬﺮ ‪1 ،‬و‬
‫ﺑ ﺖ ‪،‬ﻳ‬
‫ﺒﺎﻟﻎ ﻋﺪد ﻫﺎ ‪32‬‬
‫ﺘﺎ ت اﻟﻤﺼﻬﺮ اﻟ‬
‫ﺑ‬‫ﺘﺨﺪم اﻵن ﺟﻤﻴﻊ‬
‫ﺘﻜﻮﻳﻦﻳ ﺴ‬
‫ﺘﻴﻞ اﻟ‬
‫ﺑ ﺖ واﺣﺪًا ﻓ ﻲ ﻓ‬‫‪3‬ﻧﻈ ًﺮاﻷن‬
‫ﺑ ﺖ ‪1‬ﻣﻦ اﻟﺼﻤﺎﻣﺎ ت ‪0.‬‬‫ﻟﻴ ﺲ‬
‫‪Machine Translated by Google‬‬

‫‪6.3 IMG4 FUZZING‬‬ ‫‪37‬‬

‫{ )‪int cfg_fuse_get (uint32_t fuse_val، uint32_t fuse_num، bool is_raw‬‬

‫إذا ) ‪( fuse_val == 0xA050C030‬‬


‫اﻟﻌﻮدة ؛ ‪0‬إذا ) ‪( fuse_val == 0xA55AC33C‬‬

‫اﻟﻌﻮدة ؛ )‪ report_invalid (fuse_num، is_raw‬؛ ‪1‬‬


‫ﻋﻮدة ؛ ‪-1‬‬

‫}‬

‫{ )‪uint32_t cfg_fuse_get_default (uint32_t fuse_val، uint32_t fuse_num، bool is_raw، uint32_t def‬‬

‫ﺘﻴﺠ ﺔ )‪== 1‬إرﺟﺎع ؛ ‪1‬‬


‫ﺘﻴﺠ ﺔ ؛ )‪int = cfg_fuse_get (fuse_val ، fuse_num ، is_raw‬إذا )اﻟﻨ‬
‫ﻧ‬
‫ﺘﻴﺠ ﺔ )‪== 0‬إرﺟﺎع ؛ ‪0‬‬
‫إذا )اﻟﻨ‬

‫ﻋﻮدة ﻣﻮاﻃﻨﻪ‬
‫}‬

‫{ )( ‪bool chipid_get_secure_mode‬‬

‫إرﺟﺎع ؛ )‪cfg_fuse_get_default (rCFG_FUSE1_RAW، 1، true، 1‬‬


‫}‬

‫ﺑﻌﺪه‪.‬‬‫اﻟﻜﻮد ‪6.3:‬ﻗﺮاءة وﺿﻊ اﻷﻣﺎن ﻓ ﻲ ‪A12‬وﻣﺎ‬

‫ﺑﺨﻼف ‪SecureROM ،‬‬‫ﺒﻨﺎء‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻻﻳﻌﻤﻞ أي ﺷ ﻲء آﺧﺮ‬


‫ﺒﺮاﻣﺞ اﻟﻨﺼﻴ ﺔ ﻟﻠ‬
‫ﺑ ﺖ داﺧﻞ اﻟ‬
‫ﺛﺎ‬‫ﺑﺸﻜﻞ‬‫ﺘﻢﺗﺮﻣﻴﺰ ﻫﺎ‬
‫ﺘﻢ ﺣﺎﻟ ًﻴﺎ أﺧﺬ اﻟﻤﻨﺎﻃﻖﺗﻠﻘﺎﺋ ًﻴﺎ ﻣﻦ ‪SecureROM ،‬وﻟﻜﻦﻳ‬
‫ﻻﻳ‬
‫ﺜﻞ ‪iBoot ،‬ﻋﲆ اﻹﻃﻼق‪.‬‬
‫ﺒﺮﻧﺎﻣﺞ ﻣ‬
‫ﺗ ﻲ ﻣﻦ ﻧﻔ ﺲ ﻣﺼﺪر اﻟ‬
‫اﻟﺬيﻳﺄ‬

‫‪6.3‬ﻏﻤﻮض ‪IMG4‬‬

‫ﺘﺸﻐﻴﻞ اﻟﻬﺪف ﻣﻊ‬


‫ﺑ‬‫ﺘﺎن ‪ ،‬واﺣﺪةﺗﻘﻮم‬
‫ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪5.4 ،‬ﻟﺪﻳﻨﺎ ‪12‬ﺣﺎﻟ ﺔ ﻟﻜﻞ ﻣﺠﻤﻮﻋ ﺔ ﻣﺸﻮﺷ ﺔ ‪ ،‬ﻛﻞ ﺣﺎﻟ ﺔ ﻋﲆ ﺟﻮ ﻫﺮ ﻫﺎ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻟﺪﻳﻨﺎ ﻣﺠﻤﻮﻋ‬
‫ﺒﻮع ‪168‬‬
‫ﺘﻴﻦﺗﻌﻤﻞ ﻟﻤﺪة أﺳ‬
‫ﺘﻌﺪﻳﻼ ت‪.‬ﺗﻢﺗﺮك ﻛﻼ اﻟﻤﺠﻤﻮﻋ‬
‫ﺜﻞ ﻫﺬه اﻟ‬
‫ﺑﺪون ﻣ‬‫ﺑﻬﺎ ‪(OOB ،‬اﻧﻈﺮ اﻟﻘ ﺴﻢ )‪5.5.1‬واﻷﺧﺮى‬‫ﺘﺤﻘﻖ ﻣﻦ اﻟﺤﺪود اﻟﻤ ﺴﻤﻮح‬
‫اﻟﻤﺰﻳﺪ ﻣﻦ ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺘﺨﺪام وﺣﺪة اﻟﻤﻌﺎﻟﺠ ﺔ اﻟﻤﺮﻛﺰﻳ ﺔ ‪Intel i7-8700K @ 3.70‬‬
‫ﺑﺎﺳ‬
‫‪-‬ﺳﺎﻋ ﺔ ‪-‬ﻣﻊﺗﺨﺼﻴﺺ ﺟﻤﻴﻊ اﻟﻤﻮارد ﻟﻬﻤﺎ‪.‬ﺗﻢﺗﺸﻐﻴﻞ ﻛﻞ ﻣﺠﻤﻮﻋ ﺔ ﻋﲆ ﺟﻬﺎز ﻣﻊ ‪Ubuntu 18.04‬‬
‫ﺑﺎﻳ ﺖ‪.‬‬
‫ﺑ ﺴﻌ ﺔ ‪8‬ﺟﻴﺠﺎ‬
‫ﺗﺰ ﻣﻊ ذاﻛﺮة وﺻﻮل ﻋﺸﻮاﺋ ﻲ ‪DDR4‬‬
‫ﺟﻴﺠﺎ ﻫﺮ‬

‫ﺑ ﺔ‪ .‬ﻛﻤﺎ رأﻳﻨﺎ ﻻﺣ ًﻘﺎ‬


‫ﺘﺠﺮ‬
‫ﺘﺎﺟﺎ ت ﻣﻦ ﻫﺬه اﻟ‬
‫ﺘﻨ‬‫ﺑﻌﺾ اﻻﺳ‬‫ﺘﺨﻼص‬
‫ﺑﺈﻣﻜﺎﻧﻨﺎ اﺳ‬‫ﺛﻨﺎء اﻟﻐﻤﻮض ‪ ،‬ﻻﻳﺰال‬
‫ﺑﺎﻟﻔﻌﻞ أو ﺟﺪﻳﺪة ‪-‬أ‬‫ﺘﻢ اﻟﻜﺸﻒ ﻋﻦ أي أﺧﻄﺎء ‪-‬ﻻ ﻣﻌﺮوﻓ ﺔ‬
‫ﺑﻴﻨﻤﺎ ﻟﻢﻳ‬
‫ﺑﺸﻜﻞ ﺧﺎص ﻟﻤﺼﻬﺮ‬ ‫ﺘﺸﻮﻳ ﺶ‪ .‬ﻟﻘﺪ رأﻳﻨﺎ أ ً‬
‫ﻳﻀﺎ أن ‪ ASN.1‬ﻫﻮﺗﻨ ﺴﻴﻖ ﺻﻌ ﺐ‬ ‫ﺛﻴﺮ ﻣﻠﺤﻮظ ﻋﲆ أداء اﻟ‬
‫ﺑﻮﺻﻮل ﻣﻌﻴﻦ ﺧﺎرج اﻟﺤﺪود ﻟﻢﻳﻜﻦ ﻟﻪﺗﺄ‬‫ﺘﻐﻄﻴ ﺔ ‪ ،‬ﻓﺈن اﻟ ﺴﻤﺎح‬
‫ﻣﻊ اﻟ‬
‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ‪ .‬ﻟﻢﻳﻜﻦ ﻫﺬا ﻣﻔﺎﺟ ًﺌﺎ ‪ ،‬ﻧﻈ ﺮًاﻷن ﻃ‬
‫ﺒﻴﻌ ﺔ ﻗﻴﻤ ﺔ ﻃﻮل‬ ‫ﺒﺎر اﻟ‬
‫ﺘ‬‫ﺘﺤﻠﻴﻞ اﻟﻴﺪوي ﻟﺤﺎﻻ ت اﻻﺧ‬
‫ﺘﻐﻄﻴ ﺔ ‪-‬اﻟﻤﻘﺪﻣ ﺔ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪6.6 -‬واﻟ‬
‫ﺑﻴﺎﻧﺎ ت اﻟ‬‫ﺑﻨﺎ ًء ﻋﲆ‬‫ﺘﺤﻮر ‪،‬‬
‫ﻟﻠ‬
‫ﺘﻐﻴﻴﺮا ت اﻟﺼﻐﻴﺮة ﻓ ﻲ اﻟﻌﻼﻣ ﺔ أو ﺣﻘﻞ اﻟﻄﻮل ‪،‬ﻳﻤﻜﻦ أنﺗﺠﻌﻞ اﻹدﺧﺎلﺳﺮﻳﻌً ﺎ ﻏﻴﺮ ﺻﺎﻟﺢ ورﻓﻀﻪ‪.‬‬
‫اﻟﻌﻼﻣ ﺔﺗﻌﻨ ﻲ أن اﻟ‬

‫‪6.4 USB Fuzzing‬‬

‫ﺑﻴ ﺔ ‪ ،‬وﻛﻠﻬﺎ ﻟﻬﺎ ﻧﻔ ﺲ اﻟﻬﺪف ‪ ،‬ﻟﺬﻟﻚ‬


‫ﺒﺎ‬
‫ﺛﻼ ث ﻣﺠﻤﻮﻋﺎ ت ﺿ‬‫ﺘﻼف اﻟﻮﺣﻴﺪ ﻫﻮ ﻓ ﻲ ﻋﺪد و ﻫﺪف اﻟﻤﺠﻤﻮﻋﺎ ت اﻟﻐﺎﻣﻀ ﺔ‪ .‬ﻟﺪﻳﻨﺎ‬
‫ﺘﻀﻠﻴﻞ ‪IMG4.‬اﻻﺧ‬
‫ﺛﻞ ﻟ‬
‫إﻋﺪادﺗﺸﻮﻳ ﺶ ‪USB‬ﻣﻤﺎ‬
‫ﺘﻮازي ‪،‬‬
‫ﺑﺎﻟ‬‫ﺛﻼ ث ﻣﺠﻤﻮﻋﺎ ت‬‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺑﻴﻦ اﻟﻤﺠﻤﻮﻋﺎ ت ‪ ،‬ﻋﲆ ﻋﻜ ﺲ ﻏﻤﻮض ‪IMG4.‬ﻗﻤﻨﺎ‬‫ﻻﻳﻮﺟﺪ ﻓﺮق‬

‫‪4Or for Elon ، 6.79‬ﻣﺮﻳﺨ ﻲ‪.‬‬


‫‪Machine Translated by Google‬‬

‫‪6.4. USB FUZZING‬‬ ‫‪38‬‬

‫ﺑﺸﻜﻞ أﻓﻀﻞ ‪ ،‬ﺣﻴ ﺚ‬‫ﺘﻌﻤﻴﻢ أداﺋﻨﺎ اﻟﻐﺎﻣﺾ‬


‫ﺑ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳ ﺴﻤﺢ ﻟﻨﺎ ﻫﺬا‬
‫ﺘﺄﻛﺪ ﻣﻦ أﻧﻨﺎﺳﻨﺼﻞ إﱃ ﺧﻄﺄ ‪checkm8‬ﻓ ﻲ إﻃﺎر زﻣﻨ ﻲ ﻣﻌﻘﻮل ‪5.‬‬
‫ﻟﻠ‬
‫ﺒﻌﺾ‪.‬‬
‫ﺑﻌﻀﻬﺎ اﻟ‬‫ﺘﻌﺪدة ﻣﻊ‬
‫ﻳﻤﻜﻨﻨﺎ ﻣﻘﺎرﻧ ﺔ ﻣﺠﻤﻮﻋﺎ ت ﻣ‬

‫‪6.4.1 checkm8 A13‬‬


‫ﺘﻐﻠﻪ ‪checkm8.‬‬
‫ﺗﻤﻜﻨﺎ ﻣﻦﺗﺸﻐﻴﻞ ‪UAF‬اﻟﺬي اﺳ‬
‫ﺘﺨﺪام ‪FETA ،‬‬
‫ﺑﺎﺳ‬‫ﺑﺸﻜﻞ ﺧﺎص ‪،‬‬
‫ﺘﺸﻮﻳ ﺶ ‪ USB ،‬ﻫ ﻲ أﻧﻨﺎﺗﻤﻜﻨﺎ ﻣﻦﺗﺸﻐﻴﻞ ﺧﻄﺄ ‪checkm8.‬‬
‫ﺘﺎﺋﺞ اﻟﻤﻬﻤ ﺔ ﻟ‬
‫إﺣﺪى اﻟﻨ‬
‫ﺒ ﺐ ﺧﻄﺄ ‪checkm8‬ﻓ ﻲ اﻟﻜﻮد ‪5.9.‬‬
‫ﺑﺴ‬‫ﺘﻌﻄﻞ‬
‫ﺜﺎلﺗﻌﻘ ﺐ اﻟﻤﻜﺪس اﻟﺬيﺗﻢ إﻧﺸﺎؤه ﻋﻨﺪ اﻟ‬
‫ﻳﻤﻜﻦ رؤﻳ ﺔ ﻣ‬

‫ﺑﺪأﻧﺎ ﻣﺠﻤﻮﻋ ﺔ ﻏﺎﻣﻀ ﺔ‬


‫ﺑﺸﻜﻞ ﻗﺮﻳ ﺐ ﺟﺪًا ﻣﻦ ‪checkm8 ،‬‬
‫ﺑﻨﺎ ﻣﻦ أﺟﻞ ‪fuzzer‬‬‫ﺒﺪاﻳ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﺨﺼﻴﺺ ﻣﺪﺧﻼ ت اﻟ‬
‫ﺑ‬‫ﺜﺮ ﻋﲆ اﻟﺨﻄﺄﻷﻧﻨﺎ ﻗﻤﻨﺎ‬
‫ﺘﺄﻛﺪ ﻣﻦ أﻧﻨﺎ ﻻ ﻧﻌ‬
‫ﻟﻠ‬
‫ﺘﻮي ﻓﻘﻂ ﻋﲆ رﺳﺎﺋﻞ ‪USB‬اﻟﻘﻴﺎﺳﻴ ﺔ ﻛﻤﺪﺧﻼ ت‪.‬‬
‫ﺗﺤ‬
‫ﺒﻞ ‪ ،‬ﻟﺬﻟﻚ ﻛﺎن ﻟﺪﻳﻬﺎ‬
‫ﺘﻠ ﺔ اﻟﻐﺎﻣﻀ ﺔ ﻛﻤﺎ ﻛﺎﻧ ﺖ ﻣﻦ ﻗ‬
‫ﺑﻴﻨﻤﺎﺗﻢﺗﻜﻮﻳﻦ اﻟﻜ‬‫ﺗﻮﻛﻮل ‪DFU‬ﻛﻤﺪﺧﻼ ت‪.‬‬
‫ﺒﺮو‬
‫ﺑ‬‫ﺘﻌﻠﻖ‬
‫ﺘﻢﺗﻘﺪﻳﻢ أي رﺳﺎﺋﻞﺗ‬
‫ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪ ،‬ﻟﻢﻳ‬
‫ﺘﺨﺪام ‪2700X‬‬
‫ﺑﺎﺳ‬
‫ﺘﺸﻐﻴﻞ ‪Arch Linux‬‬
‫ﺑﻨﻈﺎم اﻟ‬‫ﺛﻨ ﻲ ﻋﺸﺮ ﺣﺎﻟ ﺔ ﻣﻊ اﻟﻤﻌﻠﻤﺎ ت ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪5.4 ،‬ﻓﻘﺪﺗﻢﺗﺸﻐﻴﻠﻬﺎ ﻋﲆ ﺟﻬﺎزﻳﻌﻤﻞ‬
‫ﻧﻔ ﺲ اﻹ‬
‫ﺜﻮر ﻋﲆ إدﺧﺎل‬
‫ﺜﻴﻞ ﻣﺤﻴﺮ ﻟﻠﻌ‬
‫ﺘﻐﺮﻗﻪ ﻛﻞ ﻣ‬
‫ﺑﻘﻴﺎس اﻟﻮﻗ ﺖ اﻟﺬيﻳ ﺴ‬‫ﺛﻢ ﻗﻤﻨﺎ‬‫ﺑﺎﻳ ﺖ‪.‬‬
‫ﺑ ﺴﻌ ﺔ ‪32‬ﺟﻴﺠﺎ‬
‫‪AMD 7 Ryzen‬ﻣﻊ ذاﻛﺮة وﺻﻮل ﻋﺸﻮاﺋ ﻲ ‪DDR4‬‬
‫ﺒﺎدل اﻻﻧﻬﻴﺎرا ت‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻓﺈن اﻟﻨﻈﺮ‬
‫ﺘ‬‫ﺘﻤﺎم ‪ ،‬ﻓﺈﻧﻬﺎ ﻟﻦﺗ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺒﺎدل اﻟﻤﺪﺧﻼ ت اﻟﻤ‬
‫ﺘ‬‫ﺑﻜ ﺔﺗ‬
‫ﺘﻌﺮض ‪(TTE).‬ﻓ ﻲ ﺣﻴﻦ أن اﻟﺤﺎﻻ ت اﻟﻤﺮ‬
‫ﻣﻌﻄﻞ ‪،‬ﻳ ﺴﻤﻰ وﻗ ﺖ اﻟ‬
‫ﺘﻠﻔ ﺔ ﻓ ﻲ اﻟﺸﻜﻞ ‪6.1.‬‬
‫ﺘﺎﺋﺞ ‪TTE‬ﻟﻠﺤﺎﻻ ت اﻟﻤﺨ‬
‫ﺘﻢ ﻋﺮض ﻧ‬
‫ﺘﻮﺳﻂ ‪TTE.‬ﻳ‬
‫ﺘﻠﻔ ﺔﻳﻌﻄﻴﻨﺎ ﻓﻜﺮة ﺟﻴﺪة ﻋﻦ ﻣ‬
‫إﱃ اﻟﺤﺎﻻ ت اﻟﻤﺨ‬

‫‪6‬‬

‫‪4‬‬

‫‪2‬‬

‫ﺋﻴ ﺴ ﻲ‬
‫ر‬ ‫‪cmpcov cmpcovlib cmplog fuzzer5‬‬ ‫ﻓﻮزر ‪6‬‬ ‫ﻓﻮزر ‪7‬‬ ‫‪fuzzer8‬‬ ‫‪fuzzer9 fuzzer10 fuzzer11‬‬

‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺒﺮ ﺟﻤﻴﻊ ﺣﺎﻻ ت اﻟ‬
‫اﻟﺸﻜﻞ ‪6.1: TTE‬ﻟﺨﻠﻞ ‪checkm8‬ﻋ‬

‫ﺑﺎﻟﻨﻈﺮ إﱃ أن ﺧﻄﺄ‬‫ﺘﻴﻦ‪.‬‬
‫ﺜﻮر ﻋﲆ اﻟﺨﻄﺄ ﻓ ﻲ أﻗﻞ ﻣﻦﺳﺎﻋ‬
‫ﺗﻤﻜﻦ ﻣﺼﻬﺮ واﺣﺪ ﻣﻦ اﻟﻌ‬
‫ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﺸﻜﻞ ‪TTE ،‬ﻣﻨﺨﻔﺾ ﺟﺪًا ﻓ ﻲ ﺟﻤﻴﻊ اﻟﻤﺠﺎﻻ ت و‬
‫ﺑﻬﺬه اﻟ ﺴﺮﻋ ﺔ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬ﺗﻤﻜﻨﺎ اﻵن ﻣﻦﺗﺄﻛﻴﺪ‬‫ﺜﻮر ﻋﲆ اﻟﺨﻄﺄ‬
‫ﺘﻰ ‪A13 ،‬ﻛﺎن ﻣﻦ اﻟﻤﺪ ﻫ ﺶ ﺟﺪًا اﻟﻌ‬
‫ﺘ ﺔ أﺟﻴﺎل ﻣﻦ اﻟﺮﻗﺎﺋﻖ ‪-‬ﻣﻦ ‪A8‬ﺣ‬
‫‪checkm8‬ﻣﻮﺟﻮد ﻋﲆﺳ‬
‫اﻟﻜﺎﻣﻠ ﺔ‬ ‫ﺘﻐﻼل‬
‫ﺣﺎﻟ ًﻴﺎ‬ ‫ﺴﻠﺔﺔ اﻻﺳ‬
‫ﻣﻌﺮوﻓ ﺔ‬ ‫وﺟﻮدﺳﻠ‬
‫ﻃﺮﻳﻘ‬ ‫ﻟﻌﺪم‪ -‬ﻋﻤﻞ‬
‫ﻟﻌﺪم‬
‫ﺐا ‪،‬‬‫ﺒﻧﻈ ﺮً‬
‫ﺳ‬ ‫ﻳﻮﺟﺪ‬
‫ﻵن‪.‬‬ ‫ﻵنﻨًﺎوﻻ‬
‫ﺑﻌﺪ ا‬ ‫ﺘﻰ اﻣﻤﻜ‬‫ﻟﻢ ﺣ‬
‫ﻳﻌﺪ‬ ‫ﻣﻜﺎن‬ ‫ﺷﻮيﻓ ﻲ أي‬
‫اﻟﻀﺮوري‬ ‫ﻋﻦ ﻫﺬا‬
‫ﺑﻼغﻓﻨﻎ‬ ‫ﺘﻢ اﻹ‬
‫ﻛﻮﻣ ﺔ‬ ‫أن ﻟﻢﻳ‬
‫إﻋﺪاد‬ ‫ﻋﻠﻤﻨﺎ ‪،‬‬ ‫إﱃﺣﺪ‬
‫ﺣﻘﻴﻘ ﺔ‬ ‫ﻋﲆ‬ ‫‪A13.‬‬
‫ﻳﺮﺟﻊ‬‫ﺋﻖﻫﺬا‬
‫رﻗﺎأن‬ ‫ﻧﻔ ﻓ ﻲ‬
‫ﺘﺮض‬ ‫ﻣﻮﺟﻮدًا‬ ‫ﻳﺰال‬
‫ﺗﺤﻠﻴﻠﻨﺎ ‪،‬‬ ‫‪ A13.‬ﻻ‬
‫ﻣﻦ‬ ‫ﺋﻴ ﺴ ﻲ‬
‫اﻟﺮ‬ ‫ﻋﲆاﻟﺨﻄﺄ‬
‫‪A12‬و‬ ‫أن‬

‫ﺘﺎﻟ ﻲ ﻓﺈن ‪UAF‬ﻋﺪﻳﻢ اﻟﻔﺎﺋﺪة‪.‬‬


‫ﺑﺎﻟ‬
‫ﺘ ﻲﺗﻢﺗﺤﺮﻳﺮ ﻫﺎ ﻓ ﻲ ﻧﻔ ﺲ اﻟﻤﻮﻗﻊ و‬
‫ﺘﺤﻜﻢ اﻟ‬
‫ﺋﻤﺎﺗﺨﺼﻴﺺ وﺣﺪة اﻟ‬
‫ﺘﻢ دا ً‬
‫ﺘﺨﺼﻴﺼﺎ ت ﻣﺨﺼﺼ ﺔ ‪-‬ﻟﺬﻟﻚ ﻻﻳﻮﺟﺪﺗ ﺴﺮ ب ﻟﻠﺬاﻛﺮة ‪،‬ﺳﻴ‬
‫ﺑﻘﺎء اﻟ‬
‫ﻹ‬

‫‪-،‬‬

‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺑﺸﻜﻞ ﻣﺸﻮ ش ‪ ،‬إﻻ أن اﻟ‬‫ﺑﺎﻟﻔﻌﻞ ﻋﲆ إﺻﻼح اﻟﺨﻄﺄ اﻷﺳﺎﺳ ﻲ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻨﺎ ﻟﻢ ﻧﺆﻛﺪ ذﻟﻚ‬‫ﺒﺪو أن ‪A14‬ﻳﻌﻤﻞ‬
‫ﻋﲆ ﻋﻜ ﺲ ‪A12‬و ‪A13 ،‬ﻳ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻋﲆ ‪NULL.‬‬‫ﺒﻄﻪ اﻵن‬
‫ﻳﻜﺸﻒ أن اﻟﻤﺆﺷﺮ ﻗﺪﺗﻢ ﺿ‬

‫ً‬
‫ﻣﻨﺨﻔﻀﺎ ﺟﺪًا‪.‬‬ ‫ﺜﻴ ﺮًا ‪ ،‬ﺣﻴ ﺚ ﻛﺎن وﻗ ﺖﺗﻌﺮض ‪checkm8‬‬
‫ﺘﺎﻟ ﻲ ‪ ،‬ﻟﻢﺗﻜﻦ ﻫﻨﺎك ﺣﺎﺟ ﺔ إﱃ ﻫﺬا ﻛ‬
‫‪5‬ﻛﻤﺎ رأﻳﻨﺎ ﻓ ﻲ اﻟﻘ ﺴﻢ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺠﻤﻴﺪ‬
‫ﺗﺤ ﺴﻴﻦﺳﺮﻋ ﺔ اﻟ‬
‫‪6.5.‬‬ ‫‪39‬‬

‫ﺘﺸﻮﻳ ﺶ‬
‫ﺗﺤ ﺴﻴﻦﺳﺮﻋ ﺔ اﻟ‬
‫‪6.5‬‬
‫ﺘﺎﻟﻴ ﺔ‪ .‬ﻛﺎن‬
‫ﺘﻠﻔ ﺔ اﻟ‬
‫ﺘﻜﻮﻳﻨﺎ ت اﻟﻤﺨ‬
‫ﺑﻴ ﺔ ‪ ،‬ﻣﻤﺎ أدى إﱃﺗﺸﻮﻳ ﺶ ‪IMG4 ،‬ﻣﻊ اﻟ‬
‫ﺒﺎ‬
‫ﺛﻼ ث ﻣﺠﻤﻮﻋﺎ ت ﺿ‬‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺘﻪﺗﺤ ﺴﻴﻨﺎ ت اﻟ ﺴﺮﻋ ﺔ ﻟﺪﻳﻨﺎ ‪ ،‬ﻗﻤﻨﺎ‬
‫ﻟﻤﻌﺮﻓ ﺔ اﻟﻔﺮق اﻟﺬي أدﺧﻠ‬
‫ﺑ ﺖ ﻣﻊ وﺣﺪة ‪kernel‬ﻟﻠﻘﻄﺎ ت‪ .‬إﱃ ﺟﺎﻧ ﺐ ذﻟﻚ ‪ ،‬ﻛﺎن ﻟﺪى اﻟﻤﺠﻤﻮﻋﺎ ت اﻹﻋﺪاد‬
‫ﺜﺎ‬
‫ﺘﻘﻞ ‪ ،‬واﻵﺧﺮ ﻓ ﻲ اﻟﻮﺿﻊ اﻟﺪاﺋﻢ واﻵﺧﺮ ﻓ ﻲ اﻟﻮﺿﻊ اﻟ‬
‫أﺣﺪ ﻫﻤﺎﻳﻌﻤﻞ ﻓ ﻲ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺑ ًﻘﺎ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن ﻛﻞ ﻣﺠﻤﻮﻋ ﺔﺗﻌﻤﻞ ﻋﲆ ﻧﻔ ﺲ اﻟﺠﻬﺎز اﻟﻤ ﺴ‬
‫ﺘﺨﺪم ﻓ ﻲ ﻗﻴﺎس ‪TTE‬اﻟﻤﻮﺿﺢ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪6.4.1.‬‬ ‫ﺛﻨ ﻲ ﻋﺸﺮ ﺣﺎﻟ ﺔ ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢﺳﺎ‬
‫اﻟﻘﻴﺎﺳ ﻲ اﻟﻤﻜﻮن ﻣﻦ ا‬
‫ﺘﻠﻔ ﺔ ﻓ ﻲ اﻟﺸﻜﻞ ‪6.2.‬ﻣﻦ اﻟﻮاﺿﺢ أن وﺣﺪة‬
‫ﺘﺸﻮﻳ ﺶ ﻟﻠﺤﺎﻻ ت واﻟﻤﺠﻤﻮﻋﺎ ت اﻟﻤﺨ‬
‫ﺑﻊ اﻷوﱃ ﻣﻦ اﻟ‬
‫ﺜﺎﻧﻴ ﺔ ﺧﻼل اﻟ ﺴﺎﻋﺎ ت اﻷر‬
‫ﺘﻮﺳﻂ ﻋﺪد ﻋﻤﻠﻴﺎ ت اﻹﻋﺪام ﻓ ﻲ اﻟ‬
‫ﺘﻢ ﻋﺮض ﻣ‬
‫ﻳ‬
‫ﺑﺎﻟ ﺴﺮﻋ ﺔ‪.‬‬‫ﺘﻌﻠﻖ‬
‫‪ kernel‬ﻫ ﻲ اﻟﻔﺎﺋﺰة ﻓﻴﻤﺎﻳ‬

‫ﺘﻘﻞ‬
‫ﻣﺴ‬
‫‪104‬‬ ‫ﺑﺮ‬
‫ﺜﺎ‬
‫ﻣ‬
‫وﺣﺪة ‪Kernel‬‬

‫‪103‬‬

‫‪102‬‬

‫ﺋﻴ ﺴ ﻲ‬
‫ر‬ ‫‪cmpcov cmpcovlib cmplog‬‬

‫ﺘﻠﻔ ﺔ‪.‬‬
‫اﻟﺸﻜﻞ ‪6.2:‬ﺳﺮﻋ ﺔﺗﺸﻮﻳ ﺶ ‪IMG4‬ﻷوﺿﺎع ‪AFL ++‬اﻟﻤﺨ‬

‫ﺘﻘﻞ ‪ ،‬ﻻﻳﺰال ‪AFL ++‬‬


‫ﺘﻘﻞ‪ .‬ﻓ ﻲ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺑﻄﺄ ﻣﻦ اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺘﻤﺮ أ‬
‫ﺑﻌ ﺔ ﻣﻦ اﻟﺸﻜﻞ اﻟﻤﺬﻛﻮر ‪ ،‬و ﻫ ﻲ أن اﻟﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺘﻤﺎم ﻧﺎ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻫﻨﺎك ﻣﻼﺣﻈ ﺔ ﻣ‬
‫ﺘﺸﻌ ﺐ‬
‫ﺘﻬ ﻲ اﻟﺮﻛﺾ اﻟﻐﺎﻣﺾ ‪،‬ﻳ‬
‫ﺒﻞﺗﻨﻔﻴﺬ ‪main‬و ‪forks‬ﻧﻔ ﺴﻬﺎ‪ .‬ﻓ ﻲ ﻛﻞ ﻣﺮةﻳﺨﺮج اﻟﻄﻔﻞ وﻳﻨ‬ ‫ﺘﺨﺪم ﺷﻴ ًﺌﺎﻳ ﺴﻤﻰ ‪forkserver.‬ﻣﻦ ﺣﻴ ﺚ اﻟﺠﻮ ﻫﺮ ‪،‬ﻳ‬
‫ﺘﻮﻗﻒ ‪AFL ++‬ﻗ‬ ‫ﻳﺴ‬
‫ﺘﻼف اﻟ ﺴﺮﻋ ﺔ‪.‬‬
‫ﺘﺎﻟ ﻲﻳﻤﻜﻦ أنﻳﻔ ﺴﺮ اﺧ‬
‫ﺑﺎﻟ‬
‫ﺗﻤﺎﻣﺎ و‬
‫ً‬ ‫ﺒﺎ‬
‫ﺘﻔﺮع ‪ ،‬ﻓﻼﻳﺰال ﻫﺬا أﻣ ﺮًا ﻣﻨﺎﺳ ً‬
‫ﺘﺨﺪم ‪COW‬ﻋﻨﺪ اﻟ‬
‫ﻣﺮة أﺧﺮى وﻳﺨﻠﻖ ﻋﻤﻠﻴ ﺔ ﻃﻔﻞ ﺟﺪﻳﺪة‪ .‬ﻧﻈ ﺮًاﻷن اﻟﻨﻮاةﺗ ﺴ‬

‫ﺘﺨﺪام ﻛﻞﺗﻌﻠﻴﻤﺎ ت ﻣﻘﺎرﻧ ﺔ ‪ ،‬ﻻ‬


‫ﺘﻰ ﻋﻨﺪ اﺳ‬
‫ﺑﻴﻦ اﻟﺤﺎﻻ تﺗﻜﻮن ﻓ ﻲ اﻟﻐﺎﻟ ﺐ ﺿﺌﻴﻠ ﺔ‪ .‬ﺣ‬‫ﺘﻼﻓﺎ ت ﻓ ﻲ اﻟ ﺴﺮﻋ ﺔ‬
‫ﺑﻴﻦ اﻟﻤﺠﻤﻮﻋﺎ ت ‪ ،‬ﻓﺈن اﻻﺧ‬‫ﻋﲆ اﻟﻨﻘﻴﺾ ﻣﻦ ﻓﺮوق اﻟ ﺴﺮﻋ ﺔ‬
‫ﺒﺔ‬
‫ﺘ‬‫ﺗﻪ ﻓ ﻲ ﻣﻜ‬ ‫ﺘﻢ أ ً‬
‫ﻳﻀﺎﺗﻨﻔﻴﺬ أدوا‬ ‫ﺜﺎﻧﻴ ﺔ ‪،‬ﻳ‬
‫ﺘﻨﻔﻴﺬ ﻓ ﻲ اﻟ‬ ‫ً‬
‫اﻧﺨﻔﺎﺿﺎ ﻓ ﻲ ﻋﺪد ﻋﻤﻠﻴﺎ ت اﻟ‬ ‫ﺘﺄﻛﻴﺪ‬
‫ﺑﺎﻟ‬
‫ُﻈﻬﺮ ‪cmpcovlib‬‬
‫ﺑﻴﻨﻤﺎﻳ‬‫ﺜﻴﺮ ﻣﻦ اﻟ ﺴﺮﻋ ﺔ إن وﺟﺪ ت ﻋﲆ اﻹﻃﻼق‪.‬‬
‫ﺘﻢ ﻓﻘﺪ اﻟﻜ‬
‫ﻳ‬
‫ﺗﻔﺎع اﻟﻨﻔﻘﺎ ت اﻟﻌﺎﻣ ﺔ‪.‬‬
‫ﺘﺎﻟ ﻲﻳﻤﻜﻦ أنﻳﺸﻴﺮ إﱃ ار‬
‫ﺑﺎﻟ‬
‫ﺧﺎرﺟﻴ ﺔ ‪ ،‬و‬

‫ﺜﻞ اﻷﺟﻬﺰة‪ .‬ﻧﻘﻄ ﺔ أﺧﺮى ﻣﻬﻤ ﺔ ‪ ،‬ﻫ ﻲ أن‬


‫ﺑﻞ ﻓ ﻲ ﻣﺠﺎﻻ ت أﺧﺮى ‪ ،‬ﻣ‬‫ﺜﻨﺎﺋ ﻲ ‪،‬‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻮﻗ ﺖ ﻓ ﻲ ﻋﺪمﺗﻨﻔﻴﺬ اﻟ‬
‫ﺘﻢ ﻗﻀﺎء اﻟﻜ‬
‫ُﻈﻬﺮ ﻣﺨﺮﺟﺎ ت ‪perf‬أﻧﻪ ﻻﻳﺰالﻳ‬
‫وﻣﻊ ذﻟﻚ ‪،‬ﻳ‬
‫ﺘﺸﻮﻳ ﺶ ﻋﺪدًا ﻗﻠﻴ ﻼ ً ﻣﻦ اﻟﻜ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ ‪،‬‬ ‫ﺜﺎل ‪ ،‬إذا ﻧﻔﺬ ت اﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺸﻮﻳ ﺶ‪ .‬ﻋﲆﺳ‬
‫ﺑﺎﻟﻀﺮورة إﱃﺳﺮﻋ ﺔ اﻟ‬‫ﺜﺎﻧﻴ ﺔ ﻻﻳﺸﻴﺮ‬
‫ﻋﺪد ﻋﻤﻠﻴﺎ ت اﻹﻋﺪام ﻓ ﻲ اﻟ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻧﻈ ﺮًاﻷن اﻟﻤﺪﺧﻼ تﻳﺠ ﺐ أنﺗﻜﻮن‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻜ‬
‫ﺘ ﻲﺗﻨﻔﺬ اﻟﻜ‬
‫ﺘﺸﻐﻴﻞ اﻟﻐﺎﻣﻀ ﺔ اﻟ‬
‫ﺑﺎﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻤﻠﻴﺎ ت اﻟ‬‫ﺜﻴﺮ ‪ ،‬ﻣﻘﺎرﻧ ًﺔ‬
‫ﺑﻜ‬‫ﺘﻨﻔﻴﺬ أﻋﲆ‬
‫ﻓ ﺴﻴﻜﻮن ﻋﺪد اﻟ‬
‫ﺘ ﺴﻘ ﺔ إﱃ ﺣﺪ ﻣﺎ أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ ﻓ ﻲ ﻛﻞ ﻋﻤﻠﻴ ﺔﺗﺸﻮﻳ ﺶ ﻣ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ اﻟ‬
‫ﺑﻜ ﺔ ‪،‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻋﺪد اﻟﻜ‬
‫ﺘﻼ ت اﻟﻤﺮ‬
‫ﺘﻜ‬‫ﺒﺮ اﻟﺤﺎﻻ ت واﻟ‬
‫ﺘ ﺴﻘ ﺔ إﱃ ﺣﺪ ﻣﺎ ﻋ‬
‫ﻣ‬

‫ﺘﺸﻐﻴﻞ ‪USB Fuzzing‬ﻣﻊ‬


‫ﺑ‬‫ﺘﺨﺪاﻣﻪ ﻣﻊﺗﺸﻮﻳ ﺶ ‪USB.‬ﻣﺮة أﺧﺮى ‪ ،‬ﻗﻤﻨﺎ‬
‫ﺘﺞ ﻋﻦ اﻟﻮﺿﻊ اﻟﺪاﺋﻢﺗ ﺴﺮﻳﻊﻳﺰﻳﺪ ﻋﻦ ﻋﺸﺮ ﻣﺮا ت ﻋﻨﺪ اﺳ‬
‫ﻋﲆ ﻋﻜ ﺲ ﻏﻤﻮض ‪IMG4 ،‬ﻳﻨ‬
‫ﺑﻊ‬ ‫ﺑ ًﻘﺎ‪.‬ﻳﻌﺮض اﻟﺸﻜﻞ ‪6.3‬ﻣ‬
‫ﺘﻮﺳﻂ ﻋﺪد ﻋﻤﻠﻴﺎ ت اﻹﻋﺪام ﺧﻼل اﻟ ﺴﺎﻋﺎ ت اﻷر‬ ‫ﺒﺎر وﺣﺪة ‪kernel‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢﺳﺎ‬
‫ﺘ‬‫ﺘﻤﻜﻦ ﻣﻦ اﺧ‬
‫ﺘﻠﻔ ﺔ ‪ ،‬ﻫﺬه اﻟﻤﺮة ﻓﻘﻂ ﻟﻢ ﻧ‬
‫ﺗﻜﻮﻳﻨﺎ ت ﻣﺨ‬
‫ﺘﻠﻔ ﺔ‪ .‬أ‬
‫ﺘﺸﻮﻳ ﺶ ﻟﻠﺤﺎﻻ ت واﻟﻤﺠﻤﻮﻋﺎ ت اﻟﻤﺨ‬
‫اﻷوﱃ ﻣﻦ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻐﻄﻴ ﺔ‬
‫‪6.6.‬‬ ‫‪40‬‬

‫ﺑﻤ ﺴﺢ ﺟﻤﻴﻊ اﻟﺼﻔﺤﺎ ت‬


‫ﺑﻴ ﺔ‪.‬ﻳﻘﻮم ‪QEMU‬‬
‫ﺒﺎ‬
‫ﺑﻂ إﺿﺎﻓ ﻲ ﻟﻜﻞ ﺟﻮﻟ ﺔ ﺿ‬
‫ﺘﻘﻞ ﻫﻮ اﻟﺤﺎﺟ ﺔ إﱃ إﻧﺸﺎء ﻣﺆﺷﺮﺗﺮا‬
‫ﺒﻄ ﻲء ﻟﻠﻮﺿﻊ اﻟﻤ ﺴ‬
‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺒ ﺐ ﻓ ﻲ اﻟ‬
‫ﺘﻤﻞ أنﻳﻜﻮن اﻟ ﺴ‬
‫ﻣﻦ اﻟﻤﺤ‬
‫ﺑﺈﻧﺸﺎء اﻟﺨﻴﻂ اﻷول ‪،‬‬‫ﺑ ﺖ ‪ ،‬ﻓﻘﻂ أول ﻋﻤﻠﻴ ﺔﺗﺸﻮﻳ ﺶﺗﻘﻮم‬
‫ﺜﺎ‬
‫ﺜﻞ ﻣﻌﻈﻢ اﻟﻮﻗ ﺖ اﻟﺬيﻳﻘﻀﻴﻪ اﻟﻐﻤﻮض‪ .‬ﻓ ﻲ اﻟﻮﺿﻊ اﻟ‬
‫ﺘﻰﺗﻢ إﻧﺸﺎء اﻟﺨﻴﻂ اﻷول ‪ ،‬و ﻫﻮ ﻣﺎﻳﻤ‬
‫اﻟﻤﺤﺬوﻓ ﺔ ﻣ‬
‫ﺒ ﺐ ﻫﺬا‪.‬‬
‫ﺑﺴ‬‫ﺑﻄﺎﺋﻬﺎ‬
‫ﺘﻢ إ‬
‫ﺛﻢ ﻟﻤﺎذا ﻻﻳ‬‫وﻣﻦ‬

‫‪102‬‬ ‫ﺘﻘﻞ‬
‫ﻣﺴ‬
‫ﺑﺮ‬
‫ﺜﺎ‬
‫ﻣ‬

‫إﻛ ﺴﻴﻚ ‪/‬‬

‫‪101‬‬

‫ﺋﻴ ﺴ ﻲ‬
‫ر‬ ‫‪cmpcov cmpcovlib cmplog‬‬

‫ﺘﻠﻔ ﺔ‪.‬‬
‫اﻟﺸﻜﻞ ‪6.3:‬ﺳﺮﻋ ﺔﺗﺸﻮﻳ ﺶ ‪USB‬ﻷوﺿﺎع ‪AFL ++‬اﻟﻤﺨ‬

‫ﺘﻐﻄﻴ ﺔ‬
‫‪6.6‬اﻟ‬
‫ﺘﻐﻄﻴ ﺔ ‪ ،‬ﺣﻴ ﺚ أن‬
‫ﺑﺎﻟ‬‫ﺘﺸﻮﻳ ﺶ اﻟﻤﻮﺟﻪ‬
‫ﺘﺄﻛﻴﺪ إﱃ ﻣﺪى ﺟﻮدة أداء اﻟ‬
‫ﺑﺎﻟ‬‫ﺘﺸﻮﻳ ﺶ ‪ ،‬إﻻ أﻧﻬﺎﺗﺸﻴﺮ‬
‫ﺑﺎﻟﻀﺮورة إﱃ ﻣﺪى ﺟﻮدة أداء اﻟ‬‫ﺘﻐﻄﻴ ﺔﻳﺠ ﺐ أﻻﺗﺸﻴﺮ‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن اﻟ‬
‫ﺑﻴﻦ ﺣﺎﻻ ت اﻟﻐﻤﻮض‬‫ﺘﻬﺎ‬
‫ﺘﺸﻮﻳ ﺶ وﻣﻘﺎرﻧ‬
‫ﺘ ﻲﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ ﻣﻊ اﻟ‬
‫ﺘﻐﻄﻴ ﺔ اﻟ‬
‫ﺘﺠﺎوز اﻟ‬
‫ﺘﻐﻄﻴ ﺔ‪.‬ﺗﺤﻘﻴﻘﺎ ﻟﻬﺬه اﻟﻐﺎﻳ ﺔ ‪،‬ﺳﻮف ﻧ‬
‫ﺒﺮ ﻗﺪر ﻣﻤﻜﻦ ﻣﻦ اﻟ‬
‫اﻟﻔﻜﺮة ﻫ ﻲﺗﺤﻘﻴﻖ أﻛ‬
‫ﺘﻠﻔ ﺔ‪.‬‬
‫اﻟﻤﺨ‬

‫ﺑﻬﺎ ﻣﺮة واﺣﺪة‬


‫ﺘ ﻲﺗﻢ ﺿﺮ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻤﺤﻘﻘ ﺔ‪ .‬ﻻﻳﻤﻜﻦ ﻟﻠﻤﺮء أنﻳﻨﻈﺮ ﻓﻘﻂ إﱃ ﻋﺪد اﻟ‬
‫ﺘﻘﻴﻴﻤﻨﺎ ﻟﻠ‬
‫ﺑ‬‫ﺋﻴ ﺴﻴ ﺔ ذا ت اﻟﺼﻠ ﺔ‬ ‫أوﻻ ً ‪،‬ﻳ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﻘﺪﻳﻢ اﻟﻤﻘﺎﻳﻴ ﺲ اﻟﺮ‬
‫ﺒ ﺔ ﻣﺌﻮﻳ ﺔ‬
‫ﺑﻪ ﻧ ﺴ‬‫ﺒﺮﻧﺎ‬
‫ﺜﺎﻟﻴ ﺔ ‪ ،‬ﻧﺮﻏ ﺐ ﻓ ﻲ اﻟﻮﺻﻮل إﱃﺗﻐﻄﻴ ﺔ ﻛﺎﻣﻠ ﺔ ﻟﻠﻤ ﺴﺎر ‪ ،‬و ﻫﻮ أﻣﺮ ﻻﺗﺨ‬
‫ﺘﻌﻠﻴﻤﺎ ت ﻛﻤﺆﺷﺮ وﺣﻴﺪ ﻟﻠﻨﺠﺎح‪ .‬ﻣﻦ اﻟﻨﺎﺣﻴ ﺔ اﻟﻤ‬
‫ﺑﻞ اﻟﻌﺪد اﻹﺟﻤﺎﻟ ﻲ ﻟﻠ‬
‫ﻋﲆ اﻷﻗﻞ ﻣﻘﺎ‬
‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ﻧﻨﻈﺮ أ ً‬
‫ﻳﻀﺎ إﱃ اﻟﻤﻘﺎﻳﻴ ﺲ‬ ‫ﺘﻌﻠﻴﻤﺎ ت‪ .‬ﻧﻈ ﺮًاﻷﻧﻪ ﻣﻦ اﻟﺼﻌ ﺐ ﻗﻴﺎس ذﻟﻚ ‪-‬ﻳﻤﻜﻦ أنﻳﻜﻮن ﻫﻨﺎك اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤ ﺴﺎرا ت اﻟﻼﻧﻬﺎﺋﻴ ﺔ ذا ت اﻟﺤﻠﻘﺎ ت ‪-‬ﻓﺈﻧﻨﺎ‬
‫ﻣﻦ اﻟ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ‬
‫ﺒﺎﺷﺮ ‪ ،‬إﻻ أﻧﻪﻳﻤﻜﻦ أنﻳ ﺴﺎﻋﺪﻧﺎ ﻓ ﻲ ﻓﻬﻢ اﻟﻜ‬
‫ﺑﺸﻜﻞ ﻣ‬ ‫ﺒﺮﻧﺎ ﻫﺬا أ ً‬
‫ﻳﻀﺎ اﻟﻘﻠﻴﻞ ﻋﻦﺗﻐﻄﻴ ﺔ اﻟﻤ ﺴﺎر‬ ‫ﺑﻴﻨﻤﺎﻳﺨ‬
‫اﻹﺿﺎﻓﻴ ﺔ اﻟﻤﻘﺪﻣ ﺔ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪5.9.‬‬
‫ﺛﻢﻳﻌﻄﻴﻨﺎ ﻓﻜﺮة ﻋﻦﺗﻐﻄﻴ ﺔ اﻟﻤ ﺴﺎر‪.‬‬‫ﺑﻮاﺳﻄ ﺔ اﻟﻤﺼﻬﺮ وﻣﻦ‬‫ﺘﺸﺎﻓﻬﺎ‬
‫ﺘ ﻲﺗﻢ اﻛ‬
‫اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤ ﺴﺎرا ت اﻟ‬

‫ﺘﻌﻘﻴﺪ اﻟ ﺴﻴﻜﻠﻮﻣ ﻲ ‪(CC) -‬ﻣﻦ ‪[19] -‬ﻟﺠﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ‪.‬‬


‫ﺑﺎﻟ‬‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻧﺤ ﺴ ﺐ ﻣﺎﻳ ﺴﻤﻰ‬
‫ﺜﻞ اﻟﺠﺪول اﻟﻤﻮﺿﺢ ﻓ ﻲ اﻟﺠﺪول‬
‫ﺘﺤﻜﻢ ﻟﻮﻇﻴﻔ ﺔ ﻣﺎ‪ .‬ﺟﺪولﺗﻐﻄﻴ ﺔ اﻟﻮﻇﻴﻔ ﺔ ‪-‬ﻣ‬
‫ﺘﺪﻓﻖ اﻟ‬
‫ﺒﻴﺎﻧ ﻲ ﻟ‬
‫ﺘﻤﻠ ﺔ ﻓ ﻲ اﻟﺮﺳﻢ اﻟ‬
‫اﻟﻔﻜﺮة اﻷﺳﺎﺳﻴ ﺔ ﻫ ﻲ ﺣ ﺴﺎ ب ﻋﺪد اﻟﻤ ﺴﺎرا ت اﻷﺳﺎﺳﻴ ﺔ اﻟﻤﺤ‬
‫ﺑﻬﺎ ﻣﻦ اﻹﺟﻤﺎﻟ ﻲ )‪(Instr Hit‬وﺣﺠﻢ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘ ﻲﺗﻢ ﺿﺮ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻬﺎ ﻣﻦ اﻹﺟﻤﺎﻟ ﻲ ‪(BB Hit) ،‬وﻋﺪد اﻟ‬
‫ﺘ ﻲﺗﻢ ﺿﺮ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ اﻟ‬ ‫ﺘﻮي أ ً‬
‫ﻳﻀﺎ ﻋﲆ ﻋﺪد اﻟﻜ‬ ‫‪6.2 -‬ﺳﻴﺤ‬
‫ﺑﻴﻦ اﻟﺠﺪاول‬ ‫ﺘﻢﺗﻠﻮﻳﻦ ﻣﻌﻈﻢ اﻷﺷﻜﺎل واﻟﺠﺪاول وﻓ ًﻘﺎ ﻟﻸﺳﻄﻮرة اﻟﻤﻮﺿﺤ ﺔ ﻓ ﻲ اﻟﺠﺪول ‪6.1.‬ﻣﻌﻨﻰ ﻓﺮق اﻟﻨ ﺴ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ‬ ‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﺳﻴ‬‫ﺒﺎﻳ ﺖ )اﻟﺤﺠﻢ(‪.‬‬
‫ﺑﺎﻟ‬
‫ﺘﻞ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻟﺠﻤﻴﻊ اﻟﻜ‬
‫ﺘﻞ إدﺧﺎل اﻟﻮﻇﻴﻔ ﺔ واﻟﻨ ﺴ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻟﻜ‬
‫ﺘﺨﺪم اﻷرﻗﺎم اﻟﻨ ﺴ‬
‫ﺑﻴﻨﻤﺎﺗ ﺴ‬‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ ‪،‬‬
‫ﺘ ﻲﻳ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻟﻠ‬
‫ﺘﺨﺪم اﻟﺠﺪاول اﻟﻨ ﺴ‬
‫واﻷﺷﻜﺎل ‪،‬ﺗ ﺴ‬
‫ﺗﻢﺗﺠﺎ ﻫﻠﻬﺎ" ‪ ،‬إذا ﻛﺎنﻳﺠ ﺐﺗﺠﺎ ﻫﻠﻬﺎ ﻋﻨﺪ ﻋﺮض ‪CFG.‬وﻳﺮﺟﻊ ذﻟﻚ إﱃ ﺣﻘﻴﻘ ﺔ‬
‫ﺘﻠ ﺔ اﻷﺳﺎﺳﻴ ﺔ "‬
‫ُﻘﺎل إن اﻟﻜ‬
‫ﺘﺠﺎ ﻫﻠ ﺔ"‪.‬ﻳ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ "اﻟﻤ‬
‫ﺘﻢﺗﻌﻴﻴﻦ ﻟﻮن ﺧﺎص ﻟﻠﻜ‬
‫اﻷﺧﺮى‪.‬ﻳ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻣﺪى ﺟﻮدة ﻋﻤﻞ اﻟﻤﺼﻬﺮ‪.‬‬
‫ﺘﺼﺤﻴﺢ أوﺗﻘﻴﻴﺪ اﻹدﺧﺎل ‪-‬‬
‫ﺒ ﺐ اﻟ‬
‫ﺑﺴ‬‫ﺑﺪًا ‪-‬إﻣﺎ‬
‫ﺘﻢ اﻟﻮﺻﻮل إﻟﻴﻪ أ‬
‫أﻧﻪ ﻓ ﻲ ﻣ ﺴﺎر رﻣﺰ ﻟﻦﻳ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻐﻄﻴ ﺔ‬
‫‪6.6.‬‬ ‫‪41‬‬

‫وﺻﻒﻣﺌﻮﻳ ﺔ‬
‫ﺒﺔ‬
‫ﻧﺴ‬ ‫ﻟﻮن‬

‫‪0.0٪‬ﻟﻢﻳﻨﻔﺬ ﻗﻂ‬

‫‪100.0٪) 100.0٪‬‬
‫‪60.0٪) [60.0٪ ،‬‬
‫ﻣﻐﻄﻰ‬
‫‪25.0٪) [25.0٪ ،‬‬
‫‪10.0٪) [10.0٪ ،‬‬
‫‪2.0٪) [2.0٪ ،‬‬
‫‪0.5٪) [0.5٪ ،‬‬
‫‪(0.0٪ ،‬‬

‫ﺘﺠﺎ ﻫﻞ‬
‫ﺗﻢ اﻟ‬ ‫ﺘﺎح‬
‫ﻏﻴﺮ ﻣ‬

‫ﺘﻐﻄﻴ ﺔ‪.‬‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ ﻓ ﻲ ‪CFGs‬ﻣﻊ ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫اﻟﺠﺪول ‪6.1:‬ﻟﻮن اﻟﻜ‬

‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺘﻀﻤﻦ ﻫﺬا اﻟﻌﺪﻳﺪ ﻣﻦ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت ﻣﺮة واﺣﺪة ﻋﲆ اﻷﻗﻞ‪.‬ﻳ‬
‫ﺜﺮ ﻣﻦ ‪30٪‬ﻣﻦ اﻟ‬
‫ﺗﻢﺗﻨﻔﻴﺬ أﻛ‬
‫ﺑﻴﻦ ﻛﻞ ﻣﻦ ‪IMG4‬و ‪USB fuzzing -‬‬
‫ﻓ ﻲ اﻟﻤﺠﻤﻮع ‪-‬‬
‫ﺘﺤﻠﻴﻞ‬
‫ﺑ‬‫ﺑﻤﻔﺮد ﻫﺎ‪ .‬ﻟﺬﻟﻚ ‪،‬ﺳﻨﻘﻮم‬‫ﺒ ﺔ اﻟﻤﺌﻮﻳ ﺔ ﻟﻴ ﺴ ﺖ ﻣﻔﻴﺪة‬
‫ﺘﺎﻟ ﻲ ﻓﺈن ﻫﺬه اﻟﻨ ﺴ‬
‫ﺑﺎﻟ‬
‫ﺜﺎل رﻣﺰ ‪MMU -‬و‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺗﻤﺎﻣﺎ ‪-‬ﻋﲆﺳ‬
‫ً‬ ‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘ ﻲ ﻛﺎﻧ ﺖ ﻓ ﻲ أﺟﺰاء ﻏﻴﺮ ﻣﺮ‬
‫اﻟ‬
‫ﺘﺸﻮﻳ ﺶ ‪ ،‬اﻧﻈﺮ اﻟﻤﻠﺤﻖ د‪.‬‬
‫ﺛﻨﺎء اﻟ‬
‫ﺘ ﻲﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ أ‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻜﺎﻣﻠ ﺔ اﻟ‬
‫ﺘﻔﺼﻴﻞ ﻓﻴﻤﺎﻳﻠ ﻲ‪ .‬ﻟﻠﺤﺼﻮل ﻋﲆ ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺑﻤﺰﻳﺪ ﻣﻦ اﻟ‬‫ﺘﻐﻄﻴ ﺔ‬
‫اﻟ‬

‫ﺒﺎ ب ‪IMG4‬‬
‫‪ 6.6.1‬ﺿ‬
‫ﺘ ﻲﺗﻢ اﻟﺤﺼﻮل‬
‫ﺘﻐﻄﻴ ﺔ اﻟ‬
‫ﺘﻀﻤﻨ ﺔ ﻓ ﻲﺗﺤﻠﻴﻞ ‪IMG4‬واﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ اﻟﻤ‬
‫ﺛﻨﺎءﺗﺸﻮﻳ ﺶ ‪IMG4.‬ﻳﻮﺿﺢ اﻟﺠﺪول ‪6.2‬اﻟﻮﻇﺎﺋﻒ اﻟﺮ‬
‫ﺘ ﻲﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ أ‬ ‫ﻧﺮﻛﺰ أوﻻ ً ﻋﲆ اﻟ‬
‫ﺘﻐﻄﻴ ﺔ اﻟ‬
‫ﺘﻐﻄﻴ ﺔ واﻟﻨ ﺴﺨ ﺔ اﻟﻌﺎدﻳ ﺔ ﻟﻬﺎﺗﻐﻄﻴ ﺔ أﻋﲆ ﻗﻠﻴ ﻼ ً ﻓ ﻲ‬
‫ﺑ ﺴﻴﻂ ﻓ ﻲ اﻟ‬‫ﺘﻼف‬
‫ﺘﻀﺢ ‪ ،‬ﻫﻨﺎك اﺧ‬
‫ﺑﻴﻦ اﻟﻐﻤﻮض اﻟﻌﺎدي و ‪OOB -‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻘ ﺴﻢ ‪5.5.1.‬ﻛﻤﺎﻳ‬‫ﻋﻠﻴﻬﺎ‬
‫ﺘﻤﻞ ﻫﻮ أﻧﻪ ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن اﻟﻤﺪﺧﻼ ت‬
‫ﺘﻔ ﺴﻴﺮ اﻟﻤﺤ‬
‫ﺧﺼﻴﺼﺎ ﻟﻠﺤﺼﻮل ﻋﲆﺗﻐﻄﻴ ﺔ أﻓﻀﻞ‪ .‬اﻟ‬
‫ً‬ ‫ﺘﻮﻗﻊ ‪،‬ﻷﻧﻨﺎ ﺻﻤﻤﻨﺎ ﻧ ﺴﺨ ﺔ ‪OOB‬‬
‫ﺒﺪاﻳ ﺔ ‪ ،‬ﻛﺎن ﻫﺬا ﻏﻴﺮ ﻣ‬
‫اﻟﻮاﻗﻊ‪ .‬ﻓ ﻲ اﻟ‬
‫ﺘﻢ رﻓﻀﻬﺎ ﻋﲆ اﻟﻔﻮر‪.‬‬
‫ﺘﺎﻟ ﻲﻳ‬
‫ﺑﺎﻟ‬
‫ﺘﺎز اﻵن ﻓﺤﺺ اﻟﺤﺪود ‪ ،‬ﻓﺈن أﺟﺰاء ﻣﻦ اﻹدﺧﺎل ﻣﻔﻘﻮدة اﻵن و‬
‫ﺘﺠ‬‫ﺑ ًﻘﺎﺳ‬
‫اﻟﻤﺮﻓﻮﺿ ﺔﺳﺎ‬

‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫ﺗﺼﺎل ‪6'274‬‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ ﺧﺎﺻﻴ ﺔ رد اﻻ‬ ‫‪image4‬‬
‫ﺗﺤﻤﻴﻞ ‪image4‬اﻟ‬‫‪18'956‬‬ ‫‪ 59/154264/581 2368‬ب ‪94‬‬
‫‪interposer 463 31'623‬‬ ‫‪33/72 172/323 1468 B 43 16/18 77/85‬‬
‫ﺋﻴ ﺔ‬
‫‪image4‬اﻟﺤﺼﻮل ﻋﲆ ﺟﺰ‬ ‫‪ 348‬ب‬

‫‪Img4DecodePerformTrustEvaluatation‬‬ ‫‪ 636‬ب ‪29‬‬


‫‪12 31/35146/158‬‬

‫)أ(ﺗﻐﻄﻴ ﺔ زﻏ ﺐ ‪IMG4‬اﻟﻌﺎدي‪.‬‬
‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫ﺗﺼﺎل ‪75'144‬‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ ﺧﺎﺻﻴ ﺔ رد اﻻ‬
‫ﺗﺤﻤﻴﻞ ﺻﻮرة ‪4‬اﻟ‬
‫‪image4‬‬ ‫‪44'985‬‬
‫‪ 58/154263/581 2368‬ب ‪94‬‬
‫‪interposer 1'067‬‬ ‫‪33/72 172/323 1468 B 43 16/18 77/85‬‬
‫ﺋﻴ ﺔ‬
‫‪image4‬اﻟﺤﺼﻮل ﻋﲆ ﺟﺰ‬ ‫‪ 348‬ب‬

‫‪Img4DecodePerformTrustEvaluatation‬‬ ‫‪14'724‬‬ ‫‪ 636‬ب ‪29‬‬


‫‪12 31/35146/158‬‬

‫) ب(ﺗﻐﻄﻴ ﺔﺗﺸﻮﻳ ﺶ ‪OOB IMG4.‬‬

‫ﺗﻐﻄﻴ ﺔ وﻇﺎﺋﻒ ‪IMG4.‬‬


‫اﻟﺠﺪول ‪6.2:‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻐﻄﻴ ﺔ‬
‫‪6.6.‬‬ ‫‪42‬‬

‫ﺋﻴ ﺔ‬
‫ﺗﺤﺼﻞ ﻋﲆ ﺟﺰ‬
‫ﺘﺸﻮﻳ ﺶ اﻟﻌﺎدي ﻣﻦ اﻵن ﻓﺼﺎﻋﺪًا‪ .‬ﻓ ﻲ ﺣﻴﻦ أن اﻟﺼﻮرة ‪4‬‬
‫ﺘﻐﻄﻴ ﺔ ﻟﻠ‬
‫ﺘﻐﻄﻴ ﺔ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻨﻈﺮ ﻓﻘﻂ إﱃ اﻟ‬
‫ﺒﻴﺮة ﻟﻠ‬
‫ﻧﻈ ﺮًاﻷن ‪OOB‬ﻟﻴ ﺲ ﻟﻪ ﻓﺎﺋﺪة ﻛ‬
‫ﺘﻌﺰﻳﺰ ﻓﻬﻤﻨﺎ ﻟﻠﻮﻇﺎﺋﻒ اﻷﺧﺮى ‪ ،‬ﻧﻠﻘ ﻲ‬
‫ﺘﻴﻦ اﻷﺧﺮﻳﻴﻦ‪ .‬ﻟ‬
‫ﺒ ﺔ ﻟﻠﻮﻇﻴﻔ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺗﻘﻴﻴﻢ ‪Img4DecodePerformTrustEvaluation‬ﻣﻐﻄﻰ ﺟﻴﺪًا ‪ ،‬ﻻﻳﻤﻜﻦ ﻗﻮل اﻟﺸ ﻲء ﻧﻔ ﺴﻪ‬
‫و‬
‫ﺑﻬﻢ ‪ ،‬اﻟﻮاردة ﻓ ﻲ اﻟﺸﻜﻞ ‪6.5‬واﻟﺸﻜﻞ ‪6.4.‬‬‫ﻧﻈﺮة ﻋﲆ ‪CFGs‬اﻟﺨﺎﺻ ﺔ‬

‫‪0.20٪‬‬

‫‪100.00٪‬‬

‫‪9.28٪‬‬
‫‪25.77٪‬‬

‫‪9.28٪‬‬

‫‪9.28٪ 9.28٪‬‬ ‫‪9.28٪‬‬ ‫‪9.28٪‬‬ ‫‪9.28٪‬‬ ‫‪9.28٪‬‬ ‫‪9.28٪‬‬ ‫‪9.28٪‬‬

‫‪9.28٪‬‬
‫‪1.03٪‬‬
‫‪8.25٪‬‬ ‫‪8.25٪‬‬

‫‪100.00٪‬‬
‫‪100.00٪‬‬

‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ ‪image4 .‬‬


‫ﺘﻮﺳﻂ رد ﻧﺪاء ﺧﺎﺻﻴ ﺔ اﻟ‬
‫اﻟﺸﻜﻞ ‪6.4: CFG‬ﻣﺸﺮوح ﻟﻤ‬

‫ﺘﻬﺎ‪.‬‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ‬
‫ﺘﺤﻠﻴﻞ اﻟﺼﻮر واﻟ‬
‫ﺘﺪﻋﺎؤ ﻫﺎ ﻣﻦ ‪fuzzer‬ﻟ‬
‫ﺘﻢ اﺳ‬
‫ﺘ ﻲﻳ‬
‫ﺋﻴ ﺴﻴ ﺔ اﻟ‬
‫‪ image4 load‬ﻫ ﻲ اﻟﻮﻇﻴﻔ ﺔ اﻟﺮ‬
‫ﺒﻴﺌ ﺔ‪ .‬ﻟﺬﻟﻚ ‪،‬ﻳﻤﻜﻨﻨﺎ أن ﻧﺮى أن ‪0.2٪‬ﻓﻘﻂ ﻣﻦ اﻟﻤﺪﺧﻼ ت‬
‫ﺑﻘ ﺔ اﻟﺨﺼﺎﺋﺺ ﻣﻊ اﻟ‬
‫ﺘﻮﻗﻴﻊ وﻣﻄﺎ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ اﻟ‬
‫‪Img4DecodePerformTrustEvaluation‬ﻳﻨﻔﺬ اﻟ‬
‫ﻟﻬﺎﺗﻮﻗﻴﻊ ﻧﺎﺟﺢ‪.‬‬
‫ﺑﻘﺎﺋﻪ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ وإ‬‫ﺘﺤﻴﻞ ﺟﺪًاﺗﻌﺪﻳﻞ أي ﺷ ﻲء ﻓ ﻲ إدﺧﺎل ﻣﻮﻗﻊ‬
‫ﺑﺸﻜﻞ ﻻﻳﺼﺪق‪ .‬ﻓ ﻲ اﻟﻮاﻗﻊ ‪ ،‬ﻣﻦ اﻟﻤ ﺴ‬ ‫ﻫﺬا ﻟﻴ ﺲ ﻣﻔﺎﺟ ًﺌﺎ ‪،‬ﻷن إﻧﺸﺎءﺗﻮﻗﻴﻊ ﻣﺰﻳﻒ أﻣﺮ ﻏﻴﺮ ﻣﺤ‬
‫ﺘﻤﻞ‬
‫ﺘﻮﻗﻴﻊ ‪ ،‬ﻓﺈن‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟ‬
‫ﺑﻌﺪ اﻟ‬‫ﺜﻴﺮ ﻣﻦ اﻟﻤﻌﺎﻟﺠ ﺔ‬
‫ﺑ ﺖ ﻫﺬا‪ .‬ﻧﻈ ًﺮا ﻟﻌﺪم وﺟﻮد اﻟﻜ‬
‫ﺜﺎ‬
‫ﺘﻌﺪﻳﻞ وﻳﺆﻛﺪﺗﺤﻠﻴﻠﻨﺎ اﻟ‬ ‫ﺒﻮﻻً‪ .‬ﻋﲆ اﻷﻗﻞ ﻟﻢﻳﻜﻦ ﻏﻤﻮﺿﻨﺎ ﻗﺎد ًرا ﻋﲆ إﺟﺮاء ﻣ‬
‫ﺜﻞ ﻫﺬا اﻟ‬ ‫ﻣﻘ‬
‫ﺘ ﻲﺗﺼﻞ إﱃ‬
‫ﺘﻤﺎم ‪-‬اﻟ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺑﺎﻟﻀﺮورة ﻣﺆﺷ ﺮًا ﻋﲆ أن اﻟﻐﻤﻮض ﻟﻢﻳﻜﻦ ﻧﺎﺟﺤًﺎ ﻫﻨﺎ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻻﻳﺰال ﻣﻦ اﻟﻤﺪ ﻫ ﺶ أن ‪8.8٪ 6‬ﻓﻘﻂ ﻣﻦ اﻟﻤﺪﺧﻼ ت اﻟﻤ‬‫ﻫﺬا ﻟﻴ ﺲ‬
‫ﺘﻮﻗﻴﻊ ‪-‬ﻟﻴ ﺴ ﺖ ﻣﻦ ﻣﺠﻤﻮﻋ ﺔ اﻟﻤﺪﺧﻼ ت اﻷوﻟﻴ ﺔ‪ .‬ﻫﺬاﻳﺆﻛﺪ ﺷﻜﻮﻛﻨﺎ ﻓ ﻲ أن ‪ASN.1‬و ‪IMG4‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪ ،‬ﻫﻮﺗﻨ ﺴﻴﻖ ﺻﻌ ﺐ ﻟﻤﺼﻬﺮ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ اﻟ‬
‫اﻟ‬
‫ﺘﺤﻮر دون إﻧﺸﺎء ﻣﺪﺧﻼ ت ﻏﻴﺮ ﺻﺤﻴﺤ ﺔ‪.‬‬
‫ﻟﻠ‬

‫ﺗﺼﺎل ‪ ،‬و ﻫﻮ أﻣﺮ ﻣﻬﻢ‬


‫ﺗﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ ﺧﺎﺻﻴ ﺔ رد اﻻ‬
‫ﺑﺎﻟﻔﻌﻞ إﱃ ‪image4-‬‬‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻓ ﻲ اﻟﺸﻜﻞ ‪6.4‬ﻳﻤﻜﻨﻨﺎ أن ﻧﺮى أن أﻗﻞ ﻣﻦ ‪0.3٪‬ﻣﻦ اﻟﻤﺪﺧﻼ تﺗﺼﻞ‬
‫ﺑﻌﺾ‬‫ﺜﺎﻟﻴ ﺔﻷي أﺧﻄﺎء ﻣﻨﻄﻘﻴ ﺔ ‪-‬ﻓ ﻲ ﺣﺎﻟ ﺔ وﺟﻮد ﻫﺎ‪ .‬ﻧﻈ ًﺮاﻷن‬
‫ﺘﺎﻟ ﻲﻳﻤﻜﻦ أنﺗﻜﻮن ﻣ‬
‫ﺑﺎﻟ‬
‫ﺒﻴﺌ ﺔ ‪ ،‬و‬
‫ﺑﻘ ﺔ اﻟﺨﺼﺎﺋﺺ اﻟﻮاﺿﺤ ﺔ ﻣﻊ اﻟ‬
‫ﺘﺄﻛﻴﺪ‪ .‬ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻣ ﺴﺆوﻟ ﺔ ﻋﻦ ﻣﻄﺎ‬
‫ﺑﺎﻟ‬
‫ﺜﻐﺮا ت اﻷﻣﻨﻴ ﺔ‪ .‬ﻣﻦ اﻟﻤﻨﻄﻘ ﻲ أنﻳﺼﻞ ﻋﺪد ﻗﻠﻴﻞ‬
‫ﺘﻰ ﻋﲆ أﻧﻮاع أﺧﺮى ﻣﻦ اﻟ‬
‫ﺘﻮي ﺣ‬
‫ﺜﺎل اﻟﻤﻠﺨﺺ ‪-‬ﻓﻘﺪﺗﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﺎﻳ ﺖ ‪-‬ﻋﲆﺳ‬
‫ﺑﻨ ﺴﺦ اﻟ‬ ‫ﺘﺤﻘﻖﺗﻘﻮم أ ً‬
‫ﻳﻀﺎ‬ ‫ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺒ ًﻘﺎ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬وﻛﻤﺎﻳ‬
‫ﺘﻀﺢ ﻣﻦ اﻟﺸﻜﻞ ‪6.4 ،‬ﻓﺈن ﻣﻌﻈﻢ‬ ‫ﺘﻢ رﻓﻀﻪ ﻣ ﺴ‬
‫ﺘﻰ ﻻﻳ‬
‫ﺑﻖ ﻣﻊ اﻟﻤﻮاﺻﻔﺎ ت ﺣ‬
‫ﺘﻄﺎ‬
‫ﺒﺎﻳﺠ ﺐ أنﻳ‬
‫ﺟﺪًا ﻣﻦ اﻟﻤﺪﺧﻼ ت ﻫﻨﺎ ‪،‬ﻷن ﻛﻞ ﺷ ﻲءﺗﻘﺮﻳ ً‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ ﻫﻨﺎ ﻻﻳ‬ ‫ﺒ ﺐ ﺣﻘﻴﻘ ﺔ أن ﻫﺬه اﻟﻮﻇﻴﻔ ﺔﺗ ﺴﻤﻰ ﻟﻜﻞ ﺧﺎﺻﻴ ﺔ‪.‬ﻳﻤﻜﻦ أ ً‬
‫ﻳﻀﺎ ﻣﻼﺣﻈ ﺔ أن ﻣﻌﻈﻢ اﻟﻜ‬ ‫ﺑﺴ‬‫ﺑﻤﺎﻳﻜﻮن ﻫﺬا‬
‫ﺘ ﺴﺎوي‪ .‬ر‬
‫ﺑﺎﻟ‬‫اﻟﻤ ﺴﻴﺮا ت ﻣﻐﻄﺎة‬
‫ﺜﻴ ﺮًا‪.‬‬
‫ﺘﻐﻄﻴ ﺔ ﻓ ﻲ ﺣﺎﻟ ﺔ ‪IMG4‬ﻛ‬
‫ﺘﺎﻟ ﻲ ‪ ،‬ﻻﻳﺰال ﻣﻦ اﻟﻤﻤﻜﻦﺗﺤ ﺴﻴﻦ اﻟ‬
‫ﺑﺎﻟ‬
‫ﺑﺪًا‪ .‬و‬
‫أ‬

‫ﺑﺮاﻣﺞ ‪IDA‬اﻟﻨﺼﻴ ﺔ‪.‬‬‫ﺑﻌﺾ‬‫ﺗﻢ ﺣ ﺴﺎ ب ذﻟﻚ ﻣﻦ ﺧﻼل‬


‫‪6‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻐﻄﻴ ﺔ‬
‫‪6.6.‬‬ ‫‪43‬‬

‫ﺒﺎ ب ‪USB‬‬
‫‪ 6.6.2‬ﺿ‬
‫ﺘﻀﻤﻨ ﺔ ﻓ ﻲ ﻣﻌﺎﻟﺠ ﺔ ‪USB‬ﻓ ﻲ ‪SecureROM.‬‬
‫ﺘﻐﻄﻴ ﺔﻷ ﻫﻢ اﻟﻮﻇﺎﺋﻒ اﻟﻤ‬
‫ﺛﻨﺎءﺗﺸﻮﻳ ﺶ ‪USB.‬ﻳﻮﺿﺢ اﻟﺠﺪول ‪6.3‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘ ﻲﺗﻢﺗﺤﻘﻴﻘﻬﺎ أ‬
‫ﺘﻐﻄﻴ ﺔ اﻟ‬
‫ﺑﻌﺪ ذﻟﻚ ﻧﺮﻛﺰ ﻋﲆ اﻟ‬
‫ﺘﻐﻄﻴ ﺔ ﺣ ًﻘﺎ ‪،‬‬
‫ﺘﻘﻴﻴﻢ اﻟ‬
‫ﺘ ﻲﺗﻢﺗﺤﻘﻴﻘﻬﺎ ﻫﻨﺎ أﻓﻀﻞ ﻣﻤﺎ ﻛﺎﻧ ﺖ ﻋﻠﻴﻪ ﻓ ﻲ ﺣﺎﻟ ﺔ ‪IMG4.‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻟ‬
‫ﺘﻐﻄﻴ ﺔ اﻟ‬
‫ﺒﺪو أن اﻟ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ ﻟﺠﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ ‪،‬ﻳ‬
‫ﻣﻊﺗﻐﻄﻴ ﺔ ﻣﻌﻈﻢ اﻟﻜ‬
‫ﺘﻢ ﻋﺮض‬
‫ﺒﺾ ‪USB‬اﻷﺳﺎﺳ ﻲ‪.‬ﻳ‬
‫ﺑﻤﻘ‬
‫ﺗﻠﻘ ﻲﺗﺤﻜﻢ ‪USB‬‬
‫ﺒﺎ ت ‪USB ،‬و‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻃﻠ‬
‫ﺘ ﻲﺗ‬
‫ﺋﻴ ﺴﻴ ﺔ اﻟ‬
‫ﺑﻬﻢ‪ .‬ﻫﻨﺎ ‪ ،‬ﻧﺮﻛﺰ ﻋﲆ اﻟﻮﻇﻴﻔ ﺔ اﻟﺮ‬ ‫ﻋﻠﻴﻨﺎ أ ً‬
‫ﻳﻀﺎ أن ﻧﻨﻈﺮ إﱃ ‪CFGs‬اﻟﺨﺎﺻ ﺔ‬
‫‪CFG‬اﻟﻤﺸﺮوح ﻓ ﻲ اﻟﺸﻜﻞ ‪6.6.‬‬

‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫ﺒﺎل ‪usb‬اﻷﺳﺎﺳﻴ ﺔﺗﺤﻜﻢ ‪usb‬‬


‫ﺘﻘ‬‫اﺳ‬ ‫‪9'686‬‬ ‫‪93/98 344/357 1504 B 62 22/25 69/75‬‬
‫ﻣﻌﺎﻟﺞ ﺣﺪ ث ‪USB‬اﻷﺳﺎﺳ ﻲ‬ ‫‪45'178‬‬ ‫‪ 312‬ب ‪13‬‬

‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻃﻠ ﺐ واﺟﻬ ﺔ‬
‫‪USB dfu‬اﻟ‬
‫‪16'334‬‬ ‫‪ 28/28107/107460‬ب ‪12 7/9 42/54‬‬
‫ﺑﻴﺎﻧﺎ ت ‪USB dfu‬‬‫ﺘﻼم‬
‫ﺗﻢ اﺳ‬ ‫‪525'020‬‬ ‫‪ 220‬ب ‪3‬‬

‫ﺗﻐﻄﻴ ﺔ وﻇﺎﺋﻒ ‪USB.‬‬


‫اﻟﺠﺪول ‪6.3:‬‬

‫ﺒﺮ ﺟﻤﻴﻊ‬
‫ﺴﺎو ﻋ‬
‫ٍ‬ ‫ﺘ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺘﻢﺗﻮزﻳﻌﻬﺎ‬
‫ﺘﻐﻄﻴ ﺔﻳ‬
‫ﺜﻴﺮ ﻫﻨﺎ ﻣﻤﺎ ﻛﺎﻧ ﺖ ﻋﻠﻴﻪ ﻓ ﻲ ﺣﺎﻟ ﺔ ‪IMG4.‬وﻣﻊ ذﻟﻚ ‪،‬ﻳﻤﻜﻨﻨﺎ أن ﻧﺮى أن اﻟ‬
‫ﺑﻜ‬‫ﺘﻐﻄﻴ ﺔ أﺳﻮأ‬
‫ﺒﺪو اﻟ‬
‫ﻟﻠﻮ ﻫﻠ ﺔ اﻷوﱃ ‪ ،‬ﻗﺪﺗ‬
‫ﺑﻌﺾ رﺳﺎﺋﻞ ‪USB‬‬‫ﺘﻢ ﻣﻌﺎﻟﺠ ﺔ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﺗ‬‫ﺴﺎو‪.‬‬
‫ٍ‬ ‫ﺘ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺒﺮﻣﺞ ﻗﺎدر ﻋﲆ اﻟﻮﺻﻮل إﱃ ﻣﻌﻈﻢ أﻧﻮاع اﻟﺮﺳﺎﺋﻞ‬
‫ﺒﺪو أن اﻟﻤ‬
‫ﺒﺎرة أﺧﺮى ‪،‬ﻳ‬
‫ﺑﻌ‬‫اﻟﻤ ﺴﺎرا ت اﻟﻤﻤﻜﻨ ﺔ‪.‬‬
‫ﺘﻮاﻓﻖ ﻣﻊ ﻫﺬه‬
‫ﺘ ﻲﺗ‬
‫ﺘﻤﺎم إﱃ اﻟﻤﺼﻬﺮ‪ .‬ﻟﺬﻟﻚ ‪ ،‬ﻓﺈن اﻟﻤ ﺴﺎرا ت ﻓ ﻲ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﺎﻟ ﻲﺗﻮﻓﺮ ﻣ ﺴﺎرا ت إﺿﺎﻓﻴ ﺔ ﻣ‬
‫ﺑﺎﻟ‬
‫ﺒﺮ ﻣﻦ ﺧﻼل وﻇﺎﺋﻒ أﺧﺮى ‪ ،‬و‬
‫ﺑﺸﻜﻞ أﻛ‬
‫ﺑﻬﺎ‬
‫ﺘ ﺴﺎ‬
‫ﺑﺸﻜﻞ ﻣﻠﺤﻮظﻳﻤﻜﻦ اﻛ‬‫ﺘﻘﺪ أﻧﻪ ﻻﺗﻮﺟﺪ رؤى ﺟﺪﻳﺪة‬
‫ﺑﺎﻟﻔﻌﻞ وﻧﻌ‬‫ﺘ ﻲﺗﻢﺗﺤﻘﻴﻘﻬﺎ ﻫﻨﺎ ﺟﻴﺪة ﺟﺪًا‬
‫ﺘﻐﻄﻴ ﺔ اﻟ‬
‫ﺘﻘﺪ أن اﻟ‬
‫ﺑﺸﻜﻞ ﻋﺎم ‪ ،‬ﻧﻌ‬‫اﻟﺮﺳﺎﺋﻞﺳﻴﻜﻮن ﻟﻬﺎﺗﻐﻄﻴ ﺔ أﻋﲆ‪.‬‬
‫ﺘﻐﻄﻴ ﺔ‪.‬‬
‫ﻣﻦ زﻳﺎدةﺗﺤ ﺴﻴﻦ اﻟ‬

‫ﺑﻘ ﺔ‪ .‬ﻫﺬا ﻫﻮ اﻟﺤﺎل ‪ ،‬ﻧﻈ ﺮًاﻷن‬


‫ﺜﻠ ﺔ اﻟ ﺴﺎ‬
‫ﺒ ﺔ ‪100٪‬ﻛﻤﺎ ﻓ ﻲ اﻷﻣ‬
‫ﺑﻨ ﺴ‬‫ﺘﻮي ﻋﲆﺗﻐﻄﻴ ﺔ‬
‫ﺘﻠ ﺔ اﻟﺨﺮوج ﻣﻦ اﻟﻮﻇﻴﻔ ﺔ ﻻﺗﺤ‬
‫ﺘﻪ ‪ ،‬ﻫﻮ أن ﻛ‬
‫ﺘﻤﺎمﻳﺠ ﺐ ﻣﻼﺣﻈ‬
‫ﺜﻴﺮ ﻟﻼ ﻫ‬
‫ﺷ ﻲء آﺧﺮ ﻣ‬
‫ﺑ ﺴﻴﻂ ﻣﻦ اﻟﻮﻗ ﺖ‬‫ﺘﻐﻄﻴ ﺔ ‪،‬ﻳﺤﺪ ث ﻫﺬا ﻓﻘﻂ ﻟﺠﺰء‬
‫ﺘﻢ اﻟﻮﺻﻮل إﱃ اﻹرﺟﺎع‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻛﻤﺎ ﻧﺮى ﻣﻦ اﻟ‬
‫ﺘﺎﻟ ﻲ ﻗﺪ ﻻﻳ‬ ‫ﺑ ًﻘﺎ ‪-‬و‬
‫ﺑﺎﻟ‬ ‫ﺜﻴﺮ اﻟﺬﻋﺮ ‪-‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢﺳﺎ‬
‫ﻣﻌﺎﻟﺠ ﺔ ‪USB‬ﻗﺪﺗ‬
‫ﺘﺮﺿﻨﺎ‪.‬‬
‫ﺘﺎﻟ ﻲ ﻻﻳﻜﺎدﻳﺬﻛﺮ ‪ ،‬ﻛﻤﺎ اﻓ‬
‫ﺑﺎﻟ‬
‫و‬

‫‪98.79٪‬‬

‫‪88.64٪‬‬
‫‪1.72٪‬‬

‫‪1.93٪‬‬

‫‪6.71٪‬‬

‫‪2.42٪‬‬ ‫‪0.42٪‬‬

‫‪0.07٪‬‬ ‫‪2.83٪‬‬
‫‪0.09٪‬‬ ‫‪1.16٪‬‬ ‫‪0.55٪‬‬ ‫‪0.03٪‬‬ ‫‪0.05٪‬‬
‫‪0.68٪‬‬
‫‪0.03٪‬‬ ‫‪1.16٪‬‬
‫‪0.12٪‬‬
‫‪0.07٪‬‬
‫‪3.88٪‬‬

‫‪9.10٪‬‬
‫‪99.98٪‬‬

‫ﺘﺤﻜﻢ ﻓ ﻲ ‪USB.‬‬
‫ﺒﺾ ‪USB‬اﻷﺳﺎﺳ ﻲ ﻟﻠ‬
‫ﺗﻠﻘ ﻲ ‪CFG‬اﻟﻤﺸﺮوح ﻟﻤﻘ‬
‫اﻟﺸﻜﻞ ‪6.6:‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻐﻄﻴ ﺔ‬
‫‪6.6.‬‬ ‫‪44‬‬

‫ﺒﺔ‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻤﺮﻛ‬
‫‪6.6.3‬اﻟ‬
‫ﺒﺮ ﺟﻤﻴﻊ‬ ‫ﺒ ﺔ ‪31.76٪‬ﻋ‬ ‫ﺑﻨ ﺴ‬‫ﺒﺮ ﻛﻞ ﻣﻦ ‪IMG4‬و ‪USB fuzzing.‬ﻓ ﻲ اﻟﻤﺠﻤﻮع ‪ ،‬وﺻﻠﻨﺎ إﱃﺗﻐﻄﻴ ﺔ‬ ‫ﺘﺮﻛ ﺔ ﻋ‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻤﺸ‬
‫ﺘﺎﺋﺞ اﻟ‬
‫أﺧﻴ ًﺮا ‪ ،‬ﻧﻘﺪم ﻧ‬
‫ﺘﻨﻔﻴﺬ ‪،‬ﻷﻧﻬﺎﺗﺤﺪ ث ﻓ ﻲ أﺟﺰاء ﻏﻴﺮ ذا ت ﺻﻠ ﺔ ‪7‬أو‬‫ﺘ ﻲ ﻟﻴ ﺲ ﻟﻬﺎ ﻓﺮﺻ ﺔ ﻟﻠ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻀﻤﻦ ﻫﺬا اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻤﻮﺟﻮدة داﺧﻞ ‪SecureROM.‬ﻳ‬ ‫اﻟ‬
‫ﺘ ﻲ ﻧ ﺴﻤﻴﻬﺎ‬
‫ﺘ ﻲﻳﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻴﻬﺎ ﻧﻈﺮﻳًﺎ ﻣﻦ اﻟﻄﺮق اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻀﻤﻴﻦ اﻟ‬
‫ﺑ‬‫ﺘ ﻲﺗﻢﺗﺼﺤﻴﺤﻬﺎ ‪8.‬إذا ﻗﻤﻨﺎ ﻓﻘﻂ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻓ ﻲ اﻟ‬
‫ﺘﻲ‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔ ﻓﻘﻂ اﻟ‬
‫ﺘﻐﻄﻴ ﺔ ‪ ،‬ﻣﻦ ﺧﻼلﺗﻀﻤﻴﻦ اﻟﻜ‬
‫ﺘﻐﻄﻴ ﺔﺗﻘﻔﺰ إﱃ ‪46.37٪.‬ﻳﻤﻜﻨﻨﺎ اﻟﺤﺼﻮل ﻋﲆ ﻓﻜﺮة أﻓﻀﻞ ﻋﻦ اﻟ‬
‫‪SecureROM ،‬ﻓﺈن اﻟ‬
‫ﺘﻤﻜﻦ ﻏﻤﻮﺿﻨﺎ إﻻ‬ ‫ﺒﺎ ‪9 ،‬وﻟﻢﻳ‬
‫ﺘ ﻲﺗﺪﻋﻮ إﱃ اﻟﺬﻋﺮﺗﻘﺮﻳ ً‬‫ﺘﻞ اﻟ‬
‫ﺘﻢﺗﺼﺤﻴﺤﻬﺎ‪ .‬ﻻﻳﻤﻜﻦ اﻟﻮﺻﻮل إﱃ ﺟﻤﻴﻊ اﻟﻜ‬ ‫ﺘ ﻲ ﻟﻢﻳ‬‫ﺘﺪﻋﺎء اﻟﺬﻋﺮ أو اﻟ‬
‫ﺑﺎﺳ‬ ‫ﺘﻌﻠﻖ‬ ‫ﻻﺗ‬
‫ً‬ ‫ً‬
‫ﺘﻀﻤﻦ ﻫﺬا رﻣ ﺰا ﻻﻳﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻴﻪ ﻣﻄﻠﻘﺎ ‪،‬‬ ‫ﺑﻬﺬا ﻧﺤﺼﻞ ﻋﲆﺗﻐﻄﻴ ﺔ ‪75.95٪.‬وﻣﻊ ذﻟﻚ ‪،‬ﻳ‬ ‫ﺒﻞ‪.‬‬‫ﺛﺎرة ﺣﺎﻟ ﺔ واﺣﺪة ﻣﺤﺪدة ﻛﻤﺎ ذﻛﺮﻧﺎ ﻣﻦ ﻗ‬
‫ﻣﻦ إ‬
‫ﺘﻌﻠﻴﻤﺎ ت‪.‬‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ وﻏﻄﻰ ﻣﻌﻈﻢ اﻟ‬‫ﺘﺸﻮﻳ ﺶ ﻧﺠﺢ‬
‫ﺒﺎر ‪،‬ﻳﺸﻴﺮ ﻫﺬا إﱃ أن اﻟ‬
‫ﺘ‬‫ﺒ ﺐ ﺣﺎﻟ ﺔ ﻋﺎﻟﻤﻴ ﺔ ﻣﻌﻴﻨ ﺔ‪ .‬ﻣﻊ أﺧﺬ ذﻟﻚ ﻓ ﻲ اﻻﻋ‬
‫ﺑﺴ‬‫ﺜﺎل‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺒﺎ ‪-‬و ‪75.95٪‬‬
‫ﺋﻤﺎ رﻣﺰ ﻻﻳﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻴﻪﺗﻘﺮﻳ ً‬‫ﺒﻴﺮة ‪ ،‬ﻫﻨﺎك دا ً‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻜ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻣﻦ ﻏﻴﺮ اﻟﻮاﻗﻌ ﻲ أنﺗﺼﻞ إﱃ ‪100٪ -‬ﺧﺎﺻ ﺔ ﻓ ﻲ ﻗﻮاﻋﺪ اﻟ‬
‫ﺘﻤﻞ‬‫ﺒﻞ ‪ ،‬وﻟﻜﻦ ﻣﻦ اﻟﻤﺤ‬ ‫ﺘﻘ‬‫ﺜﻞ ‪SecureROM.‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻻﻳﺰال ﻣﻦ اﻟﻤﻤﻜﻦﺗﺤ ﺴﻴﻨﻪ ﻓ ﻲ اﻟﻤ ﺴ‬ ‫ﺒﻴﺮ ﻣ‬‫ﺜﻨﺎﺋ ﻲ اﻟﻜ‬
‫ﺜﻞ ﻫﺬا اﻟﻨﻈﺎم اﻟ‬
‫ﺗﻤﺎﻣﺎ ﻟﻤ‬
‫ً‬ ‫ﻣﻨﺎﺳ ﺐ‬
‫ﺑﺸﻜﻞ أﻓﻀﻞ ﻣﻊ ‪ASN.1.‬‬‫ﺑﺪون ﺟﻌﻞ اﻟﻤﺼﻬﺮﻳﻌﻤﻞ‬‫أﻻﻳﻜﻮن ذﻟﻚ‬

‫ﺘﻪ‪.‬‬
‫ﺒﻖ رؤﻳ‬
‫ﺘﻤﺎم ‪ ،‬إﱃ ﺟﺎﻧ ﺐ ﻣﺎﺳ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺑﻌﺾ اﻟﻮﻇﺎﺋﻒ اﻹﺿﺎﻓﻴ ﺔ اﻟﻤ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﻳﻮﺿﺢ اﻟﺠﺪول ‪6.4‬‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻤﺪﻣﺠ ﺔ ﻫﻨﺎ‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﺠﺪول ‪،‬ﺗﻤ ﺖﺗﻐﻄﻴ ﺔ وﻇﺎﺋﻒ ‪DER‬‬
‫ﺘﻢ اﻟﻨﻈﺮ إﱃ اﻟ‬
‫ﺘﺎﻟ ﻲﻳ‬
‫ﺑﺎﻟ‬
‫ﺘﻢﺗﻐﻄﻴ ﺔ ﻛﻞ ذﻟﻚ ﻓ ﻲ ﻛﻞ ﻣﻦ ‪USB‬و ‪IMG4 ،‬و‬
‫ﻳ‬
‫ﺗﺤﻠﻴﻞ اﻟﺸﻬﺎدة ﺟﻴﺪًا‪.‬‬
‫و‬
‫ﺒﺎ ‪،‬‬
‫ﺘﻞ اﻷﺳﺎﺳﻴ ﺔﺗﻘﺮﻳ ً‬
‫ﺑﻴﻨﻤﺎﺗﻢ ﺿﺮ ب ﺟﻤﻴﻊ اﻟﻜ‬‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ ‪241‬ﻣﺮة ﻓﻘﻂ‪.‬‬
‫ﺘﺤﻠﻴﻞﺗﻌﻘﻴﺪًا ‪-‬ﻳ‬
‫ﺜﺮ وﻇﺎﺋﻒ اﻟ‬
‫وﻣﻊ ذﻟﻚ ‪،‬ﺗﺤﻘﻖ ﻣﻦ ﺧﺼﺎﺋﺺ اﻟﺤﻤﻮﻟ ﺔ ‪-‬و ﻫ ﻲ واﺣﺪة ﻣﻦ أﻛ‬
‫ﺒﺮ ﻣﻦ ﻋﻤﻠﻴﺎ ت اﻹﻋﺪام ﻟﻦﻳﻀﺮ‪.‬‬
‫ﻓﺈن ﻋﺪدًا أﻛ‬

‫وﻇﻴﻔ ﺔ‬ ‫ﻋﻤﻠﻴﺎ ت اﻹﻋﺪام ‪BB Hit Instr Hit Size CC‬‬

‫‪DERDecodeItemPartialBuffer‬‬ ‫‪76/81‬ب ‪16‬‬


‫‪24/26‬‬ ‫‪324‬‬
‫‪DERParseSequenceContent‬‬ ‫‪ 32/35127/133 532‬ب ‪19 14/14 32/32‬‬
‫‪DERParseInteger64‬‬ ‫‪1'923'891409'970225'237‬‬ ‫‪ 128‬ب ‪8‬‬

‫ﺘﺤﻠﻴﻞ‬
‫ﺳﻠ ﺴﻠ ﺔ اﻟ‬ ‫‪30'785241‬‬ ‫‪ 24/25 132/133532‬ب ‪20 22/23 96/97‬‬
‫ﺘﺤﻠﻴﻞﺗﺤﻘﻖ ﻣﻦ‬
‫ﺘﺤﻘﻖ ﻣﻦﺳﻠ ﺴﻠ ﺔ اﻟ‬
‫اﻟ‬ ‫‪15'571‬‬ ‫‪ 388‬ب ‪18‬‬
‫ﺧﺼﺎﺋﺺ اﻟﺤﻤﻮﻟ ﺔ‬ ‫‪ 23/34115/135564‬ب ‪23‬‬

‫ﺗﻐﻄﻴ ﺔ وﻇﺎﺋﻒ ‪USB‬و ‪IMG4.‬‬


‫اﻟﺠﺪول ‪6.4:‬‬

‫ﺑﺪءﺗﺸﻐﻴﻞ أو ‪MMU‬أو ﻧﻈﺎم ﻣﻠﻔﺎ ت أو رﻣﺰ ‪NVME.‬‬‫ﺜﺎل ‪ ،‬أي‬


‫ﺒﻴﻞ اﻟﻤ‬
‫‪7‬ﻋﲆﺳ‬
‫ﺜﺎل ‪ ،‬اﻟﻤ ﺴﺎر اﻟ ﺴﺮﻳﻊ ﻣﻦ ‪bzero.‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫‪8‬ﻋﲆﺳ‬
‫ﺘﺄﻛﺪ ﻣﻦ إرﺟﺎع ‪malloc‬ﻟﻤﺆﺷﺮ‪.‬‬
‫ﺜﻞ اﻟ‬
‫ﺒﺎ ﻣﺎﺗﻜﻮن ﻣﺠﺮد ﻓﺤﻮﺻﺎ تﺳﻼﻣ ﺔ ‪ ،‬ﻣ‬
‫‪9‬ﻏﺎﻟ ً‬
Machine Translated by Google

‫ﺗﻐﻄﻴ ﺔ‬
6.6. 45

100.00٪

100.00٪

100.00٪

100.00٪

100.00٪

66.95٪
66.95٪
66.95٪

Img4DecodeInit ‫ﺘﺪﻋﺎء‬
‫اﺳ‬ 66.95٪

33.34٪

33.34٪

33.47٪
33.34٪
33.20٪

33.18٪ Img4DecodePerformTrustEvaluation ‫ﺘﺪﻋﺎء‬


‫اﺳ‬
0.20٪

0.20٪
0.20٪
0.20٪
0.20٪

33.01٪

0.20٪
0.20٪
0.20٪

‫اﻟﺤﻤﻮﻟ ﺔ‬IMG4 ‫ﻓﻚﺗﺸﻔﻴﺮ‬

0.20٪
0.20٪
IMG4 ‫ﻓﻚ ﺿﻐﻂ ﺣﻤﻮﻟ ﺔ‬

0.20٪

0.20٪

0.20٪

0.20٪

0.20٪
0.20٪

0.20٪
0.20٪
0.20٪

33.01٪ 0.13٪
66.76٪
0.20٪ 99.80٪

0.20٪
100.00٪

100.00٪

image4_load. ‫ﻣﺸﺮوح ﻟـ‬6.5: CFG ‫اﻟﺸﻜﻞ‬


‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪7‬‬

‫ﻣﻨﺎﻗﺸ ﺔ‬

‫ﺒﻠﻴ ﺔ‪.‬‬
‫ﺘﻘ‬‫ﺘﻤﺎﻻ ت اﻟﻤ ﺴ‬
‫ﺑﻌﺾ اﻷﻓﻜﺎر ﻋﻦ اﻻﺣ‬‫ﺘﺎﺋﺞ اﻟﺮاﺋﻌ ﺔ ﻣﻊ ‪emmutaler ،‬ﻻﺗﺰال ﻫﻨﺎك ﻗﻴﻮد ﻋﲆ ذﻟﻚ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪ ،‬ﻧﻨﺎﻗ ﺶ ﺣﺪود ﻫﺎ وﻧﻘﺪم‬
‫ﺑﻌﺾ اﻟﻨ‬‫ﺑﻴﻨﻤﺎ ﺣﻘﻘﻨﺎ‬
‫ﺒﻞ‪.‬‬
‫ﺘﻘ‬‫ﺘﺸﻮﻳ ﺶ ﻓ ﻲ اﻟﻤ ﺴ‬
‫ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪ ،‬ﻧﻨﺎﻗ ﺶ إﻣﻜﺎﻧﻴﺎ تﺗﺤ ﺴﻴﻨﺎ تﺳﺮﻋ ﺔ اﻟ‬

‫‪7.1‬اﻟﻘﻴﻮد‬

‫ﺒﻴ ﺮًا ﻣﻦ‬


‫ﺘﻀﻤﻦ ﻗﺪ ًرا ﻛ‬
‫ﺘﻠﻒ ﻋﻦ اﻟﺬي ﻧﻨﻈﺮ إﻟﻴﻪ ﺣﺎﻟ ًﻴﺎﻳ‬
‫ﺘﻤﻨﻰ‪ .‬إن ﻣﺤﺎوﻟ ﺔﺗﺸﻮﻳ ﺶ ‪SecureROM‬ﻣﺨ‬
‫ﻋﺎﻣﺎ ﻛﻤﺎ ﻛﻨﺎ ﻧ‬
‫ﺒﻴﺮة ﻋﲆ ‪ emmutaler‬ﻫﻮ أﻧﻪ ﻟﻴ ﺲ ً‬
‫أﺣﺪ اﻟﻘﻴﻮد اﻟﻜ‬
‫ﺘﻠﻔ ﺔ ﻫ ﻲ ﻣﻨﺎﻃﻖ اﻹدﺧﺎل واﻹﺧﺮاج ﻟﻠﺼﻤﺎﻣﺎ ت‬
‫ﺘﻌﻠﻴﻖ ﻋﻠﻴﻬﺎ‪ .‬اﻟﻤﺸﻜﻠ ﺔ ﻋﻨﺪﺗﺸﻮﻳ ﺶ إﺻﺪارا ت ‪SecureROM‬اﻟﻤﺨ‬
‫ﺒﺤ ﺚ ﻋﻦ اﻟﺮﻣﻮز اﻟﻤﻬﻤ ﺔ واﻟ‬
‫ﺜﻞ اﻟ‬
‫اﻟﻌﻤﻞ اﻟﻴﺪوي ‪ ،‬ﻣ‬
‫ﺘﻐﻴﺮ اﻟﻄﺮﻳﻘ ﺔ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﺗ‬‫ﺘ ﺴﻘ ﺔ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻓ ﻲ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣ‬‫ﺘﻐﻴﺮ‬ ‫ﺑﻞ إﻧﻬﺎ أ ً‬
‫ﻳﻀﺎ ﻻﺗ‬ ‫ﺘﻜﺮر ﻓﺤ ﺴ ﺐ ‪،‬‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺘﻐﻴﻴﺮا ت‬
‫ﺘﻢﺗﻐﻴﻴﺮ ﻫﺬه اﻟ‬
‫واﻷﺟﻬﺰة وأﺷﻴﺎء أﺧﺮى‪ .‬ﻻﻳ‬
‫ﺋﻴ ﺴﻴ ﺔ‪.‬‬
‫ﺑﻄﺮﻳﻘ ﺔ ر‬ ‫ﺘﻢ اﻟﻮﺻﻮل إﻟﻴﻬﺎ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘ ﻲﻳ‬
‫اﻟ‬

‫ﺜﻴﺮ‬
‫ﺘﺮﻛﺎن ﻓ ﻲ اﻟﻜ‬
‫ﺑـ ‪SEP ،‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻬﻤﺎﻳﺸ‬‫ﺘﻢ دﻋﻢ ‪iBoot‬وﻻ ‪ROM‬اﻟﺨﺎص‬
‫ﻗﻴﺪ آﺧﺮ ﻋﲆ ‪ emmutaler‬ﻫﻮ أﻧﻪﻳﻌﻤﻞ ﺣﺎﻟ ًﻴﺎ ﻣﻊ ‪SecureROM‬ﻓﻘﻂ‪ .‬ﻻﻳ‬
‫ﺒﺮﻣﺠﻴ ﺔ ﻣﻊ ‪SecureROM.‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻣﻦ اﻟ‬
‫ﺒ ًﻘﺎ‪ .‬ﻻﻳﻤﻜﻦ ﺣﺎﻟ ًﻴﺎ إر‬
‫ﺑﺎك أي ﺷ ﻲء‬ ‫ﺑﻌﻤﻖ ﻣ ﺴ‬‫ﺘﺎج إﱃ ﻫﻨﺪﺳ ﺔ ﻋﻜ ﺴﻴ ﺔ وﻓﻬﻤﻬﺎ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﺸﻮﻳ ﺶ أﺟﺰاء ﻣﺤﺪدة ﺟﺪًا ﻣﻦ ‪SecureROM‬اﻟ‬
‫ﺑ‬‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﻧﺤﻦ ﻣﻘﻴﺪون‬
‫ﺜﺎل ‪[28].‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻌﺾ اﻷﺧﻄﺎء ﻓ ﻲ وﺣﺪةﺗﺤﻜﻢ اﻟﺬاﻛﺮة ﻋﲆﺳ‬‫ﺜﻮر ﻋﲆ‬
‫ﺜﻞﺗﻜﻮﻳﻦ ‪ MMU.‬ﻫﺬا أﻣﺮ ﻣﺆﺳﻒ ‪ ،‬ﺣﻴ ﺚﺗﻢ اﻟﻌ‬
‫ﺑﺎﻷﺟﻬﺰة ‪ ،‬ﻣ‬‫ﺘﻌﻠﻖ‬
‫ﻣ‬

‫ً‬
‫ﺿﺌﻴﻼ‪.‬‬ ‫ﺘﻤﻞ أﻻﻳﻜﻮن‬
‫ﺘﺸﻮﻳ ﺶ أو ﻋﻮاﻣﻞ أﺧﺮى ‪ ،‬ﻟﻜﻦ ﻣﻦ اﻟﻤﺤ‬
‫ﺛﻴﺮه ﻋﲆﺳﺮﻋ ﺔ اﻟ‬
‫ﺘﺸﻮﻳ ﺶ‪ .‬ﻟﻢ ﻧﺤﺪد ﻣﺪىﺗﺄ‬
‫ﺛﻨﺎء ﻋﻤﻠﻴ ﺔ اﻟ‬ ‫ﺑ ًﻘﺎ ‪،‬ﻳﻤﻜﻦ أنﺗ‬
‫ﺘﻌﻄﻞ ‪QEMU‬أ‬ ‫ﻛﻤﺎ ذﻛﺮﻧﺎﺳﺎ‬
‫ﺘﻘﺮﻳﺮ‪.‬‬
‫ﺑ ﺔ ﻫﺬا اﻟ‬
‫ﺘﺎ‬
‫ﺒﺎ ًرا ﻣﻦ ﻛ‬
‫ﺘ‬‫ﺘ ﻲ ﻻﻳﻤﻜﻦﺗﻔ ﺴﻴﺮ ﻫﺎ ‪-‬اﻋ‬
‫ﻋﲆ ﻫﺬا اﻟﻨﺤﻮ ‪ ،‬ﻫﻨﺎك ﻗﻴﺪ آﺧﺮ ﺣﺎﻟ ًﻴﺎ و ﻫﻮ ‪QEMU‬ﻧﻔ ﺴﻪ وأﻋﻄﺎﻟﻪ اﻟ‬

‫ﺜﻮر ﻋﲆ ﺧﻄﺄ ‪checkm8.‬‬


‫ﺒﻴﻖ ﻛﻮﻣ ﺔ ﻣﺨﺼﺺ ﻟـ ‪fuzzer‬ﻟﻠﻌ‬
‫أﺧﻴ ﺮًا ‪ ،‬ﻛﺎن ﻋﻠﻴﻨﺎ إﻧﺸﺎءﺗﻄ‬
‫ﺜﺮ ﻣﻦ ﻧﻈﺎم ‪Linux ،‬إذاﺗﻄﻠ ﺐ اﻷﻣﺮ ﻧﻔ ﺲ اﻟﻤﻘﺪار ﻣﻦ ‪shui‬‬
‫ﺛﻨﺎﺋ ﻲ ﻗﻴﺎﺳ ﻲ أﻛ‬‫ﺑﻮاﺳﻄ ﺔ ‪AFL ++‬ﻓ ﻲ ﻧﻈﺎم‬‫ﺜﻮر ﻋﻠﻴﻪ‬
‫ﺘﻢ اﻟﻌ‬
‫ﺘﻤﻞ أن ﻫﺬا اﻟﺨﻄﺄ ﻟﻢﻳ‬
‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﻤﻦ اﻟﻤﺤ‬
‫ﺧﺼﻴﺼﺎ ﻟﻬﺬا‬
‫ً‬ ‫ﺑﻴﻨﻤﺎﺗﻢﺗﺼﻤﻴﻢ ‪FETA‬‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬‬
‫ﺜﺮ ﻣﻦ ‪AFL ++.‬‬
‫ﺒﻴ ﺮًا ﻟـ ‪emmutaler ،‬وﻟﻜﻦ أﻛ‬
‫ﺜﻞ ﺣﺪًا ﻛ‬
‫ﺘﻢﺗﺸﻐﻴﻠﻪ‪ .‬ﻋﲆ ﻫﺬا اﻟﻨﺤﻮ ‪ ،‬ﻫﺬا ﻻﻳﻤ‬
‫‪heap-feng-‬ﻟﻴ‬
‫ﺘﺸﻒ أ ً‬
‫ﻳﻀﺎ أي ﻓﺎﺋﺾ ﻓ ﻲ اﻟﻜﻮﻣ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن أﺣﺪ ﻗﻴﻮد ‪FETA‬‬ ‫ﺑﻞﻳﻜ‬‫ﺘﺸﺎف أي أﺧﻄﺎء ‪UAF‬ﻋﲆ اﻟﻔﻮر ﻓﺤ ﺴ ﺐ ‪،‬‬
‫ﺘﺼﺮ اﻷﻣﺮ ﻋﲆ اﻛ‬
‫ﺜﺮ ﻋﻤﻮﻣﻴ ﺔ‪ .‬ﻻﻳﻘ‬
‫اﻟﻐﺮض ‪ ،‬ﻓﻬﻮ أﻛ‬
‫ﺒﺮ‪.‬‬
‫ﺘﻰ ﻟﻠﻘﻄﻊ اﻷﻛ‬
‫ﺜﻴ ًﺮا ‪ ،‬ﺣ‬
‫ﺘﺎﺟﻬﺎ‪.‬ﻳﻤﻜﻨﻪﺗﺨﺼﻴﺺ ﻣﺎﻳﺼﻞ إﱃ ﺻﻔﺤ ﺔ واﺣﺪة ﻣﻦ اﻟﺬاﻛﺮة ﻛ‬
‫ﺘ ﻲﻳﺤ‬
‫ﻫﻮ ﻣﻘﺪار اﻟﺬاﻛﺮة اﻟ‬

‫ﺒﻠﻴ ﺔ‬
‫ﺘﻘ‬‫ﺘﻤﺎﻻ ت اﻟﻤ ﺴ‬
‫‪7.2‬اﻻﺣ‬

‫ﺒﺪاﻳ ﺔ اﻟﺮاﺋﻌ ﺔ ﻟﻴ ﺲ ﻓﻘﻂ اﻟ ﺴﻤﺎح‬


‫ﺒﻞ ‪ ،‬ﻻﺳﻴﻤﺎ ﻟﻤﻌﺎﻟﺠ ﺔ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻘﻴﻮد اﻟﻤﺬﻛﻮرة أﻋﻼه‪.‬ﻳﻤﻜﻦ أنﺗﻜﻮن ﻧﻘﻄ ﺔ اﻟ‬
‫ﺘﻘ‬‫ﺘﻤﺎﻻ ت ﻟﻠﻌﻤﻞ ﻓ ﻲ اﻟﻤ ﺴ‬
‫ﻫﻨﺎك اﻟﻌﺪﻳﺪ ﻣﻦ اﻻﺣ‬
‫ﺘﻮﺳﻊ إﱃ ‪iBoot‬و ‪SEPROM.‬ﻓ ﻲ ﺣﻴﻦ أن ‪iBoot‬ﻗﺪ ﻻﻳﻜﻮن ﻛﺬﻟﻚ‬ ‫ﺒﺮ ‪ ،‬وﻟﻜﻦ أ ً‬
‫ﻳﻀﺎ اﻟ‬ ‫ﺑ ﺴﻬﻮﻟ ﺔ أﻛ‬‫ﺘﻠﻔ ﺔ‬
‫ﺘﺸﻮﻳ ﺶ إﺻﺪارا ت ‪SecureROM‬اﻟﻤﺨ‬
‫ﺑ‬

‫‪46‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺠﻤﻴﺪ‬
‫ﺗﺤ ﺴﻴﻨﺎ تﺳﺮﻋ ﺔ اﻟ‬
‫‪7.3.‬‬ ‫‪47‬‬

‫ﺘﻤﺎم أ ً‬
‫ﻳﻀﺎ ‪ ،‬ﻟﻜﻦ‬ ‫ﺜﻴﺮ ﻟﻼ ﻫ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا‪SEPROM .‬ﻣ‬
‫ﺗﻮﻛﻮل ‪USB‬اﻷﻛ‬
‫ﺑﺮو‬‫ﺜﻞ‬ ‫ﺘﻮي أ ً‬
‫ﻳﻀﺎ ﻋﲆ اﻟﻌﺪﻳﺪ ﻣﻦ ﻧﻮاﻗﻞ اﻟﻬﺠﻮم ‪ ،‬ﻣ‬ ‫ﺜﻘ ﺔ ‪-‬ﻓﻬ ﻲﺗﺤ‬
‫ﻗﻴﻤ ﺔ ‪-‬ﻓﻬ ﻲ ﻟﻴ ﺴ ﺖ ﺟﺬرﺳﻠ ﺴﻠ ﺔ اﻟ‬
‫ﺘﻐﻼل ﻓ ﻲ ‪SecureROM‬أوﻻً‪.‬‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﺳ‬‫ﺒ ًﻘﺎ‬
‫ﺘ ﻲﺗﻢ اﻟﻜﺸﻒ ﻋﻨﻬﺎ ﻣ ﺴ‬
‫ﺜﻐﺮا ت اﻟ‬
‫ﺘﻤﺎم‪ .‬ﻛﺎﻧ ﺖ اﻟ‬
‫ﺛﺎرة ﻟﻼ ﻫ‬ ‫ً‬
‫ﻫﺪﻓﺎ أﻗﻞ إ‬ ‫ﺑﻪﻳﺠﻌﻠﻪ‬‫ﺘﻬﺪﻳﺪ اﻟﺨﺎص‬
‫ﻧﻤﻮذج اﻟ‬

‫ﺘﻤﻞ أنﻳﻜﻮن اﻟﻤﺮﺷﺢ اﻟﺠﻴﺪ ﻫﻮﺗﺸﻮﻳ ﺶ ﻣ ﺴﺎﺣﺎ ت‬


‫ﺒﻠ ﻲ ‪،‬ﻳﻤﻜﻦ أنﻳﻜﻮن اﻟﻘﺪرة ﻋﲆﺗﺸﻮﻳ ﺶ اﻟﻤﺰﻳﺪ ﻣﻦ أﺟﺰاء ‪SecureROM.‬ﻣﻦ اﻟﻤﺤ‬
‫ﺘﻘ‬‫ﻣﺠﺎل آﺧﺮ ﻟﻠﻌﻤﻞ اﻟﻤ ﺴ‬
‫ﺘﻔﻜﻴﺮ ﻓ ﻲ‬ ‫ﺘﻤﺎم أ ً‬
‫ﻳﻀﺎ اﻟ‬ ‫ﺜﻴﺮ ﻟﻼ ﻫ‬
‫ﺑﻌﺪ‪ .‬ﻗﺪﻳﻜﻮن ﻣﻦ اﻟﻤ‬‫ﺒﻬﺎ‬
‫ﺘ ﻲ ﻟﻢ ﻧﻐﻀ‬
‫ﺑﻨﺎ ‪ ،‬واﻟ‬‫ﺘﻬﺪﻳﺪ اﻟﺨﺎص‬
‫ﺒﻴﺮة ﻣﻦ ﻧﻤﻮذج اﻟ‬
‫أﺳﻤﺎء ‪NVME‬وأﻧﻈﻤ ﺔ اﻟﻤﻠﻔﺎ ت ﻧﻔ ﺴﻬﺎ‪ .‬ﻫﺬه ﻫ ﻲ آﺧﺮ ﻣﻨﻄﻘ ﺔ ﻛ‬
‫ﺒﺪو أن‬
‫ﺜﻤ ﺮًا‪ .‬ﻛﻤﺎ ﻫﻮ اﻟﺤﺎل ﺣﺎﻟ ًﻴﺎ ‪،‬ﻳ‬ ‫ً‬
‫ﺘﻬﺪاﻓﺎ ﻣ‬
‫ﺜﺮ اﺳ‬
‫ﺛﻞ ‪،‬ﻳﻤﻜﻦ أنﻳﻜﻮن ﻏﻤﻮض ‪ASN.1‬اﻷﻛ‬
‫ﺒ ﺚ ﻣﻤﺎ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟﺬاﻛﺮة‪ .‬ﻓ ﻲ ﻋ‬
‫ﺜﻞ وﺣﺪة اﻟ‬
‫ﻛﻴﻔﻴ ﺔﺗﺸﻮﻳ ﺶ اﻟﺠﻬﺎز ﻧﻔ ﺴﻪ ‪ ،‬ﻣ‬
‫ﺜﻞ أداة‬ ‫ً‬
‫ﺒﺎﺷﺮة ‪ ،‬ﻣ‬ ‫ﺘ ﻲﺗﺤﺪ ث ﻻﺣ ًﻘﺎ ﻓ ﻲ ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪IMG4‬ﻣ‬ ‫ﺒﺪﻳﻞ ﻫﻮ وﻇﺎﺋﻒ ‪fuzz‬اﻟ‬
‫ﺑ ﺔ ﻓ ﻲﺗﺤﻮﻳﻞ ‪ASN.1‬دون رﻓﻀﻪ ﻋﲆ اﻟﻔﻮر‪ .‬ﻗﺪﻳﻜﻮن اﻟ‬
‫اﻟﻤﺼﻬﺮﻳﻮاﺟﻪ ﺻﻌﻮ‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪image4 .‬‬
‫‪interposer‬ﻟﺮد ﻧﺪاء اﻟ‬

‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻓﻬﻮ ﺣﺎﻟ ًﻴﺎ ﻏﻴﺮ‬‫ﺛﻮق‪.‬‬


‫ﺑﺸﻜﻞ ﻣﻮ‬‫ﺘﺸﺎفﺗﺪﻓﻘﺎ ت اﻟﻜﻮﻣ ﺔ اﻟ ﺴﻔﻠﻴ ﺔ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ‪ ،‬إﻻ أﻧﻪﻳﻤﻜﻦﺗﺤ ﺴﻴﻨﻪ ﻻﻛ‬‫ﺑﺎﻟﻔﻌﻞ‬‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ‪FETA‬ﻳﻌﻤﻞ‬
‫ﺜﻮر‬
‫ﺘﻤﺎم‪ .‬إذاﺗﻤﻜﻨﺎ ﻣﻦ اﻟﻌ‬
‫ﺜﻴ ﺮًا ﻟﻼ ﻫ‬ ‫ً‬
‫ﺳﺆاﻻ ﻣ‬ ‫ﺜﻴﺮ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺗﻪ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن ‪FETA‬ﻳ‬
‫ﺒﻠ ﻲ إﱃﺗﺤ ﺴﻴﻦ ﻛﻔﺎءة ذاﻛﺮ‬
‫ﺘﻘ‬‫ﺑﺎﻟﺬاﻛﺮة‪.‬ﻳﻤﻜﻦ أنﻳﻨﻈﺮ اﻟﻌﻤﻞ اﻟﻤ ﺴ‬‫ﺘﻌﻠﻖ‬
‫ﺗﻤﺎﻣﺎ ﻓﻴﻤﺎﻳ‬
‫ً‬ ‫ﻣﻼﺋﻢ‬
‫ﺜﺎل ‪ ،‬ﻗﺪﻳﻜﻮن ﻫﻨﺎك‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻘﺪ ﻫﺎ؟ ﻋﲆﺳ‬
‫ﺘ ﻲ ﻧﻔ‬
‫ﺘﺨﺼﺺ ‪ ،‬ﻓﻤﺎ اﻷﺧﻄﺎء اﻷﺧﺮى اﻟ‬
‫ﺒﺪﻳﻞ إﱃ ‪allo cator‬ﻣ‬
‫ﺘ‬‫ﺘ ﺔ أﺟﻴﺎل ﻣﻦ اﻟﺮﻗﺎﺋﻖ ﻋﻦ ﻃﺮﻳﻖ اﻟ‬
‫ﻋﲆ ‪UAF‬ﻣﻮﺟﻮد ﻓ ﻲﺳ‬
‫ﺘﺸﻮﻳ ﺶ ﻋﲆ أﺣﺪ ﻫﻤﺎ ﻓ ﻲ ‪SecureROM.‬‬
‫ﺘﺎﻟ ﻲﻳﻤﻜﻨﻨﺎ اﻟ‬
‫ﺑﺎﻟ‬
‫ﺒﺮ ‪ ،‬و‬
‫ﺑ ﺴﻬﻮﻟ ﺔ أﻛ‬‫ﺘﺸﺎفﺗ ﺴﺮ ب اﻟﺬاﻛﺮة‬
‫ﺜﻞ اﻛ‬
‫ﺗﺼﻤﻴﻢ ﻣﺨﺼﺺ آﺧﺮ ‪ ،‬ﻣ‬

‫ﺒﻠ ﻲ ﻋﲆ‬
‫ﺘﻘ‬‫ﺘﺼﺮ اﻟﻌﻤﻞ اﻟﻤ ﺴ‬ ‫ﺑ ﻼ ً ﻟﻼﺳ‬
‫ﺘﻐﻼل ﻋﲆ ‪A12‬و ‪A13.‬ﻳﺠ ﺐ أﻻﻳﻘ‬ ‫ﺑﺄنﻳﻜﻮن ﺧﻄﺄ ‪checkm8‬ﻗﺎ‬ ‫ﺑ ًﻘﺎ ‪ ،‬ﻣﻦ اﻟﻤﺤ‬
‫ﺘﻤﻞ أنﻳ ﺴﻤﺢﺗ ﺴﺮ ب اﻟﺬاﻛﺮة‬ ‫ﻛﻤﺎ ذﻛﺮﻧﺎﺳﺎ‬
‫ﺗﺤﺪﻳﺪ اﻟﻬﻮﻳ ﺔ‬
‫ﺛﺎرة و‬
‫ﺒﺸﺮ ﻹ‬
‫ﺒ ﺔ ﻟﻠ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺘﻰ‬
‫ﺒﺎ ﻟﻠﻐﺎﻳ ﺔ ﺣ‬
‫ﺑﺸﻜﻞ ﻋﺎم ‪-‬أﻣ ﺮًا ﺻﻌ ً‬‫ﺘﺨﺪام ‪(TOCTOU) -‬أو ﻇﺮوف اﻟﻌﺮق‬
‫ﺘﺤﻘﻖ ﻣﻦ أﺧﻄﺎء وﻗ ﺖ اﻻﺳ‬
‫اﻟﻤﺨﺼﺼﻴﻦ ﻓﻘﻂ‪.‬ﻳﻌﺪ وﻗ ﺖ اﻟ‬
‫ﺘﺠﺎ ﻫﻠﻬﺎ‪.‬ﻳﻤﻜﻦ ﻟﻠﻤﺮء أنﻳﻔﻜﺮ ﻓ ﻲﺗﺼﻤﻴﻢ‬
‫ﺘﺎﻟ ﻲﻳ‬
‫ﺑﺎﻟ‬
‫ﺘﻐﻴﺮة و‬
‫ﺘﻘﻠﻴﺪي وﻗﺪﻳﺼﻨﻒ اﻟﻤﺪﺧﻼ ت اﻟﻨﻀﺮة ﻋﲆ أﻧﻬﺎﺗﻐﻄﻴ ﺔ ﻣ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ .‬ﻗﺪﻳﻜﻮن اﻷﻣﺮ أﺳﻮأ ﻓ ﻲ اﻟﻤﺼﺎ ﻫﺮ اﻟ‬
‫ﺑﻌﻴﺪ اﻟﻤﻨﺎل ‪ ،‬إﻻ أن أﺧﻄﺎء‬‫ﺒﺪو‬
‫ﺑﻼغ ﻋﻨﻬﺎ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻫﺬا ﻗﺪﻳ‬
‫ﺜﻞ ﻫﺬه اﻷﺧﻄﺎء واﻹ‬
‫ﺜﻮر ﻋﲆ ﻣ‬
‫ﺘﺼﻔﺤﻴﻦ اﻟﻌ‬
‫ﺑﺪﻳﻠ ﺔ ‪ ،‬ﻣﻤﺎﻳﺠﻌﻞ ﻣﻦ اﻟ ﺴﻬﻞ ﻋﲆ اﻟﻤ‬‫ﺒ ﺔ ﺧﻴﻮط‬
‫ﺘ‬‫ﻣﻜ‬
‫ﺘﻢﺗﺸﻐﻴﻠﻪ‪.‬‬ ‫ﺘﺎج أ ً‬
‫ﻳﻀﺎ إﱃ ﻧﻤﻂ وﺻﻮل ﻛﻮﻣ ﺔ ﻣﻌﻴﻦ ﻟﻴ‬ ‫ﺑﻪ ﻟـ ‪checkm8 ،‬واﻟﺬيﻳﺤ‬
‫ﺘﻄﻠ ﺐﺗﺸﻐﻴﻞ ﻧﻤﻂ وﺻﻮل ﻣﺤﺪد ‪ ،‬و ﻫﻮ ﻣﺸﺎ‬
‫ﺗ‬‫‪TOCTOU‬‬

‫ﺜﺮ‬
‫ﺘﺤﻠﻴﻞ اﻷﻛ‬
‫ﺜﻤ ﺮًا ‪ ،‬إﻻ أن اﻟ‬ ‫ﺘﻤﺎم أ ً‬
‫ﻳﻀﺎ‪ .‬ﻓ ﻲ ﺣﻴﻦ أنﺗﺤﻘﻴﻘﻨﺎ اﻟ ﺴﺮﻳﻊ ﻟﻢﻳﻜﻦ ﻣ‬ ‫ﺜﻴ ﺮًا ﻟﻼ ﻫ‬
‫ﺒ ﺐﺗﻌﻄﻞ ‪QEMU‬ﻓ ﻲ ﻇﺮوف ﻏﺎﻣﻀ ﺔ أﻣ ﺮًا ﻣ‬
‫ﺘﺤﻘﻴﻖ ﻓ ﻲﺳ‬
‫أﺧﻴ ﺮًا ‪ ،‬ﻗﺪﻳﻜﻮن اﻟ‬
‫ﺘﻬﺎ ‪،‬‬ ‫ﺘﺸﻬﺪ اﻟﻤﺪﺧﻼ ت أ ً‬
‫ﻳﻀﺎﺗﻨﻮﻋً ﺎ أﻗﻞ ﻓ ﻲﺗﻐﻄﻴ‬ ‫ﺑﻞﺳ‬‫ﺛﻮﻗﻴ ﺔ ﻓﺤ ﺴ ﺐ ‪،‬‬
‫ﺜﺮ ﻣﻮ‬ ‫ﺗﺮﻛﻴ ًﺰاﻳﻤﻜﻦ أنﻳﻮﻓﺮ ﻣﺰﻳﺪًا ﻣﻦ اﻟ‬
‫ﺒﺼﻴﺮة‪ .‬ﻟﻦﻳﺆدي ذﻟﻚ إﱃ ﺟﻌﻞ ﻏﻤﻮض ‪USB‬أﻛ‬ ‫ﻣﺸﺎرﻛ ﺔ و‬
‫ﺒﺪو‪.‬‬
‫ﺑﺸﻜﻞ ﻋﺸﻮاﺋ ﻲ ﻋﲆ ﻣﺎﻳ‬
‫ﺣﻴ ﺚ ﻟﻦﺗﻤﻮ ت ‪QEMU‬‬

‫ﺘﺸﻮﻳ ﺶ‬
‫ﺗﺤ ﺴﻴﻨﺎ تﺳﺮﻋ ﺔ اﻟ‬
‫‪7.3‬‬
‫ﺑﻌﺾ‬‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬ﻻﺗﺰال ﻫﻨﺎك‬‫ﺘﺸﻮﻳ ﺶ‪ .‬ﻓ ﻲ ﺣﻴﻦ أن ﻏﻤﻮض ‪IMG4‬ﺳﺮﻳﻊ ﺟﺪًا‬
‫ﺒﻠ ﻲ ﻫﻮﺗﺤ ﺴﻴﻦﺳﺮﻋ ﺔ اﻟ‬
‫ﺘﻘ‬‫ﺑﺸﻜﻞ ﺧﺎص ﻟﻠﻌﻤﻞ اﻟﻤ ﺴ‬‫ﺘﻤﺎم‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫أﺣﺪ اﻟﻤﺠﺎﻻ ت اﻟﻤ‬
‫ﺑﻂ ﻋﲆ اﻹﻃﻼق‪ .‬ﻣﻦ اﻟﻤﺄﻣﻮل أنﻳ ﺴﺎﻋﺪ اﻟﺤﺼﻮل ﻋﲆ دﻋﻢ‬
‫ﺘﺮا‬
‫ﺑﺸﻜﻞ ﻛﺎﻣﻞ وﻻﺗﺪﻋﻢ اﻟ‬‫ﺜﺎل ‪ ،‬ﻻﺗﺰال وﺣﺪة ‪kernel‬ﻻﺗﻌﻤﻞ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻬﺎ‪ .‬ﻋﲆﺳ‬
‫ﺘ ﻲﺗﻤ ﺖ ﻣﻮاﺟﻬ‬
‫اﻟﻘﻴﻮد اﻟ‬
‫ﺜﻴ ًﺮا‪.‬‬
‫ﺑﻂ ﻓ ﻲﺗ ﺴﺮﻳﻊ ﻋﻤﻠﻴ ﺔﺗﺸﻮﻳ ﺶ ‪USB‬ﻛ‬
‫ﺘﺮا‬
‫اﻟ‬

‫ﺜﻴﺮ ﻣﻦ اﻟﻮﻗ ﺖ ﻓ ﻲ ﻋﺪمﺗﺸﻐﻴﻞ ‪SecureROM‬ﻧﻔ ﺴﻪ ‪ ،‬وﻟﻜﻦ ﻓ ﻲ أﺷﻴﺎء‬


‫ﺑﺸﻜﻞ ﻛﺎﻣﻞ ‪ ،‬ﻓﻘﺪﺗﻢ ﻗﻀﺎء اﻟﻜ‬‫ﺗﻌﻤﻞ‬
‫ﺘﻰ ﻣﻊ وﺟﻮد وﺣﺪة ‪kernel‬‬
‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪ ،‬ﺣ‬
‫ﺘﺸﻮﻳ ﺶ‬
‫ﺜﺎل ﻛﻤﺎ ﺣﺪ ث ﻓ ﻲ ‪[5] -‬ﻟﺰﻳﺎدةﺳﺮﻋﺎ ت اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘ ﺔ أو اﻟﺪﻳﻨﺎﻣﻴﻜﻴ ﺔ ‪-‬ﻋﲆﺳ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻜﺸﺎف إﻋﺎدة اﻟﻜ‬
‫ﺒﻠ ﻲ اﺳ‬
‫ﺘﻘ‬‫ﺜﻞ اﻷﺟﻬﺰة‪.‬ﻳﻤﻜﻦ ﻟﻠﻌﻤﻞ اﻟﻤ ﺴ‬
‫أﺧﺮى ‪ ،‬ﻣ‬
‫ﺒﻴﺮة ﻫﻨﺎك‪.‬‬
‫ﺘ ﺴ ﺐﺳﺮﻋ ﺔ ﻛ‬
‫ﺘﺎﻟ ﻲﻳﻤﻜﻦ أن ﻧﻜ‬
‫ﺑﺎﻟ‬
‫ﺜﻴ ﺮًا ‪1‬و‬
‫ﺘﻘﺎط ذاﻛﺮة أﻗﻞ ﻛ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﻟ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬إذا ﻛﺎن ﻣﻦ اﻟﻤﻤﻜﻦ ﺣﻞ أﻋﻄﺎل ‪QEMU ،‬ﻓﻨﺤﻦ‬‫ﺘﻤﻠ ﺔ‪.‬‬
‫اﻟﻤﺤ‬

‫ﺑ ًﻘﺎ‪.‬‬
‫ﺒﻴﺮ ﻣﻦ ‪libc‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢﺳﺎ‬
‫ﺘﻘﺎط ﺟﺰء ﻛ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ ﺣﺎﻟ ًﻴﺎ اﻟ‬
‫ﺘﺠﻨ ﺐ أﻋﻄﺎل ‪QEMU‬اﻟﻐﺎﻣﻀ ﺔ ‪،‬ﻳ‬
‫‪1‬ﻟ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪8‬‬

‫اﻷﻋﻤﺎل ذا ت اﻟﺼﻠ ﺔ‬

‫ﺗﻒ اﻟﺬﻛﻴ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪،‬‬


‫ﺘﻤﻬﻴﺪ ﻟﻠﻬﻮا‬
‫ﺘﻐﻄﻴ ﺔ ‪-‬ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ ﻣﻦ ﻏﻤﻮض ‪greybox -‬ﻋﲆ أدوا تﺗﺤﻤﻴﻞ اﻟ‬
‫ﺑﺎﻟ‬‫ﺘﺸﻮﻳ ﺶ اﻟﻤﻮﺟﻪ‬
‫ﺒﻖ ﻋﻠﻨًﺎ اﻟ‬
‫ﻋﲆ ﺣﺪ ﻋﻠﻤﻨﺎ ‪ ،‬ﻧﺤﻦ أول ﻣﻦﻳﻄ‬
‫ﺑﻘ ﺔ ﻟﻜﻞ ﻣﻦ ‪Whitebox‬و‬
‫ﺗﻒ اﻟﺬﻛﻴ ﺔ‪ .‬ﻋﲆ ﻃﺮﻓ ﻲ ﻧﻘﻴﺾ ﻣﻦ اﻟﻄﻴﻒ ‪ ،‬ﻫﻨﺎك أﻋﻤﺎلﺳﺎ‬
‫ﺒﻴﻖ اﻟﻐﻤﻮض ﻋﲆ أدوا تﺗﺤﻤﻴﻞ اﻟﻬﻮا‬
‫ﺘﻄ‬‫ﺑﻘ ﺔ ‪ ،‬ﻟ‬
‫ﻛﺎﻧ ﺖ ﻫﻨﺎك أﻋﻤﺎلﺳﺎ‬
‫ﺒﻴﺮ ﻣﻦ ‪emmutaler.‬‬
‫ﺜﻨﺎﺋﻴ ﺔ ‪ ،‬و ﻫﻮ ﺟﺰء ﻛ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺑﺈﻋﺎدة اﻟﻜ‬‫ﺘﻌﻠﻖ‬ ‫‪blackbox fuzzing ،‬وﻛﻼ ﻫﻤﺎ ﻣﻌﺮوض أدﻧﺎه‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻧﻘﺪم أ ً‬
‫ﻳﻀﺎ ﻋﻤ ﻼ ً آﺧﺮﻳ‬

‫ﺗﻌﻮﻳ ﺶ ‪USB Blackbox‬‬


‫‪8.1‬‬
‫ﺑﺪﻳﻬ ًﻴﺎ ‪ ،‬إﻻ‬‫ﺒﺪو‬
‫ﺜﻞ اﻷﻋﻄﺎل‪ .‬ﻓ ﻲ ﺣﻴﻦ أن ﻫﺬا ﻗﺪﻳ‬
‫ﺘﻪ ‪ ،‬ﻣ‬
‫ﺛﺎرة اﻷﺧﻄﺎء ﻣﻦ ﺧﻼلﺳﻠﻮك ﺧﻄﺄﻳﻤﻜﻦ ﻣﻼﺣﻈ‬
‫ﺑﺈﻧﺸﺎء ﻣﺪﺧﻼ ت ﻋﺸﻮاﺋﻴ ﺔ ﻋﲆ أﻣﻞ إ‬
‫ﻳﻘﻮم ‪Blackbox fuzzing‬‬
‫ﺑﺮﻧﺎﻣﺞ‪.‬‬‫ﺒﻴﻘﻪ ﻋﲆ أي‬
‫ﺜﻴﺮ ﻟﻺﻋﺪاد وﻳﻤﻜﻦﺗﻄ‬
‫ﺑﻜ‬‫ﺘًﺎ أﻗﻞ‬
‫ﺘﻐﺮق وﻗ‬
‫أﻧﻪﻳ ﺴ‬

‫ﺒﺎ ت ‪USB‬اﻟﻤﻤﻜﻨ ﺔ وﻳﻼﺣﻈﻮن أي أﻋﻄﺎل‬


‫ﺒﺎ ب اﻟﺼﻨﺪوق اﻷﺳﻮد ﻹﻓ ﺴﺎد ﻣﻌﺎﻟﺠ ﺔ ‪USB‬داﺧﻞ ‪SecureROM1.‬ﻓ ﻲ اﻷﺳﺎس ‪،‬ﻳﺮﺳﻠﻮن ﺟﻤﻴﻊ ﻃﻠ‬
‫ﺘﺨﺪم ﺿ‬
‫]‪[14‬ﻳ ﺴ‬
‫ﻳﻀﺎ‪ .‬ﺧﺎﺻ ًﺔ ﻟﻠﻌ‬
‫ﺜﻮر‬ ‫ﺘﺸﺎف ﻧﻘﺎط اﻟﻀﻌﻒ أ ً‬
‫ﺜﺮ إرﺷﺎدًا ‪ ،‬إﻻ أﻧﻪ ﻣﻦ اﻟ ﺴﻬﻞ ﺟﺪًا إﻋﺪاده وﻳﺆدي إﱃ اﻛ‬
‫ﺑﻚ اﻷﻛ‬
‫ﺑﻨﻬﺠﻨﺎ اﻟﻤﺮ‬‫ﺑﺪاﺋ ًﻴﺎ ﺟﺪًا ﻣﻘﺎرﻧ ﺔ‬‫ﺒﺪو‬
‫ﻗﺪﺗﺤﺪ ث‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻪﻳ‬
‫ﺒﻞ‪.‬‬
‫ﺘﻘ‬‫ﺘﻤﺎم ﻓ ﻲ اﻟﻤ ﺴ‬
‫ﺜﻴ ﺮًا ﻟﻼ ﻫ‬
‫ﺒﺎع ﻧﻬﺞ اﻟﺼﻨﺪوق اﻷﺳﻮد أﻣ ﺮًا ﻣ‬
‫ﺗ‬‫ﺘﻔﺎﻋﻞ ﻣﻊ اﻷﺟﻬﺰة اﻟﻔﻌﻠﻴ ﺔ ‪ ،‬ﻗﺪﻳﻜﻮن ا‬
‫ﻋﲆ اﻷﺧﻄﺎء ﻓ ﻲ اﻟ‬

‫ﺑﻮاﺳﻄ ﺔ ﻣﺼﻬﺮ اﻟﺼﻨﺪوق اﻷﺳﻮد أ ً‬


‫ﻳﻀﺎ‪ .‬وﻣﻊ‬ ‫ﺜﻮر ﻋﻠﻴﻪ‬
‫ﺘﻤﻞ أﻧﻪﺗﻢ اﻟﻌ‬
‫ﺘﺸﻐﻴﻞ ﺧﻄﺄ ‪checkm8 ،‬ﻓﻤﻦ اﻟﻤﺤ‬
‫ﺑ‬‫ﺑﺎﻟﻨﻈﺮ إﱃ ﻣﺪىﺳﻬﻮﻟ ﺔ ﻗﻴﺎم ﻣﺼﻬﺮﻧﺎ‬‫ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬‬
‫ﺘﺨﺪام ‪FETA‬ﻟﻤﻼﺣﻈ ﺔ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ وﺳﻴﻠ ﺔ ﻟﻠﺤﺼﻮل ﻋﲆ ردود اﻟﻔﻌﻞ ﻋﲆ اﻟﻤﺪﺧﻼ ت‪ .‬ﻧﻈ ﺮًاﻷﻧﻨﺎ اﺿﻄﺮرﻧﺎ إﱃ اﺳ‬‫ﺜﻞ ﻫﺬا اﻟﻤﺼﻬﺮ اﻟﺼﻨﺪوق اﻷﺳﻮد ﻻﻳﺰال‬
‫ذﻟﻚ ‪ ،‬ﻓﺈن ﻣ‬
‫ﺒ ﺔ ﻟﻤﺼﻬﺮ اﻟﺼﻨﺪوق اﻷﺳﻮد أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺑﺎﻟﻨ ﺴ‬‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ ﻓﻌﻞ اﻟﺸ ﻲء ﻧﻔ ﺴﻪ‬
‫ﺧﻄﺄ ‪checkm8 ،‬ﻓ ﺴﻴ‬

‫‪8.2 Fuzzing Whitebox‬ﻣﻦ ‪Android Boot Loaders‬‬


‫ﺑﻲ‬
‫ﺘﺤﻠﻴﻞ اﻟﺤ ﺴﺎ‬
‫ﺘﻤﺪﺗﻘﻨﻴ ﺔ ‪Whitebox Fuzzing‬ﻋﲆ اﻟ‬
‫ﺒﺎر اﻷﻋﻤﻰ ﻟﻠﻤﺪﺧﻼ ت اﻟﻌﺸﻮاﺋﻴ ﺔ ‪،‬ﺗﻌ‬
‫ﺘ‬‫ﺑﺪﻻ ً ﻣﻦ اﻻﺧ‬‫ﺑﻴﺾ‪.‬‬
‫ﺑﻊ أ‬
‫ﻋﲆ اﻟﻄﺮف اﻵﺧﺮ ﻣﻦ اﻟﻄﻴﻒ ﻟﺪﻳﻨﺎ ﻏﻤﻮض ﻣﺮ‬
‫ﺘﻲ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن أﺧﻄﺎء ﻣﺨﻔﻴ ﺔ ﻟﻠﻐﺎﻳ ﺔ ‪ ،‬واﻟ‬‫ﺜﺮ ﺷﻤﻮﻻً‪.‬ﻳﻤﻜﻦ أنﺗﺠﺪ ﻓ ﻲ‬
‫ﺘﺤﻠﻴﻞ أﻛ‬
‫ﺘﺪاول ﻓ ﻲﺗﺤﻠﻴﻞﺳﺮﻳﻊ ‪ ،‬ﻟ‬
‫ﺜﻮر ﻋﲆ اﻷﺧﻄﺎء‪ .‬ﻫﺬاﻳ‬
‫ﺘﻨﻔﻴﺬ اﻟﺮﻣﺰي ‪ ،‬ﻟﻠﻌ‬
‫ﺜﻞ اﻟ‬
‫ﺜﻒ ‪ ،‬ﻣ‬
‫اﻟﻤﻜ‬
‫ﺑﻨﻈﺎم أﻧﺪروﻳﺪ‪.‬ﻳﻤﻜﻦ‬‫ﺑﺮاﻣﺞﺗﺤﻤﻴﻞ اﻹﻗﻼع‬‫ﺘﻠﻮ ث ‪-‬ﻋﲆ‬
‫ﺑﻴﺾ ‪-‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮصﺗﺤﻠﻴﻞ اﻟ‬
‫ﺒﻖ اﻷﻣﺮ اﻷ‬
‫ﺘﻰ ﻣﻦ ﺧﻼل ﻏﻤﻮض ]‪greybox. [22‬ﻳﻄ‬
‫ﺘﻢ اﻟﻜﺸﻒ ﻋﻨﻬﺎ ﺣ‬
‫ﻟﻦﻳ‬
‫ﺑﻨﺠﺎح ﻋﲆ اﻟﻌﺪﻳﺪ‬‫ﺘﻌﺮف‬
‫ﺜﻮر ﻋﲆ اﻷﺧﻄﺎء‪.‬ﻳ‬
‫ﺘﻠﻮ ث ﻟﻠﻌ‬
‫ﺘﺨﺪام ﻣﺤﺮكﺗﺤﻠﻴﻞ اﻟ‬
‫ﺘ ﻲﻳﻤﻜﻦ ﻣﻦ ﺧﻼﻟﻬﺎ اﺳ‬
‫ﺒﻪﺗﻠﻘﺎﺋ ﻲ ‪ ،‬واﻟ‬
‫ﺑﺸﻜﻞ ﺷ‬‫ﺛﺔ‬
‫ﺗﻬﻢﺗﺤﺪﻳﺪ اﻟﻤﺼﺎدر واﻷﺣﻮاض اﻟﻤﻠﻮ‬
‫ﻷدا‬
‫ﺘﻠﻮ ث اﻟﺬيﺗﻢ‬
‫ﺑﻨﻮعﺗﺤﻠﻴﻞ اﻟ‬
‫ﺘﺸﺎف ‪UAF‬‬
‫ﺑﻤﺎ ﻟﻢﺗﻨﺠﺢ ﻓ ﻲﺗﺤﺪﻳﺪ ﺧﻄﺄ ‪checkm8.‬ﻳﺼﻌ ﺐ اﻛ‬
‫ﺘﻤﻬﻴﺪ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ر‬
‫ﺑﺮاﻣﺞﺗﺤﻤﻴﻞ اﻟ‬‫ﺜﻐﺮا ت اﻷﻣﻨﻴ ﺔ ﻓ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ‬
‫ﻣﻦ اﻟ‬
‫ﺑﻮاﺳﻄ ﺔ اﻟﻮرﻗ ﺔ اﻟﻤﺮﺟﻌﻴ ﺔ‪ .‬ﻣﻊ ذﻟﻚ‪،‬‬‫إﺟﺮاؤه‬

‫ﺑﺎﺳﻢ ‪BootROM.‬‬‫ُﻌﺮف‬
‫‪1‬ﻓ ﻲ ذﻟﻚ اﻟﻮﻗ ﺖ ﻛﺎنﻳ‬

‫‪48‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎﺋﻴ ﺔ ﻋﲆ ‪ARM‬‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫‪8.3‬اﻟﻜ‬ ‫‪49‬‬

‫ﺜﻞ ﻣ ﺴﺎﺣﺎ ت أﺳﻤﺎء ‪NVME‬أوﺗﺤﻠﻴﻞ ‪IMG4.‬ﻋﲆ وﺟﻪ اﻟﺨﺼﻮص ‪،‬ﻳﻤﻜﻦ‬


‫ﺒﻴﻘﻪ ﻋﲆ أﺟﺰاء أﺧﺮى ﻣﻦ ‪SecureROM ،‬ﻣ‬
‫ﺘﻤﺎمﺗﻄ‬
‫ﺜﻴﺮ ﻟﻼ ﻫ‬
‫ﺳﻴﻜﻮن ﻣﻦ اﻟﻤ‬
‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﺨﺪام‬ ‫ﺑﺸﻜﻞ ﻓﻌﺎل‪.‬‬‫ﺒﺪو أﻧﻪﻳﺼﻌ ﺐﺗﺸﻮﻳﻬﻪ‬
‫ﺜﻞ ‪[11] ،‬ﻧﻈ ًﺮاﻷن ‪ASN.1‬ﻳ‬
‫ﺘﺤﻠﻴﻞ اﻟﻤﻠﻮ ث ‪-‬ﻣ‬
‫ﺗﻌﺰﻳﺰ ﻏﻤﻮض ‪IMG4‬ﻣﻦ ﺧﻼل اﻟ‬
‫ﺒﺎﺷﺮة ﻋﲆ وﻇﺎﺋﻒ ﻻﺣﻘ ﺔ إﱃ ﺣﺪو ث‬
‫ﺘﻤﻞ أنﻳﺆديﺗﺸﻐﻴﻞ اﻟﻤﺼﻬﺮ ﻣ‬
‫ﺒﺎ إﱃ ﺟﻨ ﺐ ﻣﻊ ﻓﻜﺮةﺗﺸﻮﻳ ﺶ اﻟﻮﻇﺎﺋﻒ اﻟﻼﺣﻘ ﺔ‪ .‬ﻣﻦ اﻟﻤﺤ‬
‫ﺗﺤﻠﻴﻞ اﻟﺸﻮاﺋ ﺐ ﺟﻨ ً‬
‫ﺘﺸﻮﻳﻪ ﻣﻊ‬
‫ﺘﺨﺪامﺗﺤﻠﻴﻞ اﻟ‬
‫ﺑﺎﺳ‬‫ﺘﺮاﺿﺎ ت ﻣﻌﻴﻨ ﺔ ﺣﻮل اﻟﻤﺪﺧﻼ ت‪.‬‬
‫ﺒﺎ ﻣﺎﺗﻀﻊ اﻓ‬
‫ﺘﻌﺬر اﻟﻮﺻﻮل إﻟﻴﻬﺎ ‪ ،‬ﻧﻈ ﺮًاﻷن اﻟﻮﻇﺎﺋﻒ اﻟﻼﺣﻘ ﺔ ﻏﺎﻟ ً‬
‫ﺘ ﻲﻳ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﻋﻄﺎل اﻟ‬
‫اﻟﻜ‬
‫ﺑﺎﻟﻔﻌﻞ ﻟﻠﻮﻇﺎﺋﻒ اﻟﻼﺣﻘ ﺔ‪.‬‬‫اﻟﻤﺼﻬﺮ ‪،‬ﻳﻤﻜﻨﻨﺎﺗﺼﻔﻴ ﺔ اﻟﻤﺪﺧﻼ ت اﻟﻤﻤﻜﻨ ﺔ‬

‫ﺜﻨﺎﺋﻴ ﺔ ﻋﲆ ‪ARM‬‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫‪8.3‬إﻋﺎدة اﻟﻜ‬

‫ﺘﺸﻮﻳ ﺶ‪.‬‬
‫ﺗﻤﻜﻴﻨﻬﺎ ﻣﻦ اﻟ‬
‫ﺜﻨﺎﺋﻴﺎ ت و‬ ‫ﺘﻠ ًﻔﺎ ﻛ‬
‫ﺜﻴ ﺮًا ﻓ ﻲﺗﺮﻗﻴﻊ اﻟ‬ ‫ﺘﺨﺬ ﻧﻬﺠًﺎ ﻣﺨ‬
‫ﺘﺠﺰأ ﻣﻦ ]‪emmutaler. [5‬ﻳ‬
‫ﺘﺨﺮاج اﻟﺮﻣﻮز ﺟﺰءًا ﻻﻳ‬
‫ﺜﻨﺎﺋﻴ ﺔ واﺳ‬
‫ﺘﺮﻗﻴﻊ اﻟ‬
‫ﺗﻌﺪ أدوا ت اﻟ‬
‫ﺘﻤﻜﻴﻦ‬
‫ﺒﺪﻳﻞ ﻟـ ‪QEMU‬ﻟ‬
‫ﺘﺨﺪاﻣﻪ ﻛ‬
‫ﺑﻴﻨﻤﺎﻳﻤﻜﻦ اﺳ‬‫ﺒﺎ‪.‬‬
‫ﺑﺸﻜﻞﺗﻌ ﺴﻔ ﻲﺗﻘﺮﻳ ً‬‫ﺘﻬﺎ‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺑﺈﻋﺎدة ﻛ‬‫ﺘﺎﻟ ﻲﻳ ﺴﻤﺢ‬
‫ﺑﺎﻟ‬
‫ﺛﻨﺎﺋﻴﺎ ت ‪ARM‬و‬‫ﺑ ﺖ إﱃ‬
‫ﺛﺎ‬‫ﺑﺸﻜﻞ‬‫ﻓ ﻲ ﺟﻮ ﻫﺮ ﻫﺎ ‪،‬ﻳﺮﻣﺰ‬
‫ﺘﻐﻠ ﺐ ﻋﲆ‬
‫ﺑﺎﻟﻜﺎﻣﻞ ‪ ،‬ﻓﻠﻦ ﻧﻀﻄﺮ إﱃ اﻟ‬‫ﺜﻨﺎﺋ ﻲ‬
‫ﺜﻨﺎﺋ ﻲ‪ .‬إذاﺗﻢﺗﺮﻣﻴﺰ اﻟﻤﻠﻒ اﻟ‬
‫ﺑﺪﻳﻞ ﻟﻤﺮﻗﻌﻨﺎ اﻟ‬‫ﺑﺔ‬
‫ﺜﺎ‬
‫ﺑﻤ‬ ‫ﺘﺸﻮﻳ ﺶ ﻋﲆ ‪SecureROM ،‬ﻓﺈﻧﻪﻳﻤﻜﻦ أ ً‬
‫ﻳﻀﺎ أنﻳﻜﻮن‬ ‫اﻟ‬
‫ﺑﻴﻦ إﺻﺪارا ت ‪SecureROM ،‬‬ ‫ﺘﺮﻣﻴﺰ أ ً‬
‫ﻳﻀﺎ ﻓ ﻲﺗﺤﺪﻳﺪ اﻟﻮﻇﺎﺋﻒ‬ ‫ﺘﺼﺤﻴﺢ داﺧﻞﺗﻌﻠﻴﻤ ﺔ واﺣﺪة ﻓﻘﻂ‪.‬ﻳﻤﻜﻦ أنﻳ ﺴﺎﻋﺪ اﻟ‬
‫ﻗﻴﻮد ﻣﺆﺷﺮ ‪ARM‬أو اﻟﺤﺎﺟ ﺔ إﱃ اﻟ‬
‫ﺘﻮى ﻛﻤﺎ ﻫﻮ‪.‬‬
‫ﺘﺨﻄﻴﻂ ﻋﺎﻟ ﻲ اﻟﻤ ﺴ‬
‫ﺣﻴ ﺚﻳﻈﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻔﺼﻞ ‪9‬‬

‫ﺗﻤ ﺔ‬
‫ﺧﺎ‬

‫ﺗﺼﺤﻴﺢ أﺧﻄﺎء ‪SecureROM.‬‬


‫ﺘﻤﻜﻴﻦﺗﺸﻮﻳ ﺶ و‬
‫ﺘﺼﺎر ‪ ،‬ﻗﺪﻣﻨﺎ ‪emmutaler ،‬ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷدوا ت ﻟ‬
‫ﺑﺎﺧ‬
‫ﺑﺸﻜﻞ ﻓﻌﺎلﺗﺸﻮﻳ ﺶﺗﺤﻠﻴﻞ ‪IMG4‬وﻣﻌﺎﻟﺠ ﺔ ‪USB‬ﻟـ ‪SecureROM‬‬‫ﺒﻴﺮ واﻟﻌﺪﻳﺪ ﻣﻦ اﻷدوا ت اﻟﻤﺨﺼﺼ ﺔ ‪،‬ﻳﻤﻜﻨﻨﺎ‬
‫ﺑﻔﻀﻞ ﺟﻬﺪ اﻟﻬﻨﺪﺳ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ اﻟﻜ‬
‫ﺘﻤﻬﻴﺪ ‪ ،‬ﻧﺎﻗﺸﻨﺎ ﻛﻴﻒﻳﻌﺎﻟﺠﻬﺎ ‪emmutaler.‬أﻇﻬﺮ ت‬
‫ﺘﺤﺪﻳﺎ ت ﻓ ﻲ ﺟﻠ ﺐ ﺣﺎﻟ ﺔ ﻣﻦ اﻟﻐﻤﻮض إﱃ ﻟﻮادر اﻟ‬
‫ﺑﻌﺪ أن ﺣﺪدﻧﺎ ﻋﺪدًا ﻣﻦ اﻟ‬
‫ﺘﺨﺪام ‪emmutaler.‬‬
‫ﺑﺎﺳ‬
‫ﺑﻔﻀﻞ أداةﺗﺨﺼﻴﺺ ‪FETA‬اﻟﻤﺨﺼﺼ ﺔ‬
‫ﺛﻐﺮة أﻣﻨﻴ ﺔ ‪checkm8. ،‬‬‫ﺜﻮر ﻋﲆ‬ ‫ﺑﻞﻳﻤﻜﻨﻨﺎ أ ً‬
‫ﻳﻀﺎ اﻟﻌ‬ ‫ﺑﻨﺎ ﻣﻊ ‪AFL ++‬أﻧﻪ ﻻﻳﻤﻜﻨﻨﺎ ﻓﻘﻂﺗﺤﻘﻴﻖﺗﻐﻄﻴ ﺔ راﺋﻌ ﺔ ‪،‬‬
‫ﺗﺠﺎر‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻣﻦ ﺧﻼل إﻳﺠﺎد ‪checkm8 ،‬‬
‫ﺘﺎج إﱃ ﻛﻮﻣ ﺔ ﻣﻌﻘﺪة ﻣﻦ ﻓﻨﻎ ﺷﻮي ‪-.‬‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﺨﺪام اﻷﺧﻄﺎء اﻟﺨﺎﻟﻴ ﺔ ‪-‬اﻟ‬
‫ﺘﻰ اﺳ‬
‫ﺘﺸﺎف ﺣ‬
‫ﻟﺪﻳﻨﺎ ‪،‬ﻳﻤﻜﻦ اﻛ‬
‫ﺒ ًﻘﺎ‪ .‬ﻋﻼوة ﻋﲆ ذﻟﻚ ‪،‬‬
‫ﺘﺸﺎف ‪checkm8‬وإﺻﻼﺣﻪ ﻣ ﺴ‬
‫ﺘﻤﻞ أنﺗﺆدي إﱃ اﻛ‬
‫ﺘﻐﻄﻴ ﺔ ﻫﻮ أداة ﻣﻬﻤ ﺔ ﻣﻦ اﻟﻤﺤ‬
‫ﺑﺎﻟ‬‫ﻓﻘﺪ أﻇﻬﺮﻧﺎ أن اﻟﻐﻤﻮض اﻟﺤﺪﻳ ﺚ اﻟﻤﻮﺟﻪ‬
‫ﺑﻤﺎﺗﻢﺗﻨﻔﻴﺬ ﻫﺎ‪ .‬ﻟﻘﺪ وﺟﺪﻧﺎ أ ً‬
‫ﻳﻀﺎ ﻋﺪدًا‬ ‫ﺑ ﺖ ‪-‬وﻟﻤﺎذا ر‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﺛﻨﺎء اﻟ‬
‫ﺘ ﻲﺗﻢ اﻟﻜﺸﻒ ﻋﻨﻬﺎ أ‬
‫ﺘﺨﻔﻴﻒ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ‪SecureROM -‬اﻟ‬
‫ﺑﻌﺾ ﻋﻮاﻣﻞ اﻟ‬‫ﻗﺪﻣﻨﺎ‬
‫ﺘﺨﺪام ‪emmutaler‬‬
‫ﺑﺈﺻﻼﺣﻬﺎ أو ﻋﺮضﺗﺤ ﺴﻴﻨﺎ ت‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻧﻼﺣﻆ أﻧﻪﻳﻤﻜﻦ اﺳ‬‫ﺜﻞ اﻷﺧﻄﺎء وﺳﺮﻋ ﺔ اﻟﻐﻤﻮض ‪-‬وﻗﻤﻨﺎ‬
‫ﻣﻦ اﻟﻤﺸﻜﻼ ت ﻣﻊ ‪AFL ++ -‬ﻣ‬
‫ﺗﺸﺠﻴﻊ‬
‫ﺛﺮ و‬
‫ﺘﻜﺎ‬
‫ﺜﻞ ‪iBoot‬أو ‪SEPROM.‬ﻟﺬﻟﻚ ‪ ،‬ﻟﻀﻤﺎن إﻣﻜﺎﻧﻴ ﺔ اﻟ‬
‫ﺘﻤﻬﻴﺪ ﻣﻦ ‪Apple ،‬ﻣ‬
‫ﺑﺮاﻣﺞﺗﺤﻤﻴﻞ اﻟ‬‫ﺒﺮ ﻣﻦ‬
‫ﺘﻤﻜﻴﻦﺗﺸﻮﻳ ﺶ ﻣﺠﻤﻮﻋ ﺔ أﻛ‬
‫ﻛﺄﺳﺎس ﻟ‬
‫ﺑ ﺖ ﻋﲆ ‪github.com/galli-leo/emmutaler.‬‬
‫ﺜﺎ‬
‫ﺘﺎﺋﺞﺗﺤﻠﻴﻠﻨﺎ اﻟ‬
‫ﺣﺎ إﱃ ﻧ‬ ‫ﺘﺢ ﻣﺼﺪر ‪emmutaler‬وﻧﻮﻓﺮ وﺻﻮﻻ ً ﻣﻔ‬
‫ﺘﻮ ً‬ ‫ﺒﺤ ﺚ ‪،‬ﺳﻨﻔ‬
‫اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬

‫‪50‬‬
Machine Translated by Google

‫ﻓﻬﺮس‬

09/02/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬


)Afl ++. url: https://aflplus.plus/docs/ ‫ﺛﺎﺋﻖ‬
‫[و‬1]

(KVM). 2020. url: https://alephsecurity.com/2020/07/19/xnu-qemu-kvm/ ‫ﺘﺨﺪام ﻇﺎ ﻫﺮﻳ ﺔ اﻷﺟﻬﺰة‬


‫ﺑﺎﺳ‬
QEMU ‫ﻋﲆ‬iOS ‫ﺗ ﺴﺮﻳﻊ ﻧﻈﺎم‬
[2] L. Aronsky.
bootrom ‫ﺘﻐﻼل داﺋﻢ ﻻﻳﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻴﻪ ﻣﻦ‬
‫"و ﻫﻮ اﺳ‬checkmate") ، ‫)اﻗﺮأ‬checkm8 ‫ﺗﻘﺪﻳﻢ‬
17/04/2021). [3] axi0mX. EPIC JAILBREAK: ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)

27 ‫)ﺷﺮﻳﺤ ﺔ‬iPhone X ‫و‬iPhone 8 ‫إﱃ‬A5) ‫)ﺷﺮﻳﺤ ﺔ‬iPhone 4S ‫ ﻣﻦ‬:‫ﻣﻌﺮﺿ ﺔ ﻟﻠﺨﻄﺮ‬iPad ‫و‬iPhone ‫ﻣﻌﻈﻢ اﻷﺟﻴﺎل ﻣﻦ أﺟﻬﺰة‬iOS. ‫ﻟﻤﺌﺎ ت اﻟﻤﻼﻳﻴﻦ ﻣﻦ أﺟﻬﺰة‬
2019. url: https://twitter.com/axi0mX/status/1177542201670168576. https://twitter.com/axi0mX. ‫ﺒﺮ‬
‫ﺘﻤ‬‫ﺒ‬
‫ﺳ‬A11).

- ‫اﻟﻤﺆﺷﺮ‬- ‫ﺘﺤﺎن‬
‫اﻻﻣ‬2019/02 / / ‫ﻛﻮم‬iPhone XS. 2019. url: https: // googleprojectzero. blogspot. ‫ ﻓﺤﺺ ﻣﺼﺎدﻗ ﺔ اﻟﻤﺆﺷﺮ ﻋﲆ ﺟﻬﺎز‬.‫ آزاد‬.‫[ ب‬4]
07/27/2021). ‫ﺘﺎرﻳﺦ‬
‫ﺑ‬‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة‬
)html .‫ﻋﲆ‬- ‫اﻟﻤﺼﺎدﻗ ﺔ‬

ETH ، ‫ﺘﻴﺮ‬
‫أﻃﺮوﺣ ﺔ اﻟﻤﺎﺟ ﺴ‬ARM. ‫ﺘﺼﺎدﻳ ﺔ ﻟـ‬
‫ﺛﻨﺎﺋﻴ ﺔ اﻗ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫[إﻋﺎدة ﻛ‬5] LD Bartolomeo. ArmWrestling:
2021. ، ‫زورﻳ ﺶ‬

techcrunch.com/2016/06/22/apple-unencrypted-kernel/ .‫ﺑﺪونﺗﺸﻔﻴﺮ ﻋﻦ ﻗﺼﺪ‬‫ﺗﺮك‬


ios kernel ‫أن ﻛﻮد‬Apple ‫ﺗﺆﻛﺪ‬.‫ ﻛﻮﻧﺠﺮ‬.‫[ ك‬6]
09/09/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)url: https: //
(SecDev) ، ‫ﺗﻤﺮ‬
‫ﻣﺆ‬2020 ‫ﻓ ﻲ ﻋﺎم‬QASan. ‫ﺛﻨﺎﺋﻴﺎ تﺗﺸﻮﻳ ﺶﻷﺧﻄﺎءﺳﻼﻣ ﺔ اﻟﺬاﻛﺮة ﻣﻊ‬
[7] A. Fioraldi، DC D'Elia، L. Querzoni.
23-30 ، 2020. doi: 10.1109 / SecDev45635.2020.00019. ‫اﻟﺼﻔﺤﺎ ت‬IEEE Secure Development

‫ﺑﻌ ﺔ ﻋﺸﺮ‬
‫اﻟﺮا‬USENIX ‫ ﻓ ﻲ ورﺷ ﺔ ﻋﻤﻞ‬.‫ﺑﻚ‬
‫ﺒﺤ ﺚ اﻟﻤﺮ‬
‫ﺘﺪرﻳﺠﻴ ﺔ ﻟﻠ‬
‫ﺑﻴﻦ اﻟﺨﻄﻮا ت اﻟ‬‫اﻟﺠﻤﻊ‬Afl ++: .‫ ﻫﻴﻮز‬.‫ وم‬، ‫ إﻳ ﺴﻔﻴﻠﺪ ت‬.‫ ﻫـ‬، ‫ ﻣﺎﻳﺮ‬.‫ د‬، ‫ ﻓﻴﻮراﻟﺪي‬.‫[أ‬8]
O ensive (WOOT 20). ‫ﺣﻮلﺗﻘﻨﻴﺎ ت‬
2020. url: https://www.usenix.org/conference/woot20/ offer / fioraldi. ‫أﻏ ﺴﻄ ﺲ‬USENIX ، ‫ﺟﻤﻌﻴ ﺔ‬

‫ﺗﻤ ﺖ‬
)- afl ++. url: https://github.com/AFLplusplus/AFLplusplus# fuzzing-binary-only-target ‫ﺜﻨﺎﺋﻴ ﺔ ﻓﻘﻂ‬
‫ﺗﺸﻮﻳ ﺶ اﻷ ﻫﺪاف اﻟ‬
[9]
gaasedelen/lighthouse .‫ﺒﺮﻣﺠﻴ ﺔ ﻟﻠﻤﻬﻨﺪﺳﻴﻦ اﻟﻌﻜ ﺴﻴﻴﻦ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻜﺸﻒﺗﻐﻄﻴ ﺔ اﻟ‬
‫ﻣ ﺴ‬- ‫ اﻟﻤﻨﺎرة‬.‫ﺟﺎﺳﻴﺪﻳﻠﻴﻦ‬09/02/2021). [10] ‫ﺗﻪ ﻓ ﻲ‬
‫زﻳﺎر‬

17/07/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬


)url: https: //github.com/

‫اﻷﻣﻨﻴ ﺔ‬USENIX ‫ ﻓ ﻲ ﻧﺪوة‬.‫ﺒﻴﺎﻧﺎ ت‬


‫ﺘﺪﻓﻖ اﻟ‬
‫ﺒﺎ ب ﺣ ﺴﺎس ﻟ‬
‫ ﺿ‬:‫[ﻏﺮﻳﻮن‬11] S. Gan، C. Zhang، P. Chen، B. Zhao، X. Qin، D. Wu، and Z. Chen.
2577-2594 ، 2020. ‫(اﻟﺼﻔﺤﺎ ت‬USENIX Security 20) ، ‫ﺘﺎﺳﻌ ﺔ واﻟﻌﺸﺮﻳﻦ‬
‫اﻟ‬

07/13/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬


)Apple ROM. url: https://securerom.fun ‫ ﻣﺠﻤﻮﻋ ﺔ‬.‫ﺑﻮ‬
‫[ ﻫﻴﻜﺎ‬12]

‫ﺗﻤ ﺖ‬
)com / en - gb / guide / security / seccd5016d31 / web . ‫ﺗﻔﺎﺣ ﺔ‬
2021. url: https: / / support. .‫ﺑﻞ‬
‫[ﻣﻘﺪﻣ ﺔﻷﻣﻦ ﻣﻨﺼ ﺔ آ‬13]
09/02/2021). ‫اﻟﺰﻳﺎرة ﻓ ﻲ‬

51
Machine Translated by Google

‫ﻓﻬﺮس‬ 52

٪ 20Joshua٪ 20'p0sixninja '٪ 20Hill٪ 20-٪ 20SHAttered٪ 20Dreams.pdf .‫ﺗﺮوم ﻻﻧﺪ‬


‫ﺑﻮ‬‫ ﻣﻐﺎﻣﺮا ت ﻓ ﻲ‬:‫ أﺣﻼم ﻣﺤﻄﻤ ﺔ‬.‫[ﺟﻮﺷﻮا ﻫﻴﻞ‬14]
12/14/2020). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)HITBSecConf2013. 2013. url: http://conference.hitb.org/hitbsecconf2013kul/materials/D2T1٪20-

102412/0100 / Privilege-and-Exception-levels . ‫ذراع‬AArch64. url: https: / / developer. ‫ﺜﻨﺎء‬


‫ﺘ‬‫ ﻧﻤﻮذج اﺳ‬:‫ﺗﻌﻠﻢ اﻟﻌﻤﺎرة‬
[15]
08/23/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)com / documents /

Technologeeks.com ، 2020. .‫ وﺿﻊ اﻟﻨﻮاة‬:‫ﺜﺎﻧ ﻲ‬


‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺘﺨﺰﻳﻦ اﻟﺪاﺧﻠﻴ ﺔ ﻟﻨﻈﺎم اﻟ‬
‫ *وﺣﺪة اﻟ‬.‫ ﻟﻴﻔﻴﻦ‬.‫[ج‬16]

‫ﺘﺨﺪام ﻣﺼﺎدﻗ ﺔ ﻣﺆﺷﺮ‬


‫ﺑﺎﺳ‬‫ﻧﺤﻮﺗﻜﺎﻣﻞ اﻟﻤﺆﺷﺮ‬PAC it up: .‫ أﺳﻮﻛﺎن‬.‫ ون‬، ‫ﺒﺮج‬
‫[إﻳﻜ‬17] H. Liljestrand، T. Nyman، K. Wang، CC Perez، J.-E.
Associ ation ، .‫ ﻛﺎﻟﻴﻔﻮرﻧﻴﺎ‬، ‫ﺘﺎ ﻛﻼرا‬
‫ﺳﺎﻧ‬177–194 ، ‫(اﻟﺼﻔﺤﺎ ت‬USENIX Security 19) ، ‫ﺜﺎﻣﻨ ﺔ واﻟﻌﺸﺮﻳﻦ‬
‫اﻟ‬USENIX Secu rity ‫ﻓ ﻲ ﻧﺪوة‬ARM.
978-1-939133-06-9. url: https://www.usenix.org/conference/ usenixsecurity19 / Presentation / liljestrand. ‫أﻏ ﺴﻄ ﺲ‬USENIX
2019. isbn:

‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)Asahilinux wiki - sw: boot. 2021. url: https://github.com/AsahiLinux/docs/ wiki / SW٪ 3ABoot .‫ﺗﻦ‬
‫ﻣﺎر‬.‫[ ﻫـ‬18]
09/15/2021).

SE-2 (4): 308-320 ، 1976. doi: 10.1109 / TSE.1976.233837. ، ‫ﺒﺮﻣﺠﻴﺎ ت‬


‫ﻋﲆ ﻫﻨﺪﺳ ﺔ اﻟ‬IEEE ‫ ﻣﻌﺎﻣﻼ ت‬.‫ﺘﻌﻘﻴﺪ‬
‫ ﻣﻘﻴﺎس اﻟ‬.‫ﺑ ﻲ‬
‫ ﻣﻜﺎ‬.‫[ ت‬19]

‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)com / #oid .‫ﻣﻌﻠﻮﻣﺎ ت‬Orange SA. url: http: / / www. OID - .‫اﻟﻤﻨﺰل‬Oid - ‫ﺘﻮدع‬
‫[ﻣ ﺴ‬20]
07/13/2020).

QEMU TCG. url: https://qemu.readthedocs.io/ ‫ﻣﻠﺤﻘﺎ ت‬QEMU. ‫[ﻣﻄﻮرو ﻣﺸﺮوع‬21]


17/07/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)en / latest / devel / tcg-plugins.html

Bootstomp: ‫[و‬22] N. Redini ، A. Machiry ، D. Das ، Y. Fratantonio ، A. Bianchi ، E.Gustafson ، Y. Shoshitaishvili ، C. Kruegel ،
2017. ‫(اﻟﺼﻔﺤﺎ ت‬USENIX Security 17) ، ‫اﻷﻣﻨﻴ ﺔ اﻟ ﺴﺎدﺳ ﺔ واﻟﻌﺸﺮون‬USENIX ‫ ﻓ ﻲ ﻧﺪوة‬.‫ﺣﻮل أﻣﺎن ﻣﺤﻤﻞ اﻹﻗﻼع ﻓ ﻲ اﻷﺟﻬﺰة اﻟﻤﺤﻤﻮﻟ ﺔ‬G.Vigna.
781-798 ،

2015/03/10/ispy-cia-campaign-steal-apples-secrets/ .‫ﺑﻞ‬
‫ﺑﺮا ت اﻟﻤﺮﻛﺰﻳ ﺔ ﻟ ﺴﺮﻗ ﺔ أﺳﺮار ﺷﺮﻛ ﺔ آ‬
‫ﺣﻤﻠ ﺔ وﻛﺎﻟ ﺔ اﻟﻤﺨﺎ‬J. Begley. ‫[و‬23] J. Scahill
09/09/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)url: https: / / theintercept.com/

07/15/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬


)2018. url: https://siguza.github.io/APRR/ .‫ﺑﺮﻳﻞ‬
‫ أ‬.‫[ﺳﻴﺠﻮزا‬24]

2007: 11-20 ، 2007. ، ‫ﺑﺎ‬


‫ﺑﻼك ﻫﺎ ت أورو‬.‫ﺒ ﺖ‬
‫ ﻛﻮﻣ ﺔ ﻓﻨﻎ ﺷﻮي ﻓ ﻲ ﺟﺎﻓﺎﺳﻜﺮﻳ‬.‫ﺗﻴﺮوف‬
‫ﺳﻮ‬.‫[أ‬25]

url: https://portal.etsi.org/CTI/ ApproachToTesting / SpecLanguages / ASN.1.htm ‫ﺘﺪوﻳﻦ اﻟﻠﻐﻮي اﻟﻤﺠﺮد واﺣﺪ‬


‫ اﻟ‬.‫[ﻏﻴﺮ ﻣﻌﺮوف‬26]
09/09/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)(asn.1).

software-could not-be-delete / .‫ﺑﻬﺪوء‬‫ﺒﺮاﻣﺞ ﻏﻴﺮ اﻟﻤﺮﻏﻮ ب ﻓﻴﻬﺎ‬


‫ﺒﻴ ﺖ اﻟ‬
‫ﺜ‬‫ﺒﻮه ﻹﻋﺎدةﺗ‬
‫"اﻟﻤﺸ‬rootkit" ‫ﺘﻴﻚ‬
‫ﺗﻜ‬Lenovo ‫ﺘﺨﺪﻣ ﺖ‬
‫ اﺳ‬.‫ﺘﺎﻛﺮ‬
‫[وﻳ‬27] Z.
09/02/2021). ‫ﺗﻤ ﺖ اﻟﺰﻳﺎرة ﻓ ﻲ‬
)2015. url: https://www.zdnet.com/article/lenovo-rootkit-ensured-its-

2020. .‫ اﻟﺼﻴﻦ‬، ‫ﺷﻨﻐﻬﺎي‬MOSEC 2020 ، ‫ورﻗ ﺔ ﻣﻘﺪﻣ ﺔ ﻓ ﻲ‬SEP. ‫ﺘﻤﻬﻴﺪ اﻵﻣﻦ ﻟﻠﻬﺠﻮم ﻣﻦ‬
‫[اﻟ‬28] H. Xu.

‫ﻟﻌﺎم‬ACM SIGSAC ‫ﺗﻤﺮ‬


‫ ﻓ ﻲ وﻗﺎﺋﻊ ﻣﺆ‬.‫ﺘﺸﻮﻳ ﺶ‬
‫ﺘﺤ ﺴﻴﻦ أداء اﻟ‬
‫ﺑﺪاﺋﻴﺎ تﺗﺸﻐﻴﻠﻴ ﺔ ﺟﺪﻳﺪة ﻟ‬‫ﺗﺼﻤﻴﻢ‬.‫ﺗ ﻲ ﻛﻴﻢ‬
‫ و‬، ‫ﺳ ﻲ ﻣﻴﻦ‬، ‫ إس ﻛﺎﺷﻴﺎ ب‬، ‫ﺑﻠﻴﻮ ﺷﻮ‬
‫[د‬29]
10.1145/3133956.3134046. .‫ﺘﺤﺪة اﻷﻣﺮﻳﻜﻴ ﺔ‬
‫ اﻟﻮﻻﻳﺎ ت اﻟﻤ‬، ‫ﺗﻜ ﺴﺎس‬، ‫داﻻس‬CCS '17 ، 2313-2328 ، ، ‫ﺗﺼﺎﻻ ت‬
‫ﺗﺮ واﻻ‬
‫ﺒﻴﻮ‬
‫ﺣﻮل أﻣﻦ اﻟﻜﻤ‬2017
Association for Computing Machinery، 2017. isbn: 9781450349468. doi: 10.1145 / 3133956.3134046. url: https://doi.org/

¨
‫أﻏ ﺴﻄ ﺲ‬USENIX Security ، ‫ ﻓ ﻲ‬.‫ﺑﺎﻟﻤﻄﻬﺮ‬‫ﻣﻮﺟﻪ‬Greybox
2020. url:
‫ﺐ‬https://
‫زﻏ‬C. Giucomsec.ethz.ch/
rida. ParmeSan:
wp-‫و‬content
H. Bos ‫و‬/K.files
Razavi
/ parmesan_sec20.pdf.
‫[و‬30] S. Osterlund
‫‪Machine Translated by Google‬‬

‫اﻟﻤﻠﺤﻖ أ‬

‫ﺧﺮﻳﻄ ﺔ ذاﻛﺮة ‪SecureROM‬‬

‫ﺒﻴﺎﻧﺎ ت اﻟﻮﺻﻔﻴ ﺔ داﺧﻞ ‪SecureROM‬‬


‫‪A.1‬اﻟ‬

‫ﺘﻠﻒ‪.‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻮﺻﻔﻴ ﺔ اﻟﻤﻮﺟﻮد داﺧﻞ ‪SecureROM ،‬واﻟﺬيﻳﻮﻓﺮ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮلﺗﺨﻄﻴﻂ اﻟﻘ ﺴﻢ اﻟﻤﺨ‬
‫ﻳﻮﺟﺪ أدﻧﺎهﺗﺼﻮر ﻟﻘ ﺴﻢ اﻟ‬

‫أﻧﺎ‬
‫‪Machine Translated by Google‬‬

‫أ ‪.2. A13‬ﺧﺮﻳﻄ ﺔ اﻟﺬاﻛﺮة اﻵﻣﻨ ﺔ‬ ‫ﺛﺎﻧ ًﻴﺎ‬

‫‪0x200‬‬ ‫ﺒﻊ واﻟﻨﺸﺮ )‪2007-2018 ، Apple Inc.‬‬


‫ﺜﻞ ‪SecureROM‬ﻟـ ‪t8030si ،‬ﺣﻘﻮق اﻟﻄ‬
‫ﺑﺎﻧﺮ )ﻣ‬

‫‪0x240‬‬ ‫ﺜﻞ )‪ROMRELEASE‬‬


‫اﻟﻨﻤﻂ )ﻣ‬

‫‪0x280‬‬ ‫ﺜﻞ )‪iBoot-4479.0.0.100.4‬‬


‫ﻋﻼﻣ ﺔ )ﻣ‬

‫‪hhhh hhh hhhh hhh hhhh hhh hhhh hhh hhhh hhh‬‬

‫‪hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh‬‬
‫ﻫﻬﻬﻬﻪ‬
‫ﻫﻬﻬﻪ‬

‫‪0x300‬‬ ‫ﺘﺔ‬
‫اﻟﻤﺆﺷﺮ إﱃ ﻻﻓ‬ ‫ﻣﺆﺷﺮ إﱃ اﻟﻨﻤﻂ‬

‫‪0x310‬‬ ‫ﻣﺆﺷﺮ ﻟﻌﻼﻣ ﺔ‬ ‫ﺑﺪء اﻟﻨﺺ‬

‫‪0x320‬‬ ‫ﻧﻬﺎﻳ ﺔ اﻟﻨﺺ‬ ‫ﺣﺠﻢ اﻟﺨﻂ‬

‫‪0x330‬‬ ‫ﺒﻴﺎﻧﺎ ت ‪RO‬‬


‫ﺑﺪءﺗﺸﻐﻴﻞ اﻟ‬ ‫ﺒﻴﺎﻧﺎ ت‬
‫ﺑﺪء اﻟ‬

‫‪0x340‬‬ ‫ﺒﻴﺎﻧﺎ ت‬
‫ﻧﻬﺎﻳ ﺔ اﻟ‬ ‫ﺑﺪاﻳ ﺔ ‪BSS‬‬

‫‪0x350‬‬ ‫ﻧﻬﺎﻳ ﺔ ‪BSS‬‬ ‫ﺒﺪأ اﻷﻛﻮام‬


‫ﺗ‬

‫‪0x360‬‬ ‫ﺣﺠﻢ اﻷﻛﻮام‬ ‫ﺘﺎك‬


‫‪EL1‬ﺳ‬

‫‪0x370‬‬ ‫ﺘﺎك‬
‫‪EL0‬ﺳ‬ ‫ﺒﺪأ ﺟﺪاول اﻟﺼﻔﺤ ﺔ‬
‫ﺗ‬

‫‪0x380‬‬ ‫ﺣﺠﻢ ﺟﺪاول اﻟﺼﻔﺤﺎ ت‬ ‫ﺣﺎرس اﻟﻜﻮﻣ ﺔ‬

‫‪A.2 A13‬ﺧﺮﻳﻄ ﺔ ذاﻛﺮة ‪SecureROM‬‬


‫ﺘﻢ ﻋﺮض ﺧﺮﻳﻄ ﺔ اﻟﺬاﻛﺮة اﻟﻜﺎﻣﻠ ﺔ ﻟـ ‪SecureROM‬ﻋﲆ ﺷﺮﻳﺤ ﺔ ‪A13‬أدﻧﺎه ﻛﻤﺮﺟﻊ‪.‬‬
‫ﻳ‬
Machine Translated by Google

‫ﺧﺮﻳﻄ ﺔ اﻟﺬاﻛﺮة اﻵﻣﻨ ﺔ‬.2. A13 ‫أ‬ ‫ﺜﺎ‬


‫ﺛﺎﻟ‬

0xffffffffffffffff

- ‫ﻏﻴﺮ ﻣﻌﻴﻦ‬-

0x240000000
0x23fffffff
‫اﻟﺬاﻛﺮة اﻟﻤﻌﻴﻨ ﺔ‬
IO ‫ﺗ ﺴﺠﻴﻼ ت‬
0x230000000
0x22fffffff

- ‫ﻏﻴﺮ ﻣﻌﻴﻦ‬-

0x19C030000
0x19C02ffff

[‫]ﻛﻮﻣ ﺔ‬

0x19C028000
0x19c027fff

- ‫ﻏﻴﺮ ﻣﻌﻴﻦ‬-

0x19c020000
0x19c01ffff

[‫]ﻛﻮﻣ ﺔ‬

0x19c01c000
0x19c01bfff

.bss

0x19c00d100
0x19c00d0ff

‫ﺑﻴﺎﻧﺎ ت‬
.

0x19c00c000
0x19c00bfff

‫ﺟﺪاول اﻟﺼﻔﺤﺎ ت‬

0x19c000000
0x19bffffff

- ‫ﻏﻴﺮ ﻣﻌﻴﻦ‬-

0x100030000
0x10002ffff

‫ﻧﺺ‬.

0x100000000
‫‪Machine Translated by Google‬‬

‫ﻣﻠﺤﻖ ب‬

‫ﻣﻮاﺻﻔﺎ تﺗﻨ ﺴﻴﻖ ‪IMG4‬‬

‫ﺗﻨ ﺴﻴﻖ ‪B.1 SET‬‬

‫ﺘﺎح ‪ ،‬ﻣﺸﻔﺮ ﻓ ﻲ ﻋﻼﻣ ﺔ اﻟﻌﻨﺼﺮ ‪ ،‬وﻗﻴﻤ ﺔ‬


‫ﺘﻮي ﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ ‪SET‬ﻋﲆ ﻣﻔ‬
‫ﺑﻠ ﺔ ﻟﻨﻮع ﻣﻦ اﻟﻘﺎﻣﻮس ‪ ،‬ﺣﻴ ﺚﻳﺤ‬
‫ﺜﻴﺮ ﻣﻦ ﻗﻴﻢ ‪ IMG4‬ﻫ ﻲ ‪ASN.1 SET ،‬اﻟﻤﻘﺎ‬
‫اﻟﻜ‬
‫ﺑﻪ ‪،‬‬‫ﺑﻌ ﺔ أﺣﺮف ‪-‬ﻋﻦ ﻃﺮﻳﻖﺗﺤﻮﻳﻞ ﻛﻞ ﺣﺮف إﱃ ﻗﻴﻤ ﺔ ‪ASCII‬اﻟﺨﺎﺻ ﺔ‬
‫ﺒﺎرة ﻋﻦﺳﻠ ﺴﻠ ﺔ ﻣﻜﻮﻧ ﺔ ﻣﻦ أر‬
‫ﺘﺎح ‪-‬و ﻫﻮ ﻋ‬
‫ﺘﻢﺗﺮﻣﻴﺰ اﻟﻤﻔ‬
‫ﺘﻮﻳﺎ ت اﻟﻌﻨﺼﺮ‪.‬ﻳ‬
‫ﺑﻠ ﺔ ‪ ،‬ﻣﺸﻔﺮة ﻓ ﻲ ﻣﺤ‬
‫ﻣﻘﺎ‬
‫ﺘﺎح ‪MANP‬أوﻻ ً إﱃ ‪0x4d‬و ‪0x41‬و ‪0x4e‬و ‪0x50‬‬
‫ﺛﻢ إﱃ ‪8 | 0x50 = 1296125520.‬‬ ‫ﺘﻢﺗﺤﻮﻳﻞ اﻟﻤﻔ‬
‫ﺜﺎل ‪،‬ﻳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑ ﺖ‪ .‬ﻋﲆﺳ‬
‫ﺘﺸﻜﻴﻞ رﻗﻢ ‪32‬‬
‫ﺛﻢﺗﺠﻤﻴﻌﻬﺎ ﻟ‬
‫ﺑﺎﻳ ﺖ ﻓ ﻲ اﻟﻤﻮاﺻﻔﺎ ت أدﻧﺎه‪.‬‬‫ﺑﻄﻮلﻳﺼﻞ إﱃ‬‫ﺗﻤ ﺖﺗ ﺴﻤﻴ ﺔ ﻣﻌﻜﻮس ﻫﺬه اﻟﻌﻤﻠﻴﺎ ت‬
‫<< ‪0x4d << 24 | 0x41 << 16 | 0x4e‬‬

‫ﺘﻨ ﺴﻴﻖ ‪IMG4‬‬


‫‪B.2‬اﻟﻤﻮاﺻﻔﺎ ت اﻟﻜﺎﻣﻠ ﺔ ﻟ‬

‫ﺘﻨ ﺴﻴﻖ ‪IMG4.‬‬


‫ﻳﻮﺟﺪ أدﻧﺎه ﻣﻮاﺻﻔﺎ ت ‪ASN.1‬اﻟﻜﺎﻣﻠ ﺔ ﻟ‬

‫ﺑﺪأ‬
‫= ‪IMG4Format DEFINITIONS ::‬ا‬

‫))‪ObjectID :: = IA5String (SIZE (4‬‬

‫‪SEQUENCE { type INTEGER ، IV‬‬


‫= ‪Keybag ::‬ﺳﻠ ﺴﻠ ﺔ ‪OCTET ،‬‬
‫ﺋﻴ ﺴﻴ ﺔ‬
‫ﺳﻠ ﺴﻠ ﺔ ‪OCTET‬اﻟﺮ‬

‫}‬

‫ﺗﻴﺢ‬
‫ﺒ ﺔ اﻟﻤﻔﺎ‬
‫ﺗ ﺴﻠ ﺴﻞ ﺣﻘﻴ‬
‫= ‪Keybags ::‬‬

‫‪ }ManifestBytes :: = SEQUENCE‬ﻣﻌﺮف‬
‫اﻟﻜﺎﺋﻦ ‪ObjectID ،‬اﻟﻘﻴﻤ ﺔ ‪OCTET STRING‬‬

‫}‬

‫‪ }ManifestInt :: = SEQUENCE‬ﻣﻌﺮف‬
‫اﻟﻜﺎﺋﻦ ‪ObjectID ،‬اﻟﻘﻴﻤ ﺔ ﺻﺤﻴﺤ ﺔ‬

‫}‬

‫ﺗ ﺴﻠ ﺴﻞ {‬
‫ﺒﻮل ‪= ::‬‬
‫ﺘ‬‫ﻣﺎﻧﻴﻔﻴ ﺴ‬
‫‪objectID ObjectID ،‬ﻗﻴﻤ ﺔ‬
‫‪BOOLEAN‬‬

‫ﺑﻌﺎ‬
‫را‬
Machine Translated by Google

IMG4 ‫اﻟﻤﻮاﺻﻔﺎ ت اﻟﻜﺎﻣﻠ ﺔ ﻟﺸﻜﻞ‬.2. ‫ب‬ ‫ﻓﻲ‬

‫ﻣﻠﺨﺺ‬PayloadManifestInfo :: = SEQUENCE { objectID ObjectID، content SET { - long_to_bytes (1145525076) ==


EXPLICIT ManifestBytes OPTIONAL - long_to_bytes (1162560857) == " EKEY785Key] ] EXPLICIT ManifestBool
[[PRIVATE] 1163085 ‫ﺘﺎج‬‫اﻟﻔﻌﺎل ﻟﻺﻧ‬- long_to_bytes (1162891855) == "EPRO" ‫ﺘﻴﺎري‬
‫"اﻻﺧ‬DGST" [[PRIVATE] 1145525076 ]
1162891855] EXPLICIT ManifestBool OPTIONAL - long_to_bytes (1163085123) == "ESEC" EffectiveSecurityMode
[ [ PRIVATE]

}
}

( 1936881262 ) == "srvn" srvn [[ PRIVATE ] 1936881262 ] EXPLICIT ManifestBytes OPTIONAL - long_to_bytes = 109
longyt52 ) == "snon" sepNonce [[PRIVATE] 1936617326] EXPLICIT ManifestBytes OPTIONAL - long_to_bytes
1396985677] EXPLICIT ManifestInt OPTIONAL - long_to_bytes ( 1885565552) == " PCrp " pcrp [ [ PRIVATE ]
PRIVATE EXPLICIT ManifestInt OPTIONAL - long_to_bytes (1396985677) == "SDOM" securityDomain [[PRIVATE]
CertificateSecurityMode [[PRIVATE] 1129530691 ] EXPLICIT ManifestBool OPTIONAL - long_to_bytes ( 1162037572)
[[PRIVATE] 1129337423] EXPLICIT ManifestBool OPTIONAL - long_to_bytes (1129530691) ==" CSEC "
( 1128810832) == " CHIP " chipID [[ PRIVATE ] 1128810832] EXPLICIT ManifestInt longt 1129 " CertificateProduction
(1128616015) == "CEPO" CertificateEpoch [[PRIVATE ] 1128616015] EXPLICIT ManifestInt OPTIONAL - long_to_bytes
ManifestBytes OPTIONAL - long_to_bytes (1112494660) == "BORD" boardID [[PRIVATE] 1112TION46 long_to_bytes
= SEQUENCE { - long_to_bytes ( 1112425288) == "BNCH" bootNonceHash [[PRIVATE] 1112425288 ] EXPLICIT
‫ﺘﻴﺎرﻳ ﺔ‬
‫ﺑﻴﺎن ﺻﺮﻳﺤ ﺔ اﺧ‬‫أداة‬1095585357] [‫]ﺧﺎص‬MANP ::

ObjectID، version IA5String،


{ objectID ObjectID، payloadID
( ‫ﺘﻮﻳﺎ ت‬
‫ﻣﺤ‬IM4P :: = SEQUENCE
STRING، keybags OCTET STRING
OCTET

‫ﺗﻴﺢ‬
‫ﺘﻮي ﻋﲆ أﻛﻴﺎس ﻣﻔﺎ‬
‫ﺗﺤ‬
{ ‫ﺑﻮاﺳﻄ ﺔ‬‫ﺗﻢﺗﺮﻣﻴﺰه‬

(2) ‫ﺘﻖ‬
‫ﻣﺸ‬iso-itu-t asn1 (1) -‫ﺘﺮك‬‫ﻣﺸ‬
(1) ‫ﺗﺸﻔﻴﺮ ﻣﻤﻴﺰ‬ber

}
)
}

{ ‫ﺗ ﺴﻠ ﺴﻞ‬
= :: ‫ﻣﺎﻧ ﺐ‬
Machine Translated by Google

IMG4 ‫اﻟﻤﻮاﺻﻔﺎ ت اﻟﻜﺎﻣﻠ ﺔ ﻟﺸﻜﻞ‬.2. ‫ب‬ ‫ﻧﺤﻦ‬

‫ﺧﺼﺎﺋﺺ‬objectID ObjectID، content SET { - long_to_bytes (1296125520) ==


(1768056163) == "ibec" ibec [[PRIVATE] 1768056163] EXPLICIT PayloadManifestInfo
"MANP" [[PRIVATE] 1296125520] EXPLICIT MANP - long_to_bytes

== "MANB" body [[PRIVATE] 1296125506] EXPLICIT MANB


INTEGER، content SET { - long_to_bytes (1296125506)
IM4M :: = SEQUENCE { objectID ObjectID، version

‫اﻟﻘﻴﺎﺳﻴ ﺔ‬ASN.1 X.509 ‫اﻟﺸﻬﺎدة ﻫ ﻲ ﺷﻬﺎدة‬OCTET ، - ‫ﺗﻮﻗﻴﻊﺳﻠ ﺴﻠ ﺔ‬


‫ﺗ ﺴﻠ ﺴﻞ اﻟﺸﻬﺎدة‬
}

‫ﺑﻴﺎن اﻟﺤﻤﻮﻟ ﺔ‬
IMG4 :: = SEQUENCE { objectID IA5String ،
IM4P [0] EXPLICIT IM4M OPTIONAL

‫ﻧﻬﺎﻳ ﺔ‬
Machine Translated by Google

C ‫اﻟﻤﻠﺤﻖ‬

‫ﺑﻌﺪ ﻫﺎ‬
‫ﺒﻞ اﻟﻤﻘﺎرﻧ ﺔ و‬
‫ﺘﺮة أﻃﻮل ﻗ‬
‫ﻓ‬

‫دون أي‬IDA ‫ﺒﺎﺷﺮة ﻣﻦ‬


‫ﺒﻬﺎ ﻣ‬
‫ ﻋﲆ اﻟﻴ ﺴﺎرﺗﻮﺟﺪ اﻟﻮﻇﻴﻔ ﺔ ﻛﻤﺎﺗﻢﺳﺤ‬.‫ﺒﺮ أدﻧﺎه‬
‫ ﻧﻌﺮض داﻟ ﺔ أﻛ‬، ‫ﺘﻼف اﻟﺬيﺗﻢ إﺟﺮاؤه‬
‫ﺑ ﺖ ﻟﻼﺧ‬
‫ﺜﺎ‬
‫ﺘﺤﻠﻴﻞ اﻟ‬
‫ﻹﻋﻄﺎء ﻓﻜﺮة أﻓﻀﻞ ﻋﻦ ﺣﺠﻢ اﻟ‬
.‫ﺘﻨﻈﻴﻒ‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻬﻨﺪﺳ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ واﻟ‬
‫ﺑﻌﺪ اﻟﻜ‬‫ ﻋﲆ اﻟﻴﻤﻴﻦﺗﻮﺟﺪ اﻟﻮﻇﻴﻔ ﺔ‬.‫ﺗﻌﺪﻳﻼ ت‬

__int64 a5) ،(‫ﺑﺎﻃﻞ‬


)int a1، __int64 a2، _QWORD * a3، __int64
__int64
(** a4)
Img4DecodePerformTrustEvaluatation
‫__)ﻏﻴﺮ ﻣﻮﻗﻌ ﺔ‬int64 __fastcall sub_100013DEC
(
،! image4_wrapper_context * wrapper_ctxt) ، ‫اﻟﻨﻮع اﻟﻔﻌﻠ ﻲ‬uint32_t
،! * validate_props ، Img4DecodeImplementation * hasher ،
{ img4 * img4 ، img4_property_callbacks ،!
v18 [3] ‫ ؛‬// [xsp + 20 // ‫ﺑﺎﻃﻞ( ؛‬
)x0 __int64 (* v11) // ‫ﺘﻴﺠ ﺔ ؛‬
‫__ﻧ‬int64
[xbp-80h] BYREF __int64 v17 ‫ ؛‬// [xsp + 18h] [xbp-78h] BYREF __int128
char v15 ‫ ؛‬// [xsp + Fh] [xbp-81h] BYREF __int64 v16 ‫ ؛‬// [xsp + 10h]
* v12) (__ int64، __int64) ‫ ؛‬،! // x8 __int64 v13 ‫ ؛‬// x8 int v14 ‫ ؛‬// w26 {
[xbp-70h] [‫ﺳﺎﻋ ﺔ‬x9 __int64 (__fastcall x0 hash_info * hasher_info ‫ ؛‬// x9 // ‫ﺘﻴﺠ ﺔ ؛‬
‫__ﻧ‬int64

DERByte * manifest_der_data ‫ ؛‬// x0 __int64 (__fastcall

،! (img4 *، image4_wrapper_context *) ‫ ؛‬// x8


،! * get_integrated_manifest_hash)
،! BYREF w26 bool payload_exists ‫ ؛‬// [xsp + Fh] [xbp-81h]
unsigned __int64 hash_size‫ ؛‬// x3 int should_verify_properties ‫ ؛‬//
17 = 0LL ‫ ؛‬memset (v18 ، 0 ، sizeof (v18)) ‫اﻹﺻﺪار ؛‬16 = 0LL ‫اﻹﺻﺪار ؛‬ _BYTE * Integrated_hash ‫ ؛‬// x8
6LL ‫ﺘﻴﺠ ﺔ ؛‬
‫ﺘﻴﺠ ﺔ ؛ اﻟﻨ‬
‫ ! (إرﺟﺎع اﻟﻨ‬a3 ) ‫ﺘﻴﺠ ﺔ ؛ إذا‬
‫ ! (إرﺟﺎع اﻟﻨ‬a2 ) ‫ =إذا‬6LL ‫ﺘﻴﺠ ﺔ ؛‬
‫اﻟﻨ‬
‫ُﺮﺟﻊ اﻟﻨ‬
( ! * a4 ) ‫ﺘﻴﺠ ﺔ ؛ إذا‬ ‫ﺗ‬
( ! a4 || ! * a3 ) ‫=إذا‬ ،! BYREF

[xsp + 10h] ،! [xbp-80h] BYREF // ‫ورﻗ ﺔ‬DERSize

[xbp-78h] [‫ﺳﺎﻋ ﺔ‬DERByte * LeafPubKey ‫ ؛‬// [xsp + 18


،! BYREF

DERDecodedInfoFind found_manifest_item [2] ،


،! // [xsp + 20h] [xbp-70h] BYREF
pubKey ‫ ؛‬// 0: x0.16 const DERItem toVerify ‫ ؛‬// 0: × 4.16
const DERItem

‫ﺒﻨﺎﻧﻴ ﺔ ؛‬
‫ﻟﻴﺮة ﻟ‬6 ‫اﻟﻌﻮدة‬ 0 ،! sizeof (found_manifest_item)) ‫؛‬
( ! a4 [3] ) ‫إذا‬ = 0LL ‫ ؛‬memset (found_manifest_item،
‫ﺒﻨﺎﻧﻴ ﺔ ؛‬
‫ﻟﻴﺮة ﻟ‬6 ‫اﻟﻌﻮدة‬ LeafPubKeyLen = 0LL ‫ ؛‬LeafPubKey
( ! a4 [1] ) ‫إذا‬
‫ﺒﻨﺎﻧﻴ ﺔ ؛‬
‫ﻟﻴﺮة ﻟ‬6 ‫اﻟﻌﻮدة‬ ‫ ! (إرﺟﺎع‬img4 ) ‫ =إذا‬6LL ‫ﺘﻴﺠ ﺔ ؛‬
‫اﻟﻨ‬
‫ ! (إرﺟﺎع‬a4 [2] ) ‫إذا‬ ‫ُﺮﺟﻊ‬
‫ﺗ‬
( ! validate_props ) ‫ﺘﻴﺠ ﺔ ؛ إذا‬
‫اﻟﻨ‬
6LL‫؛‬ = 6LL ‫ﺘﻴﺠ ﺔ ؛‬
‫ﺘﻴﺠ ﺔ ؛ اﻟﻨ‬
‫اﻟﻨ‬
( ! v11 || ! * (_ QWORD *) (a2 + 24) ) ‫إذا‬11 = a4 [4] ‫اﻹﺻﺪار ؛‬

‫ﺒﻨﺎﻧﻴ ﺔ ؛‬
‫ﻟﻴﺮة ﻟ‬6 ‫اﻟﻌﻮدة‬

‫ﺑﻌﺎ‬
‫ﺳﺎ‬
Machine Translated by Google

‫ﺛﺎﻣﻨﺎ‬

() ‫ﺘﻴﺠ ﺔ ؛‬
‫اﻟﻨ‬7LL ‫ﺗﺮﺟﻊ ؛‬
( * (_ QWORD *) v11 > 0x30uLL ) ‫إذا ﻛﺎﻧ ﺖ‬ ( ! hasher || ‫إذا‬
‫ﺘﻴﺠ ﺔ ؛‬
‫ﺘﻴﺠ ﺔ ( إرﺟﺎع ﻧ‬
‫_( (ﻧ‬DWORD) ‫ *( =إذا‬a4) ‫ﺘﻴﺠ ﺔ إرﺟﺎع ؛‬
‫ﻧ‬،! ! validate_props-> validate_property )

‫إذا ﻛﺎن‬6LL ‫ُﺮﺟﻊ ؛‬


‫ﺗ‬
( ! hasher-> do_ccdigest ) ‫إذا‬
6LL ‫ ! (ﻳﻌﻮد ؛‬hasher-> check_payload_properties )
(_ BYTE *) (a2 + 1) = 1 ‫ ؛‬v12 = (__int64 (__fastcall *) (__ int64 ،
*
,! __int64))a3[1]; ( ! hasher-> parse_cert_chain ) ‫إذا‬
*) a4 [4]) ) ‫ﺑﺪون إﺷﺎرة‬
)( v12 && (v13 = v12 (a2، a5))! = 0 && ! ‫إذا‬ ‫ﺒﻨﺎﻧﻴ ﺔ ؛‬
‫ﻟﻴﺮة ﻟ‬6 ‫اﻟﻌﻮدة‬
،! int) sub_100011A6C (a2 + 328، v13، * (_ QWORD 6LL ‫ُﺮﺟﻊ ؛‬
‫ ! (ﻳ‬hasher-> check_pkcs1_sig ) ‫إذا ﻛﺎن‬
،!

{ hasher_info ) ‫إذا‬hasher_info = hasher-> hasher_info ‫؛‬


14 = 0 ‫اﻹﺻﺪار ؛‬ 6LL ‫! (إرﺟﺎع ؛‬
‫}آﺧﺮ‬

manifest_der_data = img4-> manifest_der.data ‫؛‬


{ ،!

> hash_size > 0x30uLL ) =


‫ﻛﺎن‬ ‫إذا‬6LL ‫__( ؛‬fastcall
((__int64 ‫ ! (إرﺟﺎع‬manifest_der_data ) ‫إذا‬
*) (_ QWORD ، ‫ﺘﻴﺠ ﺔ‬‫اﻟﻨ‬
،! __int64)) a4manifest_der_digest،
[1]) ( ، (‫ﺑﺎﻃﻞ‬
)_QWORDhasher_info-
، __int64 * ، >__int64
hash_size،
* ، __int64
hasher)
، __int64
‫ُﺮﺟﻊ ؛‬
‫ (ﻳ‬،hasher_info-
__int64 (**)
،! > do_ccdigest ( manifest_der_data، img4-> manifest_der.length، img4->
،! get_integrated_manifest_hash ‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة ؛ ؛‬
‫ﺘﻴﺠ ﺔ ( ﻧ‬
‫إذا ) ﻧ‬7LL ‫ ؛‬result = hasher-
*(_QWORD
img4-> did_digest = 1 ‫ ؛‬get_integrated_manifest_hash *)(a2 + 296),
= ،! validate_props- >
QWORD *) a4 [4] > 0x30uLL ) ‫ﺘﻴﺠ ﺔ ؛ إذا‬
‫ﺘﻴﺠ ﺔ ( إرﺟﺎع ﻧ‬
‫_( (ﻧ‬DWORD) ‫ _( *إذا‬QWORD *) (a2 + 304) ، & v17 ، & v16 ، a2 + 312 ، a2 + 320 ، a4 ، a5) ‫؛‬
( * (_

= ((__int64 (__fastcall *) (_ QWORD ، ‫ﺘﻴﺠ ﺔ‬


‫ﺒﻨﺎﻧﻴ ﺔ ؛ اﻟﻨ‬
‫ﻟﻴﺮة ﻟ‬7 ‫اﻟﻌﻮدة‬ ،!

Integrated_hash، hasher-> hasher_info-> hash_size) )


*) (a2 + 264)، * (_ QWORD *) (a2 + 272)، a2 + 376) ‫؛‬ = 0LL && ! memcmp (img4-> manifest_der_digest،
( (_DWORD) ‫إذا‬،! _QWORD، __int64)) * a4) ( * (_ QWORD ،! = get_integrated_manifest_hash (img4، wrapper_ctxt)) !
‫ﺘﻴﺠ ﺔ ؛‬
‫ﺘﻴﺠ ﺔ ( إرﺟﺎع ﻧ‬
‫ﻧ‬ ،! if ( get_integrated_manifest_hash && (Integrated_hash

،!

،!

(__fastcall *) (__ int64، __int64، _QWORD، _QWORD، __int64، ‫ﺘﻴﺠ ﺔ‬


‫اﻟﻨ‬ {
،! = ((__int64 should_verify_properties = 0 ‫؛‬
،! __int64)) a4 [2]) ( v17، v16، ،(‫ﺑﺎﻃﻞ‬
)_QWORD، __int64 (**) { ‫}آﺧﺮ‬
،!

> parse_cert_chain (-‫ﺋ ﺔ‬


‫ﺘﺠﺰ‬
‫ﺘﻴﺠ ﺔ =اﻟ‬
‫اﻟﻨ‬
*(_QWORD *)(a2 + 280),
*(_QWORD *)(a2 + 288), a2 + 376, ،! img4-> manifest_items.cert_chain.data ،
،!

( (_DWORD) ‫ _( *إذا‬QWORD *) a4 [4]، a4، a5) ‫؛‬


14 = 1 ‫ﺘﻴﺠ ﺔ ؛ اﻹﺻﺪار ؛‬
‫ﺘﻴﺠ ﺔ ( إرﺟﺎع ﻧ‬
‫ﻧ‬ ،! img4-> manifest_items.cert_chain.length ،
،!

cert_manifest.length، hasher، wrapper_ctxt)‫؛‬


& img4-> cert_manifest، & img4->
& LeaPubKey، & leafPubKeyLen،
( (_DWORD) ‫ =إذا‬sub_100013064 (a2، a2 + 40، a2 + ،! 56) ‫ﺘﻴﺠ ﺔ ؛‬
‫}اﻟﻨ‬
( ‫ﺘﻴﺠ ﺔ‬
‫ﻧ‬

( ‫ﺘﻴﺠ ﺔ‬
‫إذا ) ﻧ‬
‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة‬
‫ﻧ‬ ‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة‬
‫ﻧ‬
Machine Translated by Google

‫ﺗﺎﺳﻌﺎ‬

0x2000000000000011LL ، v18) ‫ﺘﻴﺠ ﺔ ؛‬


‫اﻟﻨ‬ hash_size =
،! = sub_100012F88 (a2 + 40 ، a1 | 0xE000000000000000LL ، > hasher_info-> hash_size ‫؛‬-‫ﺋ ﺔ‬
‫ﺘﺠﺰ‬
‫اﻟ‬،!
،! ‫ﺘﻴﺠ ﺔ ؛‬
‫ﺘﻴﺠ ﺔ ( إرﺟﺎع ﻧ‬
‫_( (ﻧ‬DWORD) ‫إذا‬ ( hash_size > 0x30 ) ‫إذا‬
do_ccdigest (-‫ﺋ ﺔ‬
‫ﺘﺠﺰ‬
‫ﺘﻴﺠ ﺔ =اﻟ‬
‫ﺒﻨﺎﻧﻴ ﺔ ؛ اﻟﻨ‬
‫ﻟﻴﺮة ﻟ‬7 ‫اﻟﻌﻮدة‬
>
*(_OWORD *)(a2 + 72) = *(__int128 *)((char
{ ‫إذا ) اﻹﺻﺪار‬v18 [1] + 8) ‫و ؛‬،! *) ،! img4-> manifest_items.contents.data ،
14 ) ،!

= ((__int64 (__fastcall *) (__ int64 ، ‫ﺘﻴﺠ ﺔ‬


‫اﻟﻨ‬ ،! img4-> manifest_items.contents.length ،
( (_DWORD) ‫إذا‬،! __int64)) a4 [3]) (a2، a5) ‫؛‬ ،!

‫ﺘﻴﺠ ﺔ ؛‬
‫ﺘﻴﺠ ﺔ ( إرﺟﺎع ﻧ‬
‫ﻧ‬ manifest_item_digest، hash_size، hasher) ‫؛‬
‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة ؛‬
‫ﺘﻴﺠ ﺔ ( ﻧ‬
‫إذا ) ﻧ‬img4->
( * (_ QWORD *) a4 [4] > 0x30uLL ) ‫}إذا‬

‫ﺒﻨﺎﻧﻴ ﺔ ؛‬
‫ﻟﻴﺮة ﻟ‬7 ‫اﻟﻌﻮدة‬
( (_DWORD) ‫ =إذا‬sub_100013144 (a2، & v15) ‫ﺘﻴﺠ ﺔ ؛‬
‫اﻟﻨ‬ pubKey.data = leafPubKey ‫ ؛‬toVerify.length =
15 ) { ‫ﺘﻴﺠ ﺔ ؛ إذا ) اﻹﺻﺪار‬
‫ﺘﻴﺠ ﺔ ( إرﺟﺎع ﻧ‬
‫ﻧ‬ pubKey.length = leafPubKeyLen ‫؛‬

> hasher_info-> hash_size ‫ ؛‬toVerify.data =-‫ﺋ ﺔ‬


‫ﺘﺠﺰ‬
‫اﻟ‬،!

= ((__int64 (__fastcall *) (_ QWORD ، ‫ﺘﻴﺠ ﺔ‬


‫اﻟﻨ‬ toVerify ، hasher) ‫ ؛‬-‫ﺋ ﺔ‬
‫ﺘﺠﺰ‬
‫ﺘﻴﺠ ﺔ =اﻟ‬
‫اﻟﻨ‬،! img4-> manifest_item_digest ‫؛‬
،! * a4) ( (((‫ﺑﺎﻃﻞ‬
)_QWORD، __int64، _QWORD، __int64 (**) ‫ >إذا‬check_pkcs1_sig (pubKey ، img4-> manifest_items.signature ،
،! ،! ‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة ؛‬
‫ﺘﻴﺠ ﺔ ( ﻧ‬
‫)ﻧ‬
*(_QWORD *)(a2 + 8), ،!

*(_QWORD *)(a2 + 16), a2 + 184,

( ‫ﺘﻴﺠ ﺔ‬
‫_( (ﻧ‬DWORD) ‫ _( *إذا‬QWORD *) a4 [4]، a4) ‫؛‬ should_verify_properties = 1 ‫؛‬
}
= ‫ﺘﻴﺠ ﺔ‬
‫اﻟﻨ‬

‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة‬
‫ﻧ‬ ،! (img4، & img4-> man_b، & img4-> man_p) ‫؛‬
*(_BYTE *)a2 = 1; ،! ( ‫ﺘﻴﺠ ﺔ‬
‫إذا ) ﻧ‬DERImg4DecodeParseManifestProperties_0
‫ﺘﻴﺠ ﺔ‬
‫ =إذا ﻛﺎﻧ ﺖ اﻟﻨ‬sub_100013C14 (a2 + 56، 0LL، * a3،، ! a5) ‫ﺘﻴﺠ ﺔ ؛‬
‫}اﻟﻨ‬
‫ﺘﻴﺠ ﺔ‬
‫ﻧ‬sub_100013C14 (a2 + 72، 1LL، * a3،، ! a5) ‫ _( ! (إرﺟﺎع ؛‬DWORD) ) ‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة‬
‫ﻧ‬
‫اﻟﻌﻮدة‬ ‫ =)اﻟﻨﻮع اﻟﻔﻌﻠ ﻲ‬DERFindInSequence ( & img4-> man_b، ‫ﺘﻴﺠ ﺔ‬
‫اﻟﻨ‬
| ،! (ASN1_PRIVATE | ASN1_CONSTRUCTED)) ،

،!

} | ASN1_SET ، found_manifest_item) ،
ASN1_CONSTRUCTED
found_manifest_item [1] .content‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة ؛ ؛‬
‫ﺘﻴﺠ ﺔ ( ﻧ‬
‫إذا ) ﻧ‬
{ ‫إذا‬img4-> image_manifest = ،!
( should_verify_properties )

= ‫ﺘﻴﺠ ﺔ‬
‫اﻟﻨ‬

،! ‫إذا‬hasher-> check_payload_properties (img4، wrapper_ctxt) ‫؛‬


،! ‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة ؛‬
‫ﺘﻴﺠ ﺔ ( ﻧ‬
‫)ﻧ‬

( hasher-> hasher_info-> hash_size > ‫}إذا‬

،! 0x30uLL )
Img4DecodePayloadExists_0 (img4 ، ‫ﺘﻴﺠ ﺔ‬
‫ﺒﻨﺎﻧﻴ ﺔ ؛ اﻟﻨ‬
‫ﻟﻴﺮة ﻟ‬7 ‫اﻟﻌﻮدة‬
=
( ‫ﺘﻴﺠ ﺔ‬
‫إذا ) ﻧ‬payload_exists) ‫و ؛‬،!
Machine Translated by Google

{ ‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة إذا‬


‫ﻧ‬
( payload_exists )

> do_ccdigest (-‫ﺋ ﺔ‬


‫ﺘﺠﺰ‬
‫ﺘﻴﺠ ﺔ =اﻟ‬
‫اﻟﻨ‬
hasher-> hasher_info-> hash_size،
payload_der.length، img4-> payload_der_hash،
img4-> payload_der.data، img4->

،!

( ‫ﺘﻴﺠ ﺔ‬
‫ﺋ ﺔ( ؛ إذا ) ﻧ‬
‫ﺘﺠﺰ‬
‫اﻟ‬

> Verified_stuff = 1 ‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة ؛‬


‫ﻧ‬
img4-
= ‫ﺘﻴﺠ ﺔ‬
‫}ﻧ‬

،! Img4DecodeEvaluateDictionaryProperties_0 (& img4-> man_p ،


،! 0LL، validate_props-> validate_property، wrapper_ctxt) ‫؛‬
،!

( ‫ﺘﻴﺠ ﺔ‬
‫إذا ! (ﻧ‬
‫ﻳﻌﻮد‬
( 0_‫ اﻟﺨﺼﺎﺋﺺ‬، ‫اﻟﻘﺎﻣﻮس‬،! Img4DecodeEvaluate ،
،!

& img4-> image_manifest ،


، ‫ﺒﻨﺎﻧﻴ ﺔ‬
‫ﻟﻴﺮة ﻟ‬1

،! Validate_props-> validate_property ،
،!

wrapper_ctxt) ‫؛‬
‫ﺘﻴﺠ ﺔ اﻟﻌﻮدة‬
‫ﻧ‬
}
‫‪Machine Translated by Google‬‬

‫اﻟﻤﻠﺤﻖ د‬

‫ﺘﻐﻄﻴ ﺔ اﻟﻜﺎﻣﻠ ﺔ‬
‫ﻣﻌﻠﻮﻣﺎ ت اﻟ‬

‫ﺛﻨﺎءﺗﺸﻮﻳ ﺶ ‪IMG4‬و ‪USB.‬‬


‫ﺘ ﻲﺗﻢﺗﺤﻘﻴﻘﻬﺎ أ‬
‫ﺒﺮ ﺟﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ اﻟﻤﻐﻄﺎة اﻟ‬
‫ﻳﻮﺟﺪ أدﻧﺎه ﺟﺪولﺗﻐﻄﻴ ﺔ ﻋ‬

‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫ذراع ﻗﺮاءة ‪cntpct‬‬ ‫‪3/3 1/5 1/27 1/1 4/4 1/2 4/5 2/3 14/18 3/4 20/22‬‬ ‫‪ 12‬ب ‪1‬‬
‫ذراع ﻧﻈﻴﻔ ﺔ ‪dcache‬‬
‫‪1/1‬‬
‫‪13/14‬‬
‫‪8/10‬‬
‫‪17/17‬‬
‫‪37/40‬‬
‫‪109/110‬‬
‫‪1/14/5‬‬
‫‪9/93/5‬‬
‫‪30/31‬‬
‫‪1/123/28‬‬
‫‪3/3‬‬
‫‪5/75/6‬‬
‫‪1/1‬‬
‫‪38/40‬‬
‫‪79/80‬‬
‫‪1/65/28‬‬
‫‪1/1‬‬
‫‪4/61/6‬‬
‫‪19‬‬
‫‪35/59‬‬
‫‪/1/1‬‬
‫‪75‬‬ ‫‪ 4‬ب‪1‬‬

‫ﻣﻨﺼ ﺔ ‪irq‬‬ ‫‪77/85‬‬ ‫‪0 16/16‬‬


‫‪172/323‬‬
‫‪3/3‬‬ ‫‪1/1 6/6‬‬‫‪4/5‬‬
‫‪59/154264/581‬‬
‫‪17/19 10 / 12 52/57‬‬
‫‪14/21 33/72‬‬
‫‪55/80‬‬ ‫‪ 212‬ب ‪4‬‬
‫‪rGPIO PINSTRAPS VALID CFG 0‬‬ ‫‪102'047‬‬
‫‪1/1 2/3 1/1 1/1 74 1/12 2/48 1/1 4/4 16/18‬‬ ‫‪ 24‬ب ‪1‬‬

‫ﺋﻴ ﺔﺗﻮﻗﻊ‬
‫‪image4‬اﻟﺤﺼﻮل ﻋﲆ ﺟﺰ‬ ‫‪155'084‬‬ ‫‪4'765'040‬‬ ‫‪ 348‬ب ‪12‬‬

‫دﻳﺮ‬ ‫‪719'343‬‬ ‫‪ 64‬ب ‪2‬‬


‫ﺘﻘﻴﻴﺪ‬
‫اﻟ‬ ‫‪294'371‬‬ ‫‪ 76‬ب ‪2‬‬

‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ ﺧﺎﺻﻴ ﺔ رد‬


‫ﺗﻮﻗﻊ ‪ia5string image4‬اﻟ‬ ‫‪der‬‬
‫‪294'371‬‬ ‫‪ 228‬ب ‪6‬‬

‫ﺘﻜﺎﻣﻞ‬
‫ﺑﻴﺎن ﻣ‬‫ﺋﺔ‬
‫ﺗﺼﺎل ‪interposer2'577 30'785‬اﻟﺤﺼﻮل ﻋﲆﺗﺠﺰ‬ ‫اﻻ‬ ‫‪ 1468‬ب ‪43‬‬
‫‪93'915 93'915 1'205‬‬ ‫‪ 24‬ب ‪1‬‬

‫ﺗﺤﻤﻴﻞ ‪image4‬‬ ‫‪ 2368‬ب ‪94‬‬

‫ﺗﺤﻘﻖ ﻣﻦ رﻗﻢ‬
‫ﺗﺤﻤﻴﻞ ‪Copyobject image4‬‬
‫‪image4‬‬ ‫‪ 340‬ب ‪8‬‬

‫ﺗﺤﻘﻖ ﻣﻦ اﻟﻌﻼﻗ ﺔ اﻟﻤﻨﻄﻘﻴ ﺔ‬


‫اﻟﻌﻼﻗ ﺔ ‪image4‬‬ ‫‪ 160‬ب ‪6‬‬
‫‪890‬‬ ‫‪ 124‬ب ‪2‬‬
‫‪10000658C‬اﻟﻔﺮﻋ ﻲ‬ ‫‪241‬‬ ‫‪ 160‬ب ‪3‬‬

‫ﺘﺨﺰﻳﻦ اﻟﻤﺆﻗ ﺖ ﻟﻠﻤﻨﺼ ﺔ‬


‫ﻋﻤﻠﻴ ﺔ ذاﻛﺮة اﻟ‬ ‫‪74‬‬ ‫‪ 300‬ب ‪17‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ أﻋﻼم ‪iboot‬‬ ‫‪8'132‬‬ ‫‪ 68‬ب ‪1‬‬

‫ﺘﺞ ‪usb‬‬
‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﻌﺮف اﻟﻤﻨ‬ ‫‪9'889‬‬ ‫‪ 36‬ب ‪1‬‬

‫ﺘﺠﺎ ت ‪USB‬‬
‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆﺳﻠ ﺴﻠ ﺔ ﻣﻨ‬ ‫‪41'678‬‬ ‫‪ 12‬ب ‪1‬‬

‫ﺘ ﺴﻠ ﺴﻠ ﻲ ‪usb‬‬
‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆﺳﻠ ﺴﻠ ﺔ اﻟﺮﻗﻢ اﻟ‬ ‫‪8'169‬‬ ‫‪ 328‬ب ‪3‬‬
‫ﺋ ﺔ ﺣ ﺴﺎ ب‬
‫ﺗﺠﺰ‬ ‫‪9'926‬‬ ‫‪ 240‬ب ‪2‬‬

‫ﺜﺮ أﺧﺮى‬
‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆﺳﻠ ﺴﻠ ﺔ ‪USB‬أﻛ‬ ‫‪8'169‬‬ ‫‪ 444‬ب ‪7‬‬

‫ﺘﻬﻠﻚﺗﻘﺮﻳﺮ ‪nonce‬ﻻ‬
‫اﻟﻨﻈﺎم اﻷﺳﺎﺳ ﻲﺗ ﺴ‬ ‫‪9'889‬‬ ‫‪ 112‬ب ‪1‬‬

‫ﻳﻮﺟﺪ ﺻﻮرةﺗﻤﻬﻴﺪ‬ ‫‪9'889‬‬ ‫‪ 32‬ب ‪1‬‬

‫ﺘﻘﺮﻳﺮ‬
‫ﻧﻮع ﻣﻦ اﻟ‬ ‫‪51'063‬‬ ‫‪ 32‬ب ‪1‬‬
‫‪100006E10‬اﻟﻔﺮﻋﻴ ﺔ‬ ‫‪37‬‬ ‫‪ 20‬ب ‪1‬‬

‫ﺑﻴﺎ‬
‫ﺘﺮو‬
‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ اﻻﻧ‬ ‫‪1'361‬‬ ‫‪ 108‬ب ‪1‬‬

‫ﺘﻜﺎﻣﻠ ﺔ‬
‫ﺋﺔ ﻣ‬
‫اﻟﺤﺼﻮل ﻋﲆﺗﺠﺰ‬ ‫‪8'169‬‬ ‫‪ 24‬ب ‪1‬‬

‫إﻋﺎدةﺗﻌﻴﻴﻦ اﻟﻨﻈﺎم اﻷﺳﺎﺳ ﻲ‬ ‫‪ 20‬ب ‪2‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﻌﺮف اﻟﻤﺠﻠ ﺲ‬ ‫‪ 80‬ب ‪1‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ‪nonce‬‬ ‫‪93'915 37102'047‬‬ ‫‪ 96‬ب ‪2‬‬

‫اﻟﺤﺎدي ﻋﺸﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺛﺎﻧ ﻲ ﻋﺸﺮ‬

‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫اﻟﻨﻈﺎم اﻷﺳﺎﺳ ﻲ اﻟﺤﺼﻮل ﻋﲆ ﻧﻈﺎم ﻣﻨﻔﺼﻞ ﻏﻴﺮ ﻣﺤﺪود‬ ‫‪if‬‬ ‫‪1/1‬‬


‫‪16/16‬‬
‫‪7/71/1‬‬
‫‪1/11/1‬‬
‫‪1/11/1‬‬
‫‪1/11/1‬‬
‫‪1/1‬‬ ‫‪ 4‬ب‪1‬‬

‫ﺘﻤﻬﻴﺪ‬
‫ﺑﻴﺎن اﻟ‬‫ﺋﺔ‬
‫اﻟﺤﺼﻮل ﻋﲆﺗﺠﺰ‬ ‫‪memzero‬‬ ‫‪30 2/3 5/6 1/1 8/8 3/3‬‬ ‫‪ 68‬ب ‪2‬‬

‫ﺑﻖ ﻟـ ‪428'374‬‬ ‫‪8'133 93'915‬ﻣﻨﺼ ﺔ ‪io reg‬اﻟﺤﺼﻮل ﻋﲆ ﺣﺎﻟ ﺔ ﻣﻨﻊ اﻟ‬


‫ﺘﻄﺎ‬ ‫‪93'915‬‬ ‫‪7/72/7‬‬
‫‪3/314/27‬‬
‫‪19/199'886‬‬
‫‪6/8 25‬‬
‫‪1/1/‬‬ ‫‪ 100‬ب ‪3‬‬

‫‪Mix n 93'915‬‬ ‫‪9'808 9'886 7/10 22/27‬‬ ‫‪ 24‬ب ‪1‬‬

‫ﺘﻴﻞ ‪cfg‬‬
‫اﻟﺤﺼﻮل ﻋﲆ ﻓ‬ ‫‪9 ' 889 1/1 5/5 3/5 18/21‬‬ ‫‪ 56‬ب ‪1‬‬
‫‪100008284‬ﻓﺮﻋ ﻲ‬ ‫‪212'430‬‬ ‫‪15/20‬‬
‫‪2/33/4‬‬
‫‪7/11‬‬
‫‪12/15‬‬
‫‪9'808‬‬
‫‪9'808‬‬
‫‪2/4‬‬ ‫‪ 48‬ب ‪1‬‬

‫ﺘﺎج اﻟﺤﺎﻟ ﻲ‬
‫‪chipid‬اﻟﺤﺼﻮل ﻋﲆ وﺿﻊ اﻹﻧ‬ ‫‪8'336‬‬ ‫‪37 3/4 11/12 9'931'267‬‬ ‫‪ 32‬ب ‪1‬‬

‫ﺘﺮاﺿ ﻲ‬
‫‪cfg fuse‬اﻟﺤﺼﻮل ﻋﲆ اﻻﻓ‬ ‫‪11/11‬‬
‫‪4/6 23/26‬‬
‫‪2/3 12/14‬‬
‫‪1/1 8/8‬‬
‫‪1/1 1/1‬‬
‫‪8/8‬‬ ‫‪ 56‬ب ‪1‬‬

‫ﺘﺎج اﻟﺨﺎم‬
‫‪chipid‬اﻟﺤﺼﻮل ﻋﲆ وﺿﻊ اﻹﻧ‬ ‫‪28/34 2/4 8/18 1/1 7/7‬‬ ‫‪ 32‬ب ‪1‬‬

‫‪chipid‬اﻟﺤﺼﻮل ﻋﲆ اﻟﻮﺿﻊ اﻵﻣﻦ‬ ‫‪3/5 65/93 4/6 22/33 7/9‬‬ ‫‪ 32‬ب ‪1‬‬

‫‪chipid‬اﻟﺤﺼﻮل ﻋﲆ ﻣﺠﺎل اﻷﻣﺎن‬ ‫‪1/1 6/6 1/1 5/5 1/1 1 / 1‬‬ ‫‪ 92‬ب ‪1‬‬

‫‪chipid‬اﻟﺤﺼﻮل ﻋﲆ ﻣﺠﻠ ﺲ ﻣﻌﺮف ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل‬ ‫‪1/1 4/4 1/1 4/4 1/1 2/2‬‬ ‫‪ 24‬ب ‪1‬‬
‫‪428'374102'047110'383103'804102'047102'047‬‬
‫ﻋﲆ ﻋﺼﺮ اﻷﻣﻦ‬ ‫‪1 6/6 1/1 6/6 1/1 21/21‬‬ ‫‪ 24‬ب ‪1‬‬

‫‪chipid‬اﻟﺤﺼﻮل ﻋﲆ ﻣﻌﺮف رﻗﺎﻗ ﺔ‬ ‫‪102'047‬‬ ‫‪1/1 6/6 1/1 14/14 1 /‬‬ ‫‪ 8‬ب‪1‬‬

‫‪chipid‬اﻟﺤﺼﻮل ﻋﲆ ﻣﺮاﺟﻌ ﺔ رﻗﺎﻗ ﺔ‬ ‫‪8'132‬‬ ‫‪4/4 4/4 12/12 1/1 11/11‬‬ ‫‪ 32‬ب ‪1‬‬

‫‪chipid‬اﻟﺤﺼﻮل ﻋﲆ ﻣﻌﺮف ‪ecid‬‬ ‫‪102'047‬‬ ‫‪3/7 6/15 4/10 8/21 1/1‬‬ ‫‪ 28‬ب ‪1‬‬
‫ﻧﻮﻟ ﺴﻮ ب ‪7‬‬ ‫‪10'759204‬‬ ‫‪1/1 1/1‬‬ ‫‪ 4‬ب‪1‬‬

‫ذﻋﺮ‬ ‫‪27'097204‬‬ ‫‪ 384‬ب ‪1‬‬


‫‪100009198‬ﻓﺮﻋ ﻲ‬ ‫‪8'169‬‬ ‫‪ 132‬ب ‪1‬‬

‫اﻷﻣﻦ ﺣﻤﺎﻳ ﺔ اﻟﺬاﻛﺮة‬ ‫‪37 8'169‬‬ ‫‪ 148‬ب ‪6‬‬

‫أوﺿﺎع اﻟ ﺴﻤﺎح اﻷﻣﻨﻴ ﺔ‬ ‫‪555‬‬ ‫‪ 80‬ب ‪3‬‬

‫ﺑﻬﺎ‬‫ﺛﻮق‬
‫ﻣﺠﻤﻮﻋ ﺔ اﻷﻣﺎن ﻏﻴﺮ ﻣﻮ‬ ‫ﻣﺠﻤﻮﻋ ﺔ‬ ‫‪ 36‬ب ‪1‬‬

‫اﻷﻣﻦﻳ ﺴﻤﺢ ﻟﻠﺬاﻛﺮة‬ ‫اﻷﻣﺎن‬ ‫‪ 108‬ب ‪3‬‬

‫ﺒﻴﺎن‬
‫ﺘﺎج اﻟﻔﻌﺎﻟ ﺔ ‪204204‬ﻣﺠﻤﻮﻋ ﺔ اﻷﻣﺎن ﻟ‬ ‫ﺗﺄﻣﻴﻦ اﻹﻧ‬
‫ﺘﺎج اﻟﺤﺼﻮل ﻋﲆ ﺣﺎﻟ ﺔ اﻹﻧ‬ ‫ﺗﺠﺎوز‬ ‫‪ 36‬ب ‪1‬‬

‫ﺑﻘ ﺔ ‪204‬اﻟﻌﻮدةﺗﻜﺮارﻳ ﺔ إﱃ ‪el0‬‬


‫ﺋ ﺔ ﻣﺰﻳﺞ ‪n‬ﺣﺎﻟ ﺔ ﻣﻨﻊ اﻟﻤﻄﺎ‬
‫ﺘﻤﻬﻴﺪ ﻣﺠﻤﻮﻋ ﺔ أﻣﺎنﺗﺠﺰ‬
‫اﻟ‬ ‫‪ 44‬ب ‪1‬‬
‫‪ 60‬ب ‪1‬‬
‫‪ 36‬ب ‪1‬‬
‫‪ 48‬ب ‪2‬‬
‫اﻟﻤﻬﻤ ﺔ اﻟﺤﺎﻟﻴ ﺔ‬ ‫‪ 44‬ب ‪1‬‬

‫ﺘﻈﺎر واﺣﺪة‬
‫ﺘﻈﺎر ﻗﺎﺋﻤ ﺔ اﻧ‬
‫اﻧ‬ ‫‪ 80‬ب ‪3‬‬
‫ﻗﺎﺋﻤ ﺔ إزاﻟ ﺔ اﻟﺮأس‬ ‫‪ 60‬ب ‪2‬‬
‫ﺗﻬﻴﺌ ﺔ اﻟﺤﺪ ث‬ ‫‪ 20‬ب ‪1‬‬

‫إﺷﺎرة اﻟﺤﺪ ث‬ ‫‪ 84‬ب ‪3‬‬


‫‪10000A160‬اﻟﻔﺮﻋﻴ ﺔ‬ ‫‪ 108‬ب ‪6‬‬
‫ﺘﻈﺮ اﻟﺤﺪ ث‬
‫اﻧ‬ ‫‪ 108‬ب ‪3‬‬

‫وﻗ ﺖ اﻟﻨﻈﺎم‬ ‫‪7'147'521‬‬ ‫‪ 28‬ب ‪1‬‬


‫‪10000AC64‬ﻓﺮﻋ ﻲ‬ ‫‪9'926‬‬ ‫‪ 88‬ب ‪2‬‬
‫ﺑﺪاﻳ ﺔ ‪USB‬ﻣﻊ وﺣﺪةﺗﺤﻜﻢ‬ ‫‪9'926‬‬ ‫‪ 120‬ب ‪5‬‬
‫‪USB‬ﻣﺠﺎﻧ ﻲ‬ ‫‪ 24‬ب ‪1‬‬

‫ﻣﻨﺼ ﺔ ‪init usb‬‬ ‫‪ 32‬ب ‪1‬‬

‫ﺑﻘﻴ ﺔ ‪USB‬‬ ‫‪ 64‬ب ‪2‬‬


‫‪nullsub 9‬‬ ‫‪ 4‬ب‪1‬‬
‫ﻧﻮﻟ ﺴﻮ ب ‪10‬‬ ‫‪ 4‬ب‪1‬‬
‫‪9'808 9'926‬‬
‫‪10000ADB4‬اﻟﻔﺮﻋﻴ ﺔ‬ ‫‪9'808 2'094 10'027783‬‬ ‫‪ 28‬ب ‪1‬‬
‫ﻧﻮﻟ ﺴﻮ ب ‪11‬‬ ‫‪19'697‬‬ ‫‪ 4‬ب‪1‬‬
‫ﻧﻮﻟ ﺴﻮ ب ‪12‬‬ ‫‪9'889‬‬ ‫‪ 4‬ب‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﺎﻟ ﺚ ﻋﺸﺮ‬
‫اﻟ‬

‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫‪10000‬ﻓﺮﻋ ﻲ ‪8‬‬ ‫‪93'915‬‬ ‫‪8/10 59/64 2/3 4 / 7 2/3 8/15‬‬ ‫‪ 8‬ب‪1‬‬


‫‪10000ADE0‬اﻟﻔﺮﻋﻴ ﺔ‬ ‫‪16'338‬‬ ‫‪8/8 5/5 20/20 14/22 77/96‬‬ ‫‪ 8‬ب‪1‬‬

‫اﻟﺤﺼﻮل ﻋﲆﺳﻠ ﺴﻠ ﺔ ‪mib‬‬ ‫‪10'776‬‬ ‫‪28/28107/107 7/9 42/54 3/3‬‬ ‫‪ 88‬ب ‪1‬‬

‫ﺗﺤﻤﻴﻞ اﻟﺼﻮرة‬
‫‪11'732‬‬ ‫‪36/38 5 / 5 23/23 3/3 56/56‬‬ ‫‪ 336‬ب ‪12‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ أوﺿﺎع اﻟﺼﻤﺎﻣﺎ ت‬


‫‪8'132‬‬ ‫‪3/5 22/25‬‬
‫‪21/34 69/75‬‬
‫‪6/7 24/25‬‬
‫‪3/3 14/14‬‬
‫‪13/14‬‬ ‫‪ 52‬ب ‪1‬‬
‫‪10000B300‬اﻟﻔﺮﻋﻴ ﺔ‬ ‫‪6/7 19/20 19/29 141/194 3/3 9/9 93/98 344/357‬‬ ‫‪ 8‬ب‪1‬‬

‫ﺗﻮﻗﻴ ﺖ اﻟﺤﺼﻮل ﻋﲆ اﻟﻘﺮاد ‪0‬‬ ‫‪1/1‬‬


‫‪9/13‬‬
‫‪2/33/3‬‬
‫‪9/13‬‬
‫‪9'889‬‬
‫‪2/32/3‬‬
‫‪2/3‬‬
‫‪11/16‬‬
‫‪9/13‬‬
‫‪9/13‬‬
‫‪3/4‬‬
‫‪2/3‬‬
‫‪2/3‬‬
‫‪28/32‬‬
‫‪99/13‬‬
‫‪/ 133/3‬‬
‫‪2/358/58‬‬
‫‪3/3‬‬ ‫‪9/13 3/3‬‬
‫‪13/13‬‬‫‪5/6‬‬
‫‪2/313/13‬‬
‫‪25/29‬‬
‫‪9/13‬‬ ‫‪ 4‬ب‪1‬‬
‫ﻣﺆﻗ ﺖ اﻟﻘﺮاد إﱃ ‪usecs‬‬ ‫‪7'147'504‬‬
‫‪1/1 1/3 4/4‬‬
‫‪1/1‬‬
‫‪17/17‬‬
‫‪11/11‬‬
‫‪19'734‬‬
‫‪7'147'502‬‬
‫‪9'8895/6‬‬
‫‪4/623/27‬‬
‫‪18 / 26‬‬
‫‪3'308‬‬
‫‪2/3‬‬ ‫‪ 44‬ب ‪1‬‬

‫ﺘﺨﺪام‬
‫اﻟﻘﺮاد ﻟﻜﻞ اﺳ‬ ‫‪1/1 13/13 9'931'268 1/1 2/2 1/1 1/1 7'147 '561‬‬ ‫‪ 112‬ب ‪3‬‬

‫وﺣﺪةﺗﺤﻜﻢ ‪synopsys otg init‬‬


‫‪1/1 2/2 1/1 2/2 2/3 21/22 13/23 61/78‬‬ ‫‪ 12‬ب ‪1‬‬

‫ﺳﺠﻞﺗﺤﻜﻢ ‪USB‬‬
‫‪ 76‬ب ‪2‬‬
‫ﺗﺤﻜﻢ اﻟﺤﺮف اﻷول‬
‫‪USB‬‬ ‫‪ 108‬ب ‪1‬‬
‫ﺒﺪأ وﺣﺪةﺗﺤﻜﻢ ‪USB‬‬
‫ﺗ‬ ‫‪ 56‬ب ‪1‬‬
‫‪10000DC70‬اﻟﻔﺮﻋ ﻲ‬ ‫‪9'808‬‬ ‫‪ 56‬ب ‪1‬‬
‫ﺗﻌﻴﻴﻦ ﻋﻨﻮان وﺣﺪةﺗﺤﻜﻢ ‪USB‬‬ ‫‪3'669‬‬ ‫‪ 56‬ب ‪1‬‬

‫ﺗﺼﺎل‬
‫ﺗﺤﺼﻞ ﻋﲆﺳﺮﻋ ﺔ اﻻ‬
‫وﺣﺪةﺗﺤﻜﻢ ‪USB‬‬
‫‪9'915‬‬ ‫‪ 56‬ب ‪1‬‬

‫ﺗﻔﻌﻞ ﻧﻘﻄ ﺔ اﻟﻨﻬﺎﻳ ﺔ ‪io‬‬


‫وﺣﺪةﺗﺤﻜﻢ ‪USB‬‬
‫‪525'567‬‬ ‫‪ 56‬ب ‪1‬‬

‫ﻧﻘﻄ ﺔ ﻧﻬﺎﻳ ﺔ ﻛﺸﻚﺗﺤﻜﻢ ‪USB‬‬


‫‪73'958‬‬ ‫‪ 56‬ب ‪1‬‬
‫‪10000DD88‬اﻟﻔﺮﻋ ﻲ‬ ‫‪501‬‬ ‫‪ 56‬ب ‪1‬‬
‫‪10000DDC0‬اﻟﻔﺮﻋﻴ ﺔ‬ ‫‪608‬‬ ‫‪ 56‬ب ‪1‬‬
‫‪10000DDF8‬اﻟﻔﺮﻋﻴ ﺔ‬ ‫‪783‬‬ ‫‪ 56‬ب ‪1‬‬

‫ﺒﻂ ﻧﻘﻄ ﺔ اﻟﻨﻬﺎﻳ ﺔ‬


‫ﺟﻬﺎزﺗﺤﻜﻢ ‪USB‬ﻳﺤ‬
‫‪559'477‬‬ ‫‪ 56‬ب ‪1‬‬
‫‪10000DEA0‬اﻟﻔﺮﻋ ﻲ‬ ‫‪783‬‬ ‫‪ 12‬ب ‪1‬‬

‫‪usb‬اﻷﺳﺎﺳﻴ ﺔ إرﺳﺎل ‪zlp‬‬


‫‪24'007‬‬ ‫‪ 64‬ب ‪1‬‬

‫ﻃﻠ ﺐﺗﺨﺼﻴﺺ ﺟﻬﺎز ‪ep0 io‬‬


‫‪73'958‬‬ ‫‪ 132‬ب ‪2‬‬
‫‪USB‬اﻷﺳﺎﺳﻴ ﺔ اﻟﺤﺮف اﻷول‬ ‫‪9'899‬‬ ‫‪ 240‬ب ‪2‬‬

‫واﺻﻒﺳﻠ ﺴﻠ ﺔﺗﺨﺼﻴﺺ ‪usb‬‬


‫‪49'445‬‬ ‫‪ 116‬ب ‪2‬‬

‫‪USB‬إﻧﺸﺎء واﺻﻒﺳﻠ ﺴﻠ ﺔ‬
‫‪9'808‬‬ ‫‪ 84‬ب ‪3‬‬
‫ﺑﺪاﻳ ﺔ ‪USB‬اﻷﺳﺎﺳﻴ ﺔ‬ ‫‪25'401‬‬ ‫‪ 780‬ب ‪13‬‬

‫واﺟﻬ ﺔﺗ ﺴﺠﻴﻞ ‪USB‬اﻷﺳﺎﺳﻴ ﺔ‬


‫‪73'958‬‬ ‫‪ 40‬ب ‪2‬‬
‫ﺒﺎل ‪usb‬اﻷﺳﺎﺳﻴ ﺔﺗﺤﻜﻢ ‪usb‬‬
‫ﺘﻘ‬‫اﺳ‬ ‫‪20'242‬‬ ‫‪ 1504‬ب ‪62‬‬
‫ﻣﻌﺎﻟﺞ ﺣﺪ ث ‪USB‬اﻷﺳﺎﺳ ﻲ‬ ‫‪ 312‬ب ‪13‬‬

‫‪USB‬اﻷﺳﺎﺳﻴ ﺔ ﻧﻘﻄ ﺔ ﻧﻬﺎﻳ ﺔ ﻛﺎﻣﻠ ﺔ ‪io‬‬


‫‪ 56‬ب ‪2‬‬
‫‪USB‬اﻷﺳﺎﺳﻴ ﺔﺗﻔﻌﻞ اﻟﻨﻘﻞ‬ ‫‪ 136‬ب ‪3‬‬
‫‪39'556 9'889 9'889627'812‬‬
‫اﻟﻔﺮﻋﻴ ﺔ ‪10000ECEC‬‬ ‫‪ 104‬ب ‪4‬‬
‫اﻟﻔﺮﻋ ﻲ ‪10000ED54‬‬ ‫‪9'808‬‬ ‫‪ 156‬ب ‪7‬‬

‫‪getDFUImage‬‬
‫‪9'922‬‬ ‫‪ 96‬ب ‪3‬‬
‫‪usb dfu init‬‬ ‫‪9'889‬‬ ‫‪ 228‬ب ‪2‬‬

‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻃﻠ ﺐ واﺟﻬ ﺔ‬
‫‪USB dfu‬اﻟ‬
‫‪64'643‬‬ ‫‪ 460‬ب ‪12‬‬
‫ﺑﻴﺎﻧﺎ ت ‪USB dfu‬‬‫ﺘﻼم‬
‫ﺗﻢ اﺳ‬ ‫‪1'575'369‬‬ ‫‪ 220‬ب ‪3‬‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ إﻋﺎدةﺗﻌﻴﻴﻦ اﻟﺤﺎﻓﻠ ﺔ‬
‫اﻟ‬ ‫‪9'808‬‬ ‫‪ 36‬ب ‪1‬‬
‫ﻣﺨﺮج ‪USB dfu‬‬ ‫‪3'166‬‬ ‫‪ 84‬ب ‪3‬‬

‫ﻣﺤﺎذاة ‪siphash‬‬
‫‪11'518‬‬ ‫‪ 432‬ب ‪12‬‬

‫ﻛﻮﻣ ﺔﺗﺨﺼﻴﺺ‬
‫‪54'687‬‬ ‫‪ 256‬ب ‪4‬‬

‫ﺘﺤﺪة ﻛﻮﻣ ﺔ ‪fn‬‬


‫اﻟﻤﻤﻠﻜ ﺔ اﻟﻤ‬
‫‪46'746‬‬ ‫‪ 36‬ب ‪2‬‬

‫اﻟﺤﺠﻢ اﻟﻤﻄﻠﻮ ب‬
‫‪46'746‬‬ ‫‪ 60‬ب ‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻊ ﻋﺸﺮ‬
‫اﻟﺮا‬

‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫ﺘﻠ ﺔ اﻟﺤﺸﻮ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻛ‬
‫ﺑﻤﺎ اﻟ‬
‫ر‬ ‫‪172'167‬‬ ‫‪18 / 25 6/10 22/34 2/3 7/11‬‬ ‫‪ 84‬ب ‪4‬‬
‫‪calloc‬‬ ‫‪603'033‬‬ ‫‪9/9 24'397 17/20 54/60 4/6‬‬ ‫‪ 28‬ب ‪2‬‬
‫ﺘﻠ ﺔ‬
‫ﺒﺎري ﻟﻠﻜ‬
‫ﺘ‬‫ﺗﺤﻘﻖ ﻣﻦ اﻟﻤﺠﻤﻮع اﻻﺧ‬ ‫‪73'958‬‬ ‫‪16'278 1'332'108 3/3 6/6 5/5‬‬ ‫‪ 92‬ب ‪1‬‬
‫ﻛﻮﻣ ﺔ ﻣﺠﺎﻧﻴ ﺔ‬ ‫‪46'746‬‬ ‫‪24'397 8/8 35/35 6/7 21/26‬‬ ‫‪ 516‬ب ‪13‬‬
‫ﺘﻠ ﺔ‬
‫ﺒﺎري ﻟﻠﻜ‬
‫ﺘ‬‫ﺣ ﺴﺎ ب اﻟﻤﺠﻤﻮع اﻻﺧ‬ ‫‪972'336‬‬ ‫‪42/42 5/5 13/13331 '278‬‬ ‫‪ 28‬ب ‪1‬‬
‫ﻛﻮﻣ ﺔ ‪memalign‬‬ ‫‪2'002‬‬ ‫‪12/21‬‬
‫‪1/4‬‬
‫‪59/108‬‬
‫‪8/30342'034‬‬
‫‪29'383'810‬‬
‫‪9/9‬‬ ‫‪ 664‬ب ‪8‬‬
‫ﺘﻠ ﺔ اﻟﺤﺸﻮ‬
‫ﺗﺤﻘﻖ ﻣﻦ ﻛ‬ ‫‪138'683‬‬ ‫‪2/2‬‬
‫‪2/25/5‬‬
‫‪3/34/4‬‬
‫‪2/316/16‬‬
‫‪3/10 5'667'507‬‬
‫‪3/3 15/15‬‬ ‫‪ 116‬ب ‪5‬‬
‫إﺿﺎﻓ ﺔ ﻗﺎﺋﻤ ﺔ ﻣﺠﺎﻧﻴ ﺔ‬ ‫‪232'175‬‬ ‫‪3/3 22/22/3 14/18‬‬ ‫‪ 164‬ب ‪3‬‬
‫ﻛﻮﻣ ﺔ إﺿﺎﻓ ﺔ ﻗﻄﻌ ﺔ ‪0‬‬ ‫‪46'746‬‬ ‫‪4/5‬‬
‫‪1/1‬‬
‫‪14/18‬‬
‫‪2/2 1/1‬‬
‫‪58/128202/466‬‬
‫‪1 / 1 1/1 8/8‬‬ ‫‪ 424‬ب ‪11‬‬
‫ﻛﻮﻣ ﺔ إﺿﺎﻓ ﺔ ﻗﻄﻌ ﺔ‬ ‫‪91'937‬‬ ‫‪15/19 6/9 26/35 6/7 70/74‬‬ ‫‪ 20‬ب ‪1‬‬
‫ﺒﺎط‬
‫ﺗ‬‫ﻣﺠﻤﻮﻋ ﺔ ﻛﻮﻣ ﺔ ﻣﻠﻒﺗﻌﺮﻳﻒ اﻻر‬ ‫‪91'937‬‬ ‫‪5/5 2/2 12/12 4/5 14/15 4/5‬‬ ‫‪ 52‬ب ‪1‬‬
‫اﻟﻔﺮﻋﻴ ﺔ ‪1000108E8‬‬ ‫‪91'937‬‬ ‫‪3/8 26/41 9 / 16 78/101 2/2‬‬ ‫‪ 60‬ب ‪3‬‬
‫ﺣﺠﻢ داﺋﺮي‬ ‫‪185'429‬‬ ‫‪6/6 1/18 1/166 8/10 27/29‬‬ ‫‪ 76‬ب ‪3‬‬
‫إزاﻟ ﺔ ﻗﺎﺋﻤ ﺔ ﻣﺠﺎﻧﻴ ﺔ‬ ‫‪93'492‬‬ ‫‪21/22 17/22104/127 1/1‬‬ ‫‪ 140‬ب ‪6‬‬
‫اﻧﻘ ﺴﺎم اﻟﺬﻳﻞ‬ ‫‪46'746‬‬ ‫‪6/8 17/21 3/3 7/7 2/3‬‬ ‫‪ 296‬ب ‪3‬‬
‫ﻣﺎﻟﻮك‬ ‫‪46'746‬‬ ‫‪ 8‬ب‪1‬‬
‫ﺣﺮ‬ ‫‪ 4‬ب‪1‬‬
‫‪memset s‬‬ ‫‪ 32‬ب ‪1‬‬
‫‪memset‬ﻏﺮﻳ ﺐ‬ ‫‪ 72‬ب ‪3‬‬
‫ﺗﻔﻌﻞ ‪printf‬‬ ‫‪ 1864‬ب ‪72‬‬
‫اﻟﻔﺮﻋﻴ ﺔ ‪1000114BC‬‬ ‫‪ 88‬ب ‪2‬‬
‫‪58'456 69'820 69'820439'265439'265439'232‬‬
‫‪snprintf‬‬ ‫‪ 72‬ب ‪1‬‬
‫‪100011648‬اﻟﻔﺮﻋ ﻲ‬ ‫‪37‬‬ ‫‪ 20‬ب ‪1‬‬
‫ﻳﻀﻊ‬ ‫‪185‬‬ ‫‪ 64‬ب ‪2‬‬
‫ﻋﻔﺮﻳ ﺖ‬ ‫‪444‬‬ ‫‪ 60‬ب ‪2‬‬
‫‪strlcat‬‬ ‫‪24'397‬‬ ‫‪ 12‬ب ‪1‬‬
‫‪strlcpy‬‬ ‫‪16'278‬‬ ‫‪ 40‬ب ‪1‬‬
‫‪memcpy‬‬ ‫‪ 432‬ب ‪11‬‬
‫ﺻﻔﺮ‬ ‫‪ 120‬ب ‪3‬‬
‫‪memset‬‬ ‫‪ 168‬ب ‪6‬‬
‫‪memcmp‬‬ ‫‪ 52‬ب ‪3‬‬
‫ﻓﺮﻋ ﻲ ‪100011ACC‬‬ ‫‪ 140‬ب ‪5‬‬
‫اﻟﻔﺮﻋﻴ ﺔ ‪100011B58‬‬ ‫‪ 104‬ب ‪3‬‬
‫ﺘﺮﻟﻴﻦ‬
‫ﺳ‬ ‫‪ 24‬ب ‪2‬‬
‫ﺑﺤﺮﻳﻨ ﻲ ‪8‬‬‫‪100011‬دﻳﻨﺎر‬ ‫‪ 36‬ب ‪3‬‬
‫ﺒﺤ ﺚ ‪mib‬‬
‫ﻋﻘﺪة اﻟ‬ ‫‪142'556‬‬ ‫‪ 240‬ب ‪9‬‬
‫ﺜﻮر ﻋﲆ ‪mib‬‬
‫اﻟﻌ‬ ‫‪142'556‬‬ ‫‪ 100‬ب ‪2‬‬
‫ﺘﺮد ‪mib‬اﻟﻘﻴﻤ ﺔ‬
‫ﺑﻤﺎﻳ ﺴ‬
‫ر‬ ‫‪142'556‬‬ ‫‪ 136‬ب ‪4‬‬
‫اﻟﺤﺼﻮل ﻋﲆ ﺣﺠﻢ ‪mib‬‬ ‫‪8'169 1/1 12/12 7/20 42/101 8'169 1/1 9/9‬‬ ‫‪ 44‬ب ‪1‬‬
‫ﺘﺨﺰﻳﻦ اﻟﻤﺆﻗ ﺖ ‪mib‬‬
‫اﻟﺤﺼﻮل ﻋﲆ ذاﻛﺮة اﻟ‬
‫‪5/6 26/30 142'556 5/7 21/34 5/11 25/79 8'169‬‬ ‫‪ 120‬ب ‪4‬‬
‫اﻟﺤﺼﻮل ﻋﲆ ﻗﻴﻤ ﺔ ‪mib‬‬ ‫‪142'556 3'245'842‬‬ ‫‪ 136‬ب ‪1‬‬
‫ﺑﻴﺎ‬
‫ﺘﺮو‬
‫ﻣﺼﺪر إﻧ‬ ‫‪ 324‬ب ‪6‬‬
‫ﻓﺮﻋ ﻲ ‪1000122CC‬‬ ‫‪ 48‬ب ‪1‬‬
‫ﺑﺎﻳ ﺖ اﻟﺪاﺧﻠﻴ ﺔ‬‫ﻋﺸﻮاﺋﻴ ﺔ اﻟﺤﺼﻮل ﻋﲆ‬ ‫‪ 408‬ب ‪9‬‬
‫ﺑﺎﻳ ﺖ‬‫ﻋﺸﻮاﺋﻴ ﺔ اﻟﺤﺼﻮل ﻋﲆ‬ ‫‪8'169‬‬ ‫‪ 36‬ب ‪1‬‬
‫أدﺧﻞ ﻗ ﺴﻢ ﺣﺮج‬
‫‪7'362'621 4/7 14/24‬‬ ‫‪ 96‬ب ‪2‬‬
‫‪Machine Translated by Google‬‬

‫اﻟﺨﺎﻣ ﺲ ﻋﺸﺮ‬

‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫اﻟﺨﺮوج ﻣﻦ اﻟﻘ ﺴﻢ اﻟﺤﺮج‬ ‫‪96/97 1/1 3/3 1/1 14/14 9/10 19/21 2/2 10/10‬‬ ‫‪ 76‬ب ‪1‬‬

‫ﺘﺎج اﻟﺤﺎﻟ ﻲ‬
‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ وﺿﻊ اﻹﻧ‬ ‫‪31/35‬‬
‫‪14/14‬‬
‫‪68/70‬‬
‫‪4/5‬‬
‫‪38/38‬‬
‫‪8/8‬‬
‫‪29/31‬‬
‫‪47/47‬‬
‫‪249/14‬‬
‫‪/ 31/35‬‬
‫‪25132/133‬‬
‫‪38/46‬‬
‫‪146/158‬‬
‫‪23/34‬‬
‫‪23/25‬‬
‫‪23/27‬‬
‫‪115/135‬‬
‫‪97/99‬‬
‫‪115/121‬‬
‫‪22/23‬‬
‫‪14/15‬‬ ‫‪ 4‬ب‪1‬‬

‫ﺘﺎج اﻟﺨﺎم‬
‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ وﺿﻊ اﻹﻧ‬ ‫‪10/14‬‬
‫‪39/39‬‬ ‫‪12/18‬‬
‫‪45 / 49‬‬
‫‪9/10‬‬ ‫‪51/70‬‬
‫‪8/828/30‬‬
‫‪14/14‬‬ ‫‪4/4 59/61‬‬
‫‪11/12‬‬
‫‪6/10‬‬ ‫‪10/10 7/9‬‬
‫‪24/28‬‬ ‫‪12/19‬‬
‫‪10/11‬‬ ‫‪42/59‬‬
‫‪52/55‬‬
‫‪28/29‬‬ ‫‪6/9‬‬
‫‪11/13‬‬
‫‪6/8‬‬ ‫‪ 4‬ب‪1‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﺠﺎل اﻷﻣﺎن‬ ‫‪18/18‬‬


‫‪103'804‬‬
‫‪1/110/10‬‬
‫‪1/12/3‬‬
‫‪1/1‬‬
‫‪29/29‬‬
‫‪8/11‬‬
‫‪2/2 1/1‬‬
‫‪1/1‬‬
‫‪10/13‬‬
‫‪1/1‬‬
‫‪3/347/52‬‬
‫‪1/1‬‬
‫‪1/1 1/1‬‬
‫‪2/2‬‬
‫‪8/12‬‬
‫‪1/1‬‬
‫‪7/939/50‬‬
‫‪1/1‬‬
‫‪32/34‬‬
‫‪1/1‬‬
‫‪11/11‬‬
‫‪31/1‬‬
‫‪/3‬‬ ‫‪ 4‬ب‪1‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ اﻟﻮﺿﻊ اﻵﻣﻦ‬ ‫‪110'383‬‬


‫‪3/5 12/19 1/1 1/1 8'336102'047 1/1 1/1 1/1 1/1‬‬ ‫‪ 44‬ب ‪1‬‬

‫ﺒﺔ‬
‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ اﻷﺟﻬﺰة اﻟﺤﻘ‬ ‫‪93'915‬‬ ‫‪7'352'768‬‬ ‫‪ 4‬ب‪1‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﻌﺮف رﻗﺎﻗ ﺔ‬ ‫‪102'047‬‬ ‫‪ 4‬ب‪1‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﺮاﺟﻌ ﺔ رﻗﺎﻗ ﺔ‬ ‫‪9'889‬‬ ‫‪ 4‬ب‪1‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﻌﺮف ‪ecid‬‬ ‫‪9'889‬‬ ‫‪ 4‬ب‪1‬‬

‫ﻣﻨﺼ ﺔ ‪j init usb‬‬ ‫‪9'889‬‬ ‫‪ 4‬ب‪1‬‬

‫ﺑﺎﺋﻊ ‪usb‬‬‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﻌﺮف‬ ‫‪9'926‬‬ ‫‪ 8‬ب‪1‬‬

‫ﻣﻨﺼ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﻨﺼ ﺔﺳﻠ ﺴﻠ ﺔ ‪USB‬اﻟﻤﺼﻨﻌ ﺔ ﻟﻠﺤﺼﻮل ﻋﲆ إﺻﺪار ﺟﻬﺎز‬ ‫‪ 12‬ب ‪1‬‬

‫‪USB‬‬ ‫‪8'132102'047‬‬ ‫‪ 8‬ب‪1‬‬

‫‪DERImg4DecodeFindInSequence 0‬‬ ‫‪1'446‬‬ ‫‪ 136‬ب ‪4‬‬

‫‪DERImg4DecodeContentFindItemWithTag 0‬‬ ‫‪1'446‬‬ ‫‪ 72‬ب ‪2‬‬

‫‪DERImg4DecodeTagCompare 1‬‬ ‫‪163'856‬‬ ‫‪ 116‬ب ‪6‬‬

‫ﺋﻴ ﺴ ﻲ دﻳﺮ‬
‫ﺗﺤﻠﻴﻞ ‪img4‬اﻟﺮ‬ ‫‪ 216‬ب ‪8‬‬

‫ﺗﺤﻠﻴﻞ اﻟﺤﻤﻮﻟ ﺔ دﻳﺮ‬ ‫‪ 204‬ب ‪9‬‬

‫ﺗﺤﻠﻴﻞ واﺿﺢ‬ ‫‪ 160‬ب ‪9‬‬

‫ﺘﺮداد دﻳﺮ‬
‫ﺗﺤﻠﻴﻞ اﺳ‬ ‫‪ 124‬ب ‪7‬‬

‫‪DERImg4DecodeProperty 0‬‬ ‫‪ 248‬ب ‪10‬‬


‫‪62'145 58'478 58'060 31'237 6'118723‬‬
‫‪DERFindInSequence‬‬ ‫‪ 220‬ب ‪5‬‬

‫‪DERImg4DecodeParseManifestProperties 0‬‬ ‫‪241‬‬ ‫‪ 224‬ب ‪9‬‬

‫‪Img4DecodePayloadExists 0‬‬ ‫‪31'658‬‬ ‫‪ 56‬ب ‪5‬‬

‫‪Img4DecodeGetPayload‬‬ ‫‪204‬‬ ‫‪ 112‬ب ‪7‬‬

‫‪Img4DecodeGetPayloadType‬‬ ‫‪30'972‬‬ ‫‪ 116‬ب ‪8‬‬

‫‪Img4DecodePayloadCompressionExists‬‬ ‫‪204‬‬ ‫‪ 56‬ب ‪5‬‬

‫‪Img4DecodeCopyPayloadDigest‬‬ ‫‪1'205‬‬ ‫‪ 280‬ب ‪11‬‬

‫‪Img4DecodeManifestExists 0‬‬ ‫‪ 40‬ب ‪3‬‬

‫‪Img4DecodeCopyManifestDigest‬‬ ‫‪ 236‬ب ‪11‬‬


‫ﻓﺮﻋ ﻲ ‪100013820‬‬ ‫‪241 30'843204‬‬ ‫‪ 140‬ب ‪6‬‬

‫‪Img4DecodeGetPropertyBoolean 0‬‬ ‫‪890‬‬ ‫‪ 124‬ب ‪3‬‬


‫‪100013928‬اﻟﻔﺮﻋ ﻲ‬ ‫‪241‬‬ ‫‪ 184‬ب ‪9‬‬
‫‪241‬‬
‫ﺧﺼﺎﺋﺺ اﻟﺤﻤﻮﻟ ﺔ‬ ‫ﺘﺤﻘﻖ ﻣﻦ‬
‫اﻟ‬ ‫‪ 564‬ب ‪23‬‬

‫‪Img4DecodeEvaluate ،‬اﻟﻘﺎﻣﻮس ‪ ،‬اﻟﺨﺼﺎﺋﺺ ‪62'145‬‬ ‫‪ 284‬ب ‪11‬‬

‫‪Img4DecodeInit‬‬ ‫‪0482‬‬ ‫‪ 188‬ب ‪7‬‬

‫‪Img4DecodePerformTrustEvaluatation‬‬ ‫‪30'807‬‬ ‫‪ 636‬ب ‪29‬‬

‫ﺑﺎﻟﺮﻳﺎل‬‫ﺘﻮﻗﻴﻊ‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟ‬
‫اﻟ‬ ‫‪9'368‬‬ ‫‪ 484‬ب ‪19‬‬

‫ﺗﺤﻘﻖ ﻣﻦ ‪pkcs1 sig‬‬ ‫‪19'075‬‬ ‫‪ 152‬ب ‪13‬‬

‫ﺘﺤﻠﻴﻞ‬
‫ﺳﻠ ﺴﻠ ﺔ اﻟ‬ ‫‪30'785‬‬ ‫‪ 532‬ب ‪20‬‬

‫ﺗﺤﻘﻖ ﻣﻦﺗﻮاﻗﻴﻊ اﻟ ﺴﻠ ﺴﻠ ﺔ‬ ‫‪30'785‬‬ ‫‪ 396‬ب ‪20‬‬

‫ﺘﺤﻠﻴﻞ‬
‫ﺗﺤﻘﻖ ﻣﻦﺳﻠ ﺴﻠ ﺔ اﻟ‬ ‫‪8'830‬‬ ‫‪ 388‬ب ‪18‬‬

‫ﺘﺤﻠﻴﻞ‬
‫ﺳﻠ ﺴﻠ ﺔ ﺷﻬﺎدة اﻟ‬ ‫‪15'571‬‬ ‫‪ 12‬ب ‪1‬‬
‫ﺟﺬرﺳﻠ ﺴﻠ ﺔ اﻟﻜﺮاك‬ ‫‪12'278‬‬ ‫‪ 56‬ب ‪1‬‬

‫‪Img4DecodeComputeDigest‬‬ ‫‪43'394‬‬ ‫‪ 84‬ب ‪5‬‬


‫‪100014898‬اﻟﻔﺮﻋﻴ ﺔ‬ ‫‪43'372‬‬ ‫‪ 40‬ب ‪1‬‬
Machine Translated by Google

‫اﻟ ﺴﺎدس ﻋﺸﺮ‬

‫وﻇﻴﻔ ﺔ‬ BB Hit Instr Hit ‫إﻋﺪاﻣﺎ ت‬ CC ‫اﻟﺤﺠﻢ‬

‫ﺳﻠ ﺴﻠ ﺔ اﻟﻜﺮاك‬ 1'923'891 10 ‫ب‬15/15


4/6 53/55 8'935 13/29 77/194 10/11 44/45 3/3 228

‫ﻣﻠﺤﻘﺎ تﺗﺤﻠﻴﻞ‬
95'315 12 ‫ب‬13/13
1/1 18/18 9/13 54/78 51'535 26'516'946 1/1 316

‫ﻫﺬا اﻟﺮﻣﺰ‬ 29'008 1‫ ب‬8


8/8 43/43 17'704 3/3 13/13 2/3 53/54 51'533 51'536
DERDecodeItemPartialBuffer 19'075 16 ‫ ب‬324
10/10 2/2 11/11 17'385'931 4/4 13/13 18'045'342
DERDecodeItemPartialBuffer 0 719'343 15 ‫ ب‬276
6/7 37/38 6/7 42/43 187'246 32 / 35127/133 4/4
DERParseBitString 0 0
37'579 2 ‫ ب‬64
225'237 35'022 6/7 38/39 1/1 7/7 2'410 1'758'476
DERParseBoolean 0 890 3/4 12/16 3/4 13/15 224'032 6/7 30 / 31 14/14232/32
‫ ب‬60

DERParseInteger
14/15 56/57 16/16 78/78 1/1 2/2 24/26 76/81 22/22
3 ‫ب‬69/69
124

DERParseInteger64
8 ‫ ب‬128

‫ﻣﺮة أﺧﺮى‬DERDecodeSeqInitA
3 ‫ ب‬160

DERDecodeSeqContentInit
1 ‫ ب‬28

DERDecodeSeqNext
3 ‫ ب‬152

DERParse ‫ﺘ ﺴﻠ ﺴﻞ‬
‫اﻟ‬
3 ‫ ب‬176

DERParseSequenceContent
409'970 19 ‫ ب‬532

DEROidCompare
140'240 1 ‫ ب‬40

memcmp 0
50'280 1 ‫ ب‬44

ccn cmp 0
3 ‫ ب‬52

‫ﻣﻮل‬ccn 5 ‫ ب‬172

‫اﻟﻔﺮﻋ ﻲ‬10001ACEC 3 ‫ ب‬52

ccdigest
1 ‫ ب‬216

ccdigest init ccdigest


1 ‫ ب‬72

cc mux2p ‫ﺗﺤﺪﻳ ﺚ‬
7 ‫ ب‬312
1 ‫ ب‬52

‫اﻟﻔﺮﻋ ﻲ‬10001B520 2 ‫ ب‬220

10001B5FC 8'935 14 ‫ ب‬776

ccn 0 ‫إﺿﺎﻓ ﺔ‬ 34'753'992 6 ‫ ب‬180

‫اﻟﻔﺮﻋﻴ ﺔ‬10001B9B8 214'442 2 ‫ ب‬60

‫اﻟﻔﺮﻋﻴ ﺔ‬10001B9F4 12/12 162/162 51'535 9'368 1/1 8/8 5/6 137 / 138150'484 1 /31‫ب‬26/26
664

‫اﻟﻔﺮﻋ ﻲ‬10001BC8C 49/51


45 1/1
4/68/8
34/43
9'368
12/14
69'822
86 /1/1
90 11/16
6/6 11/13
43/76
89/92
300'968
8'85217'376'996 8 ‫ب‬41/42
11/16 152/2020
2/3 176
4/6
10001BCB4 ‫اﻟﻔﺮﻋﻴ ﺔ‬ 40/44 27'671 10'016 1/1 10/10 5'480'700 1/1 10/10 26'920'458
26'733'840 10/11
8/9 165/166114/16
‫ ب‬44
40/

10001BD64 ‫ﻓﺮﻋ ﻲ‬ 1 ‫ ب‬40

0 ‫اﻟﻔﺮﻋ ﻲ‬ccn 6 ‫ ب‬180

uint ‫ﺑﺤﺠﻢ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫اﻟﻜ‬ccn 1 ‫ ب‬32

‫ﻧ ﺴﺨ ﺔ واﺿﺤ ﺔ‬ 1 ‫ ب‬24

10001BE78 6 ‫ ب‬368

10001BFE8 9'368 8 ‫ ب‬812

10001C314 ‫اﻟﻔﺮﻋﻴ ﺔ‬ 9'368 2 ‫ ب‬204

10001C3E0 ‫اﻟﻔﺮﻋﻴ ﺔ‬ 8'935 4 ‫ ب‬172

10001C48C ‫اﻟﻔﺮﻋﻴ ﺔ‬ 9'368 8 ‫ ب‬360

1 ‫ﻟﻠﻴﻤﻴﻦ‬ccn ‫ﺗﺤﻮﻳﻞ‬
9 ‫ ب‬304

‫اﻟﻔﺮﻋ ﻲ‬10001CB70 1 ‫ ب‬168

10001CC18 ‫ﻓﺮﻋ ﻲ‬ 7 ‫ ب‬648

‫اﻟﻔﺮﻋﻴ ﺔ‬10001D4AC 1 ‫ ب‬32

10001D4CC ‫ﻓﺮﻋ ﻲ‬ 2 ‫ ب‬552

10001D6F4 ‫أﻗﻞ ﻣﻦ‬ 141'632 1 ‫ ب‬104

‫اﻟﻔﺮﻋ ﻲ‬10001D760 99'219 3 ‫ ب‬7/8 1280/1281 5124


‫‪Machine Translated by Google‬‬

‫ﺑﻊ ﻋﺸﺮ‬
‫اﻟ ﺴﺎ‬

‫وﻇﻴﻔ ﺔ‬ ‫إﻋﺪاﻣﺎ ت ‪BB Hit Instr Hit‬‬ ‫اﻟﺤﺠﻢ ‪CC‬‬

‫ﺋ ﺔ اﻟﻀﻤﻨﻴ ﺔ‬
‫ﺘﺠﺰ‬
‫اﻟﺤﺼﻮل ﻋﲆ اﻟ‬ ‫‪223'377‬‬ ‫‪1/1 3/3 1/1 8/8 4/4 11/11‬‬ ‫‪ 12‬ب ‪1‬‬
‫ﺳﻢ ﻣﻜﻌ ﺐ ‪muxp‬‬ ‫‪150'484‬‬ ‫‪ 32‬ب ‪1‬‬
‫‪ccn‬ن ‪0‬‬ ‫‪104'661‬‬ ‫‪ 44‬ب ‪3‬‬

You might also like