SlideShare a Scribd company logo
1 of 446
Download to read offline
[1]
[2]
UNDERSTANDING
HACKING
AND INFORMATION SECURITY
AHMED ALMASHAD
[3]

‫املشد‬ ‫أمحد‬ :: ‫املؤلف‬ ‫اسم‬

‫املعلومات‬ ‫وأمن‬ ‫اإللكرتونية‬ ‫القرصنة‬ :: ‫الكتاب‬ ‫اسم‬

‫والتوزيع‬ ‫للنرش‬ ‫العربية‬ ‫األمة‬ ‫مؤسسة‬ :: ‫النارش‬

:: ‫القانوين‬ ‫اإليداع‬ ‫رقم‬
2017 / 26244

:: ‫الدويل‬ ‫الرقم‬
978 / 977 / 783 / 405 / 6

‫العربية‬ ‫مرص‬ ‫جهورية‬ :: ‫النرش‬ ‫دولة‬

:: ‫النرش‬ ‫سنة‬
2017

‫األوىل‬ ‫الطبعة‬ :: ‫الطبعة‬ ‫رقم‬
‫حتذير‬
||
‫نرش‬ ‫بإعادة‬ ‫يسمح‬ ‫وال‬ ‫للمؤلف‬ ‫حمفوظة‬ ‫احلقوق‬ ‫مجيع‬
‫م‬ ‫ططية‬ ‫بمواققة‬ ‫لال‬ ‫الكتاب‬ ‫ذذا‬
‫نه‬
.
[4]
‫الكتاب‬ ‫ذذا‬ ‫يف‬ ‫ستتعلم‬
:‫ماييل‬

‫ال‬ ‫بلغة‬ ‫الربجمه‬
C
،
‫األكواد‬ ‫وحتليل‬ ‫وقهم‬
.‫الربجمية‬

‫شبكات‬
‫احلاسب‬
‫ال‬ ‫برجمة‬ ‫وكيفية‬ ،
Sockets
.‫األنظمه‬ ‫بني‬ ‫اإلتصاالت‬ ‫ولنشاء‬ ،

‫واستغالهلا‬ ‫األنظمه‬ ‫يف‬ ‫ثغرات‬ ‫لجياد‬
‫طريق‬ ‫عن‬
‫ال‬ ‫ذجامت‬
Buffer Overflows
.

‫ال‬ ‫استخدام‬
Debuggers
‫ال‬ ‫لفحص‬
Processor Registers
‫وال‬
System Memory
.

‫كيف‬
‫احلاميه‬ ‫آليات‬ ‫عىل‬ ‫ل‬ُ‫ي‬‫التحا‬ ‫ية‬
‫اخلاصة‬
‫ب‬
‫أنظم‬
‫ال‬ ‫صالحيات‬ ‫عىل‬ ‫واحلصول‬ ،‫التشغيل‬ ‫ة‬
system
‫ال‬ ‫أو‬
root
.‫البعيدة‬ ‫األنظمه‬ ‫عىل‬

‫وحتليلها‬ ،‫التشفري‬ ‫وأنظمة‬ ‫طوارزميات‬
،
‫و‬
‫تطبيقاهتا‬ ‫قهم‬
‫ه‬َ‫د‬ِّ‫َعد‬‫ت‬ُ‫مل‬‫ا‬
.
‫األول‬ ‫الباب‬ ‫يف‬ ‫نقوم‬
‫ب‬
‫م‬ُّ‫ل‬َ‫ع‬َ‫ت‬
،‫الربجميه‬ ‫األكواد‬ ‫تابة‬‫وك‬ ‫قراءة‬
‫و‬
‫دراسة‬
‫التشغيل‬ ‫أنظمة‬
‫الربامج‬ ‫مع‬ ‫تعاطيها‬ ‫ق‬ ُ‫ر‬ُ‫ط‬‫و‬
،
ُ
‫حيث‬
‫د‬َ‫ع‬ُ‫ت‬
‫ل‬ ‫األساس‬
‫بقية‬
.‫األبواب‬
‫ل‬ ،‫الشبكات‬ ‫عامل‬ ‫لىل‬ ‫ننتقل‬ ‫الثاين‬ ‫الباب‬ ‫يف‬
َ‫ن‬
‫تعر‬
ُ‫ب‬‫و‬ ‫آليات‬ ‫عىل‬ ‫ف‬
‫من‬ ً‫ا‬‫بدء‬ ،‫األنظمة‬ ‫بني‬ ‫البيانات‬ ‫انتقال‬ ‫وكيفية‬ ،‫الشبكات‬ ‫روتوكوالت‬
‫ال‬
Application Layer
‫بال‬ ً‫ء‬‫وانتها‬
Physical Layer
‫س‬ .
‫ن‬
‫ت‬
‫علم‬
‫الباب‬ ‫ذذا‬ ‫يف‬
‫ف‬ِّ‫ظ‬‫ُو‬‫ن‬ ‫كيف‬
‫ال‬
Sockets
َ‫د‬‫و‬
‫وا‬
‫ل‬
‫الشبكات‬
‫يف‬
‫قنوات‬ ‫لنشاء‬
‫األنظمه‬ ‫بني‬ ‫اإلتصال‬
.
،‫األنظمه‬ ‫وتأمني‬ ‫اإلطرتاق‬ ‫عمليات‬ ‫عىل‬ ‫الضوء‬ ‫بتسليط‬ ‫نقوم‬ ‫الثالث‬ ‫الباب‬ ‫يف‬
،‫الشبكات‬ ‫بيئة‬ ‫يف‬ ‫أكثر‬ ‫والتعمق‬
‫أنواع‬ ‫عض‬َ‫ب‬‫ل‬ ‫ليل‬ َ
‫وحت‬
‫ال‬ ‫باستخدام‬ ‫امت‬َ‫ج‬َ‫اهل‬
Debuggers
.‫عميل‬ ‫اطرتاق‬ ‫اطتبار‬ ‫بإجراء‬ ‫ونختم‬ ،
‫الر‬ ‫الباب‬ ‫يف‬ ،ً‫ا‬‫وأطري‬
‫عض‬َ‫ب‬‫ل‬ ‫راسه‬‫د‬ ‫ع‬َ‫م‬ ،‫التشفري‬ ‫طوارزميات‬ ‫باستخدام‬ ‫األمان‬ ‫حتقيق‬ ‫آلليات‬ ‫ض‬‫َعر‬‫ت‬َ‫ن‬‫ل‬ ،‫البيانات‬ ‫تشفري‬ ‫علوم‬ ‫لىل‬ ‫ننتقل‬ ‫ابع‬
‫انتقاهل‬ ‫أثناء‬ ‫يانات‬َ‫ب‬‫ال‬ ‫المة‬ َ
‫وس‬ ،‫صوصية‬ُ‫خل‬‫وا‬ ،‫وثوقية‬َ‫مل‬‫ا‬ ‫توقري‬‫ل‬ ‫ة‬َ‫م‬َ‫َخد‬‫ت‬‫س‬ُ‫مل‬‫ا‬ ‫لة‬‫تكام‬ُ‫مل‬‫ا‬ ‫ة‬َ‫م‬‫األنظ‬
‫آل‬ ‫كان‬َ‫م‬ ‫ن‬‫م‬ ‫ا‬
.‫طر‬
[5]
Table of Content
I- Programming
1. Introduction...……………………………………………………………………… 13
2. If-Then-Else...…………………………………………………………………....... 17
3. While Loop...………………………………………………………………………. 18
4. For loop……………………………………………………………………………. 19
5. Variables…………………………………………………….................................... 20
6. Arithmetic Operators………………………………………………………………. 22
7. Comparison Operator……………………………………….................................... 24
8. Functions…………………………………………………………………………... 26
9. x86 processor ……………………………………………………………………… 31
10. Arrays…………………………………………………………………………….... 38
11. Signed, Unsigned………………………………………………………………...... 40
12. Pointers………………………………………………………….............................. 41
13. Format Strings……………………………………………………………………... 45
14. Typecasting………………………………………………………………………... 50
15. command-Line Arguments……………….………………….................................. 55
16. Variable Scoping…………………………………………………………………... 56
17. Memory Segmentation…………………………………………………………...... 62
18. The Heap…………………………………………………………………………... 66
19. Void Pointers…………………………………………………................................. 71
20. File Access……………………………………………………................................ 77
21. File Permissions………………………………………………................................ 85
22. User IDs………………………………………………………................................ 87
23. Structs……………………………………………………………………………… 91
24. Function Pointers………………………………………………………………...... 97
II- Networking
1. Introduction...……………………………………………………………………….. 105
2. The OSI Model...……………………………………………………………………. 107
3. The Socket...………………………………………………………………………… 116
[6]
4. Socket Functions……………………………………………………………………. 121
5. Socket Address……………………………………………….................................... 124
6. Big-Endian Byte Ordering………………………………………………………….. 128
7. Conversion between IP and 32-Bit……………………….......................................... 130
8. Error.h Lib…………………………………………………………………………... 132
9. Some Definitions……………………………………………………………………. 137
10. Server Example……………………………………………………………………... 138
11. The Browser……………………………………………………………………….... 148
12. The Big Picture…………………………………………………................................ 151
13. Layer 2 (Data-Link)…………………………………………………………………. 152
14. …Optaining an address…………….….……………………………………………. 153
15. …ARP Messages……………………………………………………………………. 155
16. …Sending packet outside the domain………………………………………………. 157
17. Layer 3 (Network)…………………………………………………………………... 158
18. …IP Header………..………………………………………………………………... 158
19. …IP Fragmentation..………………………………………………………………... 161
20. Layer 4 (Transport)……………….………………………….................................... 163
21. …Multiplexing & Demultiplexing………...………………………………………... 163
22. …TCP Header……..………………………………………………………………... 165
23. …TCP Three-way Handshake…..…………………………………………………... 168
III- Security & Attacks
1. Introduction...……………………………………………………………………….. 175
2. Computer Security...………………………………………………………………… 177
3. The Rings...…………………………………………………………………………. 178
4. Operational States…………………………………………………………………… 180
5. Technical Mechanisms……………………………………….................................... 182
6. …Layering, Abstraction, Data Hiding, and Process Isolation……………………… 182
7. Network Sniffing……………………………………………………………………. 186
8. Building our Sniffer………………………................................................................. 188
9. Libpcap Sniffer……………………………………………………………………… 191
10. Layer Analysis………………………………………………………………………. 197
11. …Ethernet Header…………………………………………………………………... 197
12. …IP Header……..…………………………………………………………………... 200
13. …TCP Header…..…………………………………………………………………... 202
14. The Decoder Sniffer………………………………………………………………… 205
[7]
15. …The Conclusion………………………………………………………………….... 224
16. ARP Poisoning Attack....….……………………………………………………........ 225
17. …Inside Nemesis Tool……………………………………………………………... 229
18. Buffer Overflow……………………………………………….................................. 243
19. The Stack……………………………………………………………………………. 247
20. Stack Overflow……………………………………………………………………… 253
21. Putting Things all Together…………………………………………………………. 265
22. …Preparing and Sending our Buffer………………………………………………... 266
23. …Binary Tree Analysis……………………………………………………………... 269
24. …Locating Space for our Shellcode………………………………………………... 274
25. …Redirecting Execution Flow……………………………………………………… 277
26. …Getting the Shell…………………………………………………………………. 279
27. Protection Mechanisms………….…………………………...................................... 283
IV- Cryptography
1. Introduction...……………………………………………………………………….. 291
2. Cryptography...……………………………………………………………………… 295
3. …Substitution...……………………………………………………………………... 298
4. …Transposition……………………………………………………………………... 300
5. Symmetric Cryptography…………………………………........................................ 301
6. …Stream Ciphers…………………………………………………………………… 304
7. …Block Ciphers………………………...................................................................... 307
8. …AES Cryptosystem……………………………………………………………….. 309
9. ……Encryption Process…………………………………………………………….. 312
10. ………SubBytes…..……..………………………………………………………….. 314
11. ………ShiftRows………..………………………………………………………….. 318
12. ………MixColumns……..………………………………………………………….. 319
13. ………AddRoundKey…...………………………………………………………….. 320
14. ……Key Schedule…………………………………………………………………... 322
15. Asymmetric Cryptography…………………………………………………….......... 332
16. …Goals of Cryptography…………………………………………………………… 334
17. ……Confidentiality..………………………………………………………………... 334
18. ……Integrity………………………………………………………………………... 335
19. ……Authentication..………………………………………………………………... 336
20. ……Nonrepudiatin…...……………………………………………………………... 338
21. …RSA………………………………………………................................................. 341
[8]
22. ……RSA Algorithm………………………………………………………………… 344
23. Cryptographic Hash Functions……………………………………………………… 356
24. …Message Authentication………………………………………………………….. 358
25. …Confidentiality, Authentication, and Signature....................................................... 366
26. …Message Authentication Code (MAC)…………………………………………… 370
27. …Digital Signature…………………………………………………………………. 373
28. ……Digital Signature Standard (DSS)……………………………………………... 377
29. Key Distribution…………………………………………………….......................... 380
30. …Using Symmetric Key Encryption…………………………………….................. 381
31. …Using Asymmetric Key Distribution…………………………………................... 384
32. Distribution of Public Keys…………………………………………………………. 386
33. …Using Public-Key Authority…………………………………................................ 386
34. …Using Public-Key Certificate.....……………………………................................. 388
35. Inside Secure Socket Layer (SSL)…………………………………………………... 391
36. Perfect Forward Secrecy (PFS)…..……………………………................................. 407
37. Success Algorithms……………………………………………................................. 418
38. References…………………………………………………………………………... 424
39. Appendixes.……………………………………………………................................. 425
[9]
About the Author
‫املشد‬ ‫أمحد‬
ُ
‫أحببت‬
‫ذ‬ُ‫م‬ ‫الكمبيوتر‬
‫ُن‬‫ك‬
ُ
‫ت‬
‫مع‬ ‫يل‬ُ‫م‬‫َعا‬‫ت‬ ‫أثناء‬ ‫عادة‬ َ
‫بالس‬ ‫ر‬ُ‫ع‬‫أش‬ ‫نفيس‬ ُ
‫ت‬‫وجد‬ ‫ندما‬‫ع‬ ‫ذلك‬ ُ
‫كت‬َ‫أدر‬ ،ً‫ا‬‫صغري‬
‫التصميم‬ ‫برامج‬
‫والتطوير‬
‫املختلفة‬
..
ُ‫ث‬
‫عندم‬ ‫أكثر‬ ‫ق‬ُّ‫م‬َ‫ع‬َ‫ت‬‫بال‬ ‫بدأت‬ ‫م‬
‫ا‬
‫وأمن‬ ،‫بالشبكات‬ ‫ألذتم‬ ‫ت‬ ُ
‫َرب‬‫ك‬
.‫التشغيل‬ ‫وأنظمة‬ ،‫املعلومات‬
‫ين‬ ّ ُ
‫ُس‬َ‫ي‬
‫ال‬
ُ
‫تواص‬
‫ل‬
‫مع‬
‫كم‬
..
a.almashad@gmail.com
Acknowledgement
‫أ‬
‫بدأ‬
‫ب‬
ُ
‫ش‬
‫ك‬
‫ر‬
‫ا‬
،‫ة‬َ‫ديد‬َ‫ع‬‫ال‬ ‫ه‬‫م‬َ‫ع‬‫ن‬ ‫عىل‬ ‫َعاىل‬‫ت‬ ‫هلل‬
‫وعائلتي‬
‫و‬ ،‫وأصدقائي‬
.ُ‫ه‬‫ن‬‫م‬ ُ
‫مت‬ّ‫ل‬َ‫ع‬َ‫ت‬ ‫ن‬َ‫م‬ ‫ُل‬‫ك‬
‫السيد‬ ‫أشكر‬ ‫أن‬ ُ
‫ب‬‫وأح‬
Jon Erickson
،
‫الك‬‫المت‬
‫ه‬
‫قريد‬ ‫ة‬َ‫ب‬‫وذ‬َ‫م‬
:‫هري‬ َ
‫الش‬ ‫تابه‬‫ك‬ ‫يف‬ ‫ت‬ َ‫ر‬َ‫ه‬َ‫ظ‬ ،!‫ة‬
“Hacking, The art of exploitation”
..
‫القتباس‬ ‫مادقعني‬
‫األ‬ ‫بعض‬
‫الربجمية‬ ‫كواد‬
ُ‫ه‬‫من‬
‫ألقوم‬
‫كتايب‬ ‫يف‬ ‫ورشحها‬ ‫بتحليلها‬
،
‫عض‬َ‫ب‬‫ب‬ ‫استعنت‬ ‫َام‬‫ك‬
‫املؤلفات‬
‫طرى‬ُ‫أل‬‫ا‬
.‫جال‬َ‫مل‬‫ا‬ ‫ذا‬‫ِب‬ ‫صني‬ ِّ
‫تخص‬ُ‫مل‬‫ا‬ ‫دونات‬ُ‫م‬‫و‬
‫أنه‬ ‫املعلوم‬ ‫من‬
‫ل‬
‫ن‬
‫م‬ّ‫ل‬‫َع‬‫ت‬
‫م‬ُ‫أل‬‫ا‬ ‫نا‬‫ت‬َ‫غ‬ُ‫ل‬‫ب‬ ‫لوم‬ُ‫ع‬‫ال‬ ‫نا‬
،
َ‫ن‬ ‫ا‬‫مل‬ ً‫ام‬‫ه‬َ‫ق‬َ‫و‬ ً‫ة‬‫قو‬ ‫أشد‬ ‫نكون‬ َ
‫س‬
‫لىل‬ ‫طر‬‫َض‬‫ن‬ ‫كننا‬‫ل‬ ،!‫لنسانية‬ ‫بيعة‬َ‫ط‬ ‫هذه‬َ‫ق‬ ،‫َلقاه‬‫ت‬
‫ا‬
..‫لدينا‬ ‫وارد‬َ‫مل‬‫ا‬ ‫لفقر‬ ‫األجنبية‬ ‫باللغات‬ ‫لتعلم‬
‫أن‬ ‫أمتنى‬ ‫ذا‬‫وهل‬
ُ‫ن‬
‫ساذ‬
‫م‬
‫د‬ّ‫ي‬‫ج‬ ‫بمنهجية‬ ،‫العربية‬ ‫لغتنا‬‫ب‬ ‫لوم‬ُ‫ع‬‫ال‬ ‫لثراء‬ ‫يف‬
‫ة‬
.‫ط‬‫بس‬ُ‫م‬ ‫سلوب‬ُ‫أ‬‫و‬
[10]
What you need for this book
‫أس‬‫ب‬ ‫راية‬‫د‬ ‫عىل‬ َ
‫أنك‬ ‫ض‬ َ
‫فرت‬َ‫ي‬ ‫الكتاب‬ ‫ذذا‬
‫ُمبيوتر‬‫ك‬‫ال‬ ‫اسيات‬
‫العام‬
‫ة‬
‫األساسي‬ ‫فاذيم‬َ‫مل‬‫وبا‬ ،
‫ة‬
‫ر‬ِّ‫ق‬‫تو‬ُ‫مل‬‫كا‬ ،‫للشبكات‬
‫ة‬
‫ج‬َ‫نه‬َ‫م‬ ‫يف‬
‫شهادة‬
“Network+”
َ‫ق‬‫عر‬َ‫مل‬‫ا‬ ‫وبعض‬ ،
‫ة‬
َ
‫ثل‬‫م‬ ‫التشغيل‬ ‫ة‬َ‫م‬‫بأنظ‬
Windows
‫و‬
Linux
.
Preface
‫يف‬
‫ذذا‬
‫الكتاب‬
‫ن‬
‫قوم‬
‫عىل‬ ‫الضوء‬ ‫بتسليط‬
‫القرصنة‬
‫و‬ ،‫املعلومات‬ ‫وأمن‬ ‫اإللكرتونية‬
‫حتى‬
‫رشح‬ ‫من‬ ‫نتمكن‬
‫قلس‬
‫فة‬
‫اإل‬
‫واألنظمة‬ ‫البيانات‬ ‫تأمني‬ ‫أو‬ ‫طرتاق‬
‫بحاج‬ ‫قنحن‬ ،
‫ة‬
‫أمور‬ ‫بعدة‬ ‫لإلملام‬
‫حتضريية‬
،
‫ب‬ ‫تبدأ‬
‫معرقة‬
‫ال‬
Computer
Architecture
‫التشغيل‬ ‫وأنظمة‬
Windows)
‫و‬
(Linux
،
‫و‬
‫ا‬ ‫لربوتوكوالت‬ ‫اجليد‬ ‫الفهم‬
‫لشبكات‬
،‫التشفري‬ ‫وتكنولوجيا‬
‫الربجمة‬ ‫لغات‬ ‫وبعض‬
َ‫ك‬
ُ‫ل‬
‫ال‬ ‫غة‬
C
،
‫و‬
Scripting language
‫كا‬
‫ل‬
Python
.
‫يف‬ ‫الكتاب‬ ‫يتدرج‬
‫تناول‬
‫األمور‬ ‫ذذه‬
،‫ذرمي‬ ‫بشكل‬
‫الربجمة‬ ‫أساسيات‬ ‫بتبسيط‬ ‫يبدأ‬
‫ال‬ ‫ومبادئ‬
Computer
Architecture
،‫للقارئ‬
،‫األبواب‬ ‫لبقية‬ ‫األساس‬ ‫تعد‬ ‫حيث‬
‫ثم‬
‫ينتقل‬
‫الشبكات‬ ‫علوم‬ ‫لىل‬
‫و‬
‫آلية‬
‫بني‬ ‫البيانات‬ ‫انتقال‬
‫األنظمة‬
‫ثم‬ ،
‫ليبدأ‬ ‫أكثر‬ ‫يتعمق‬
‫ب‬
‫رشح‬
‫وحتليل‬
‫اإلطرت‬ ‫آليات‬
‫و‬ ‫اق‬
‫احلامية‬
،
‫وخيتم‬
‫ب‬
‫التشفري‬ ‫علوم‬
‫الالزمة‬
‫لتحقي‬
‫ق‬
‫واملوثوقية‬ ‫والسالمة‬ ‫اخلصوصية‬
.
‫ب‬ ‫الكتاب‬ ‫موضوعات‬ ‫لعداد‬ ‫تم‬
‫عتمدة‬ُ‫م‬ ‫تكون‬ ‫حيث‬
،‫يل‬ ُ
‫تسلس‬ ‫بشكل‬ ‫بعضها‬ ‫عىل‬
‫لكن‬
‫بإمكانك‬
‫كام‬ ‫التنقل‬
‫داطل‬ ‫تشاء‬
‫كنت‬ ‫لذا‬ ‫الكتاب‬
‫املطلوبة‬ ‫باألساسيات‬ ً‫ام‬‫ل‬ُ‫م‬
.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[11]
Part I
Programming
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[12]
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[13]
Introduction
‫أحد‬ ‫عن‬ ‫عبارة‬ ..‫أعجبتني‬ ‫بمقولة‬ ‫أبدأ‬ ‫أن‬ ُ
‫حب‬ُ‫أ‬
‫ال‬ ‫مفهوم‬ ‫ح‬ِّ‫ُصح‬‫ت‬ ‫التي‬ ‫التعريفات‬
‫قرصنة‬
!‫الكثري‬ ‫عند‬
:
“Hacker is a term for both those who write code, and those who exploit it!”
َ‫ت‬‫ال‬ ‫يف‬ ‫التكنيك‬ ‫نفس‬ ‫لدهيم‬ ‫النهاية‬ ‫يف‬ ‫أهنم‬ ‫لال‬ ‫منهم‬ ‫كل‬ ‫أذداف‬ ‫اطتالف‬ ‫من‬ ‫الرغم‬ ‫عىل‬
ُّ‫ل‬‫غ‬
ُ‫ه‬‫ألن‬ ،!‫ل‬‫شاك‬َ‫مل‬‫ا‬ ‫عىل‬ ‫ب‬
‫ببساط‬
‫ة‬
َ
‫جم‬ َ
‫الرب‬ ‫م‬‫ه‬َ‫ق‬ ..
‫ة‬
‫اكت‬ ‫عىل‬ ُ‫ه‬‫ساعد‬ُ‫ي‬ ،‫األنظمة‬ ‫عىل‬ ‫ل‬ُ‫ي‬‫التحا‬ ‫ريد‬ُ‫ي‬ ‫ن‬‫مل‬ ‫هم‬ُ‫م‬
‫الربجمي‬ ‫األططاء‬ ‫شاف‬
‫ة‬
،‫األمنية‬ ‫والثغرات‬
‫اآلطر‬ ‫اجلانب‬ ‫وعىل‬
..
‫م‬ِّ‫صم‬ُ‫م‬ ‫أو‬ ‫ج‬‫ربم‬ُ‫مل‬‫ا‬ ‫سينفع‬ )‫الربجمي‬ ‫اخلطأ‬ ‫أو‬ ‫نفسها‬ ‫(الثغرة‬ ‫االطرتاق‬ ‫ذذا‬ ‫حدوث‬ ‫لسبب‬ ‫الفهم‬
‫ا‬
‫يتفح‬ ‫حتى‬ ‫أكثر‬ ُ‫ه‬ُ‫علم‬ُ‫ي‬ َ
‫وس‬ ‫األمني‬ ‫لنظام‬
‫األجهز‬ ‫لعدادات‬ ‫و‬ ‫أكواده‬ ‫ص‬
‫ة‬
‫لديه‬
‫أن‬ ‫وبام‬ .
َ
‫جم‬ َ
‫الرب‬ ‫م‬‫ه‬َ‫ق‬
‫ة‬
‫األسايس‬ ‫ط‬ َ
‫الرش‬ ‫و‬ُ‫ذ‬
َ‫ت‬ ‫حتى‬
‫التي‬ ‫األساسيات‬ ‫عض‬َ‫ب‬‫ل‬ ‫ط‬ ّ‫س‬َ‫ب‬ُ‫م‬ ‫ح‬ َ
‫رش‬‫ب‬ ‫نبدأ‬ َ
‫سوف‬َ‫ق‬ ،‫الربوتوكوالت‬َ‫و‬ ‫األنظمة‬ َ‫ني‬َ‫ب‬ ‫األمور‬ ‫َسري‬‫ت‬ َ
‫َيف‬‫ك‬ ‫م‬َ‫فه‬
‫بغ‬ ‫تحتاجها‬ َ
‫س‬
َ
‫ُنت‬‫ك‬ ‫ما‬ ‫عن‬ ‫النظر‬ ‫ض‬
‫الربجم‬ ‫ب‬ ُ
‫حت‬
‫ة‬
.!‫ال‬ ‫أم‬
..‫رحلتنا‬ ‫لنبدأ‬ ‫ذيا‬
‫الربنامج‬
‫بار‬‫ع‬ ‫ذو‬
‫ة‬
‫جمموع‬ ‫عن‬
‫ة‬
‫كتوب‬َ‫م‬ ‫ل‬َ‫م‬ُ‫جل‬‫ا‬ ‫أو‬ ‫ر‬ُ‫ط‬‫األس‬ ‫من‬
‫ة‬
‫غ‬ُ‫ل‬‫ب‬
‫ة‬
‫عين‬ُ‫م‬
‫ة‬
‫قهناك‬ !‫قحسب‬ ‫الربامج‬ ‫ليست‬ ‫الواقع‬ ‫يف‬ ،
‫كثرية‬ ‫أمور‬
‫عىل‬ ‫مبنية‬ ‫حولنا‬
‫مفهوم‬
‫الربجم‬
‫ة‬
‫للسيار‬ ‫قيادتك‬ ً‫ال‬‫مث‬ ،
‫ة‬
َ َ
‫ربجم‬ُ‫مل‬‫ا‬ ‫األمور‬ ‫ن‬‫م‬ ‫ُعد‬‫ت‬
‫ة‬
ً
‫وذلك‬ ً‫ا‬‫ق‬َ‫ب‬‫س‬ُ‫م‬
‫باتباع‬
‫خلطوات‬ ‫ك‬
َ‫د‬‫د‬َ ُ
‫حم‬
‫ة‬
‫ياد‬‫الق‬ ‫ند‬‫ع‬
‫ة‬
‫الطبخ‬ ‫وصفات‬ ً‫ا‬‫أيض‬ ،
‫القدم‬ ‫ُرة‬‫ك‬ ‫رياضة‬ ً‫ا‬‫وأطري‬ ،
،
‫اهلدف‬ ‫قيها‬ ‫يتحقق‬
‫جمموعة‬ ‫بحدوث‬
‫من‬
‫اإلحتامالت‬
‫تنتهي‬ ،
‫بوضع‬
‫ُر‬‫ك‬‫ال‬
‫ة‬
‫الشبك‬ ‫داطل‬
‫ة‬
.
‫تاز‬ ُ
‫ُم‬ ‫ذذا‬
!
..
‫ا‬ ‫لىل‬ ‫نعود‬‫ل‬
‫لكمبيوتر‬
..
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[14]
‫أنه‬ ‫البدهيي‬ ‫من‬
‫أن‬ ‫قعلينا‬ ‫ما‬ ‫بيشء‬ ‫يقوم‬ ‫الكمبيوتر‬ ‫نجعل‬ ‫كي‬
‫ال‬ ُ‫ه‬‫ل‬ ‫نكتب‬
Instructions
‫ب‬
‫يفهمها‬ ‫لغة‬
‫وذي‬ ،
‫ال‬
Machine Language
،
‫الفهم‬ ‫صعبة‬ ‫لكنها‬
!
..
‫عبار‬ ‫ألهنا‬
‫ة‬
‫عن‬
Bits, and Bytes
‫من‬ ‫وختتلف‬
Architecture
.‫آلطر‬
‫بال‬ ‫الكتابه‬ ‫أزمة‬ ‫عىل‬ ‫نتغلب‬ ‫ولكي‬
Machine Language
‫ال‬ ‫لنا‬ ‫ظهر‬
Assembler
‫بار‬‫ع‬ ‫وذو‬
‫ة‬
‫ن‬َ‫ع‬
Translator
‫ال‬ ‫مجة‬ َ
‫رت‬‫ب‬ ‫يقوم‬
Assembly Instructions
‫ال‬ ‫اىل‬
Machine Language
.
‫ُعد‬‫ت‬
‫ال‬ ‫غة‬ُ‫ل‬
Assembly
‫أبسط‬
‫ن‬‫م‬
‫ال‬
Machine
،
‫هي‬َ‫ق‬
‫مفهوم‬ ‫وعناوين‬ ‫امت‬‫َل‬‫ك‬ ‫م‬‫َخد‬‫ت‬‫َس‬‫ت‬
‫ة‬
‫ال‬ ‫كس‬َ‫ع‬‫ب‬
Machine
‫تتشابه‬ ‫لكنها‬ .!‫ققط‬ ‫أرقام‬ ‫من‬ ‫تتكون‬ ‫التي‬
‫مع‬
‫ال‬
Machine
‫ال‬ ‫نوع‬ ‫باطتالف‬ ً‫ا‬‫أيض‬ ‫ختتلف‬ ‫أهنا‬ ‫يف‬
Architecture
.
‫ن‬‫ق‬ َ‫ر‬َ‫ع‬
‫حاج‬‫ب‬ ‫أننا‬ ‫ا‬
‫ة‬
‫لىل‬
Translator
‫ال‬ ‫من‬ ‫للتحويل‬
Assembly
‫ال‬ ‫لىل‬
Machine Language
،
‫اللغ‬ ‫وذي‬
‫ة‬
‫التي‬
‫ال‬ ‫يستطيع‬
CPU
‫بال‬ ‫األكواد‬ ‫ُب‬‫ت‬‫سنك‬ ‫ذل‬ ‫واآلن‬ ..‫ها‬َ‫م‬َ‫فه‬َ‫ي‬ ‫أن‬
Assembly
،‫؟‬
،!ً‫ا‬‫أيض‬ ً‫ا‬‫صعب‬ ‫األمر‬ ‫كون‬َ‫ي‬ َ
‫س‬
ُ‫ن‬‫َح‬‫ن‬
‫حاج‬‫ب‬
‫ة‬
‫لىل‬
Translator
‫م‬ ‫ه‬ُ‫ب‬ُ‫ت‬‫َك‬‫ن‬ ‫ما‬ ‫نا‬َ‫ل‬ ‫رتجم‬ُ‫ي‬‫ل‬ ‫آطر‬ ‫نوع‬ ‫ن‬‫م‬
‫ال‬ ‫غات‬ُ‫ل‬ ‫ثل‬‫م‬ ‫بلغات‬ ‫أكواد‬ ‫ن‬
C, C++
‫ال‬ ‫لىل‬
Machine
Language
‫ال‬ ‫سيكون‬ ‫نا‬ُ‫ذ‬.. ،
Translator
‫ال‬ ‫ذو‬
Compiler
.
‫ال‬ ‫يقوم‬ ..ً‫ا‬‫لذ‬
Compiler
‫ال‬ ‫بلغة‬ ‫األكواد‬ ‫برتمجة‬
C
‫ال‬ ‫نوع‬ ‫عىل‬ ً‫ء‬‫وبنا‬ ‫اآلله‬ ‫غة‬ُ‫ل‬ ‫لىل‬
Processor Architecture
‫بال‬ ‫ربجمني‬ُ‫مل‬‫ا‬ ‫اذتامم‬ ِّ
‫فُس‬ُ‫ي‬‫ما‬ ‫وذذا‬ ،‫املوجود‬
Source Code
‫ال‬ ‫ولكن‬ ،!‫الربنامج‬ ‫لنجاح‬ ‫األساس‬ ‫ألنه‬
Hacker
‫نا‬ُ‫ذ‬
‫ال‬ ‫أن‬ ‫عي‬َ‫ي‬
Compiled Program
‫سيتعامل‬ ‫الذي‬ ‫ذو‬
‫املطاف‬ ‫هناية‬ ‫يف‬
‫ال‬ ‫مع‬
CPU
،
‫تعامل‬ ‫لكيفية‬ ‫اجليد‬ ‫بالفحص‬ ‫و‬
‫ال‬
CPU
‫وال‬
Memory
‫اكتشاف‬ ‫من‬ ‫يتمكن‬ ‫بام‬ُ‫ر‬ ،‫الربنامج‬ ‫ذذا‬ ‫مع‬
‫ثغرة‬
‫ال‬ ‫أو‬ ‫الربنامج‬ ‫يف‬
Application
ُ‫مت‬
‫حينها‬ ُ‫ه‬‫ن‬‫ك‬
‫لحداث‬ ‫من‬
crash
‫ال‬ ‫ذذا‬ ‫يقوده‬ ‫وربام‬ ،‫له‬
crash
‫ال‬ ‫توجيه‬ ‫حماولة‬ ‫لىل‬
execution flow
‫أطرى‬ ‫ألماكن‬
‫داطل‬
‫ال‬
memory
‫ال‬ ‫من‬ ‫جمموعة‬ ‫ِبا‬ ‫يضع‬ ‫حيث‬
instructions
‫ُسميها‬‫ن‬
shellcode
‫ال‬ ‫ليقوم‬ ،
CPU
‫استكامل‬ ‫من‬ ً‫ال‬‫بد‬ ‫بتنفيذذا‬
.!‫الربنامج‬ ‫تنفيذ‬
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[15]
‫ذذا‬ ‫عىل‬ ‫يؤكد‬
‫األمر‬
‫السيد‬
"
Dave Aitel
"
‫بار‬‫الع‬ ‫ه‬‫ذ‬َ‫ِب‬
‫ة‬
:
“Hacking is not reverse engineering!, your goal is not to come up with original source code for
the application!, your goal is to have a greater understanding of the program or system than the
people who built it”.
‫تطوي‬ ‫تم‬
‫تقنيات‬ ‫ر‬
‫ملنع‬ ‫أمنية‬
‫او‬ ُ
‫حم‬
‫ذه‬َ‫ذ‬ ‫ب‬ُ‫ع‬‫َال‬‫ت‬‫ال‬ ‫الت‬
‫نها‬‫م‬ ،
SafeSEH
‫وال‬ ،
Nonexecutable Stack
‫ال‬ ‫أو‬
Randomized Stack Space
،
‫و‬
‫قامت‬
‫مايكروسوقت‬
‫شهرية‬ ‫تقنية‬ ‫بتطوير‬
..
‫ذي‬
“DEP”
،
‫التقنيات‬ ‫من‬ ‫وغريذا‬
‫يف‬ ً‫ا‬‫الحق‬ ‫ناقشتها‬ُ‫م‬ ‫جري‬َ‫ي‬‫س‬ ‫التي‬ ‫األمنية‬
‫الثالث‬ ‫الباب‬
.‫اهلل‬ ‫بإذن‬
..!‫رائع‬ ‫ذذا‬
‫ال‬ ‫ة‬َ‫غ‬ُ‫ل‬ ‫ن‬‫م‬ ‫َستفيد‬‫ن‬ َ
‫س‬ ‫ماذا‬ ‫ولكن‬
Assembly
..
‫؟‬
،
‫ال‬ ‫م‬‫َخد‬‫ت‬‫َس‬‫ن‬ َ
‫س‬ ‫ققط‬ ‫ُنا‬‫ك‬ ‫لذا‬
Compiler
‫لىل‬ ‫ُريد‬‫ن‬‫ما‬ ‫ة‬َ َ
‫رتمج‬‫ل‬
‫ال‬
Machine Language
.!‫األمر‬ ‫وينتهي‬
‫ة‬َ‫غ‬ُ‫ل‬‫ل‬ ‫اخلصائص‬ ‫بعض‬ ‫أوضح‬ ‫دعني‬ ‫ولكن‬ ،‫منطقي‬ ‫ذذا‬ ..‫نعم‬
‫ال‬
Assembly
‫وا‬
‫أمهيتها‬ ‫ك‬َ‫وحد‬ ‫َعي‬‫ت‬ ‫َجعلك‬‫ت‬ َ
‫س‬ ‫لتي‬
.

‫ال‬
Assembly
ُ‫ت‬
َ‫ق‬‫ري‬َ‫ط‬ َ
‫عترب‬
‫ة‬
‫َخ‬‫ت‬‫يس‬
‫ال‬ ‫عراض‬‫الست‬ ‫ني‬‫ربجم‬ُ‫مل‬‫ا‬ ‫ها‬ُ‫م‬‫د‬
"
Machine Language Instructions
"
‫ال‬ ‫لىل‬ ‫لعطاؤذا‬ ‫َم‬‫ت‬ ‫التي‬
CPU
.

‫ال‬
Assembly
‫القة‬َ‫ع‬‫ب‬ ‫تتعامل‬
One-to-One
‫ال‬ ‫مع‬
Machine Language
‫ُل‬‫ك‬‫ل‬ ‫أنه‬ ‫بمعنى‬ ،
Instruction
‫ال‬ ‫غة‬ُ‫ل‬‫ب‬
Machine
‫لها‬‫قاب‬ُ‫ي‬
Instruction
‫ال‬ ‫ة‬ُ‫غ‬ُ‫ل‬‫ب‬
Assembly
‫ريق‬َ‫ط‬‫ب‬ ُ‫ه‬‫ح‬‫يوض‬
‫ة‬
‫ال‬ ‫تعامل‬َ‫ي‬ َ
‫َيف‬‫ك‬ ‫َفهم‬‫ت‬‫ل‬ ‫أسهل‬
CPU
‫ثال‬‫َم‬‫ك‬‫و‬ ،!‫عليه‬ ‫ل‬َ‫عم‬َ‫ي‬ ‫الذي‬ ‫الربنامج‬ َ‫ع‬َ‫م‬ ‫عل‬‫الف‬‫ب‬
..
"
0xc3
"
‫أو‬
11000011
‫اآلل‬ ‫غة‬ُ‫ل‬‫ب‬
‫ة‬
‫بال‬ ُ‫ه‬‫قابل‬ُ‫ي‬
Assembly
‫ذذه‬
:‫ة‬َ‫م‬‫َل‬‫ك‬‫ال‬
"
ret
"
‫عنى‬َ‫م‬‫ب‬
(return)
.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[16]
‫األمر؟‬ ‫ذذا‬ ‫ُطبق‬‫ن‬ َ
‫وكيف‬
‫ى‬ّ‫سم‬ُ‫ي‬ ‫ما‬ ‫م‬‫َخد‬‫ت‬‫َس‬‫ن‬ ‫نا‬ُ‫ذ‬
‫بال‬
Disassembler
‫ال‬ ‫ترمجة‬ ‫بإعادة‬ ‫يقوم‬ ‫والذي‬
Machine Language
‫ال‬ ‫لغة‬ ‫لىل‬
Assembly
‫والتحليل‬ ‫الفهم‬ ‫ل‬ُ‫ه‬‫س‬َ‫ي‬ ‫كي‬
.
‫تأمل‬
‫معي‬
‫مغزى‬ ‫لك‬ ‫ستوضح‬ ‫الصورة‬ ‫ذذه‬
‫األمر‬
..
‫توضح‬ ‫الصورة‬ ‫ذذه‬
‫لنا‬
‫به‬ ‫مايقوم‬
‫كل‬
‫من‬
‫ال‬
malware author
‫بلغه‬ ‫أكواده‬ ‫يكتب‬ ‫حيث‬
‫ال‬ ‫مثل‬
C
‫ال‬ ‫عمل‬ ‫يرتكز‬ ‫بينام‬ ،
malware
analyst
‫وتدقيق‬ ‫قحص‬ ‫يف‬
‫ال‬
instructions
‫ال‬ ‫أو‬
software behavior
‫ال‬ ‫باستخدام‬
Hex Auditors
‫كال‬
IDA Pro
.‫وغريذا‬
‫عىل‬ ‫الرتكيز‬ ‫ذو‬ ‫الشكل‬ ‫ذذا‬ ‫ن‬‫م‬ ُ‫ه‬‫ُريد‬‫ن‬ ‫ما‬
‫ن‬‫م‬ ٍ‫ُل‬‫ك‬ ‫وظيفة‬
‫ال‬
Compiler
‫ال‬ ‫و‬
Disassembler
.
‫ذ‬ ‫كان‬ ‫والتي‬ ،‫قدمة‬ُ‫مل‬‫ا‬ ‫ذذه‬ ‫هاية‬‫ن‬‫ل‬ ‫وصلنا‬ ‫نكون‬ ‫نا‬ُ‫ذ‬ ‫لىل‬
‫دقها‬
‫الربجم‬ ‫أمهية‬ ‫إلدراك‬ ‫حتفيزك‬
‫ة‬
..!
‫ذلك؟‬ ‫أدركت‬ ‫ذل‬
،
..!‫جيد‬
‫ذيا‬
‫الربجم‬ ‫أساسيات‬ ‫برشح‬ ‫لنبدأ‬ ً‫ا‬‫لذ‬
‫ة‬
‫ال‬ ‫ة‬َ‫غ‬ُ‫ل‬‫ب‬
C
.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[17]
Control Structures
‫الطبيعي‬ ‫من‬
َ‫موع‬ َ
‫جم‬ ‫ن‬‫م‬ ‫يتكون‬ ‫الربنامج‬ ‫أن‬
‫ة‬
‫ال‬ َ‫ن‬‫م‬
Instructions
‫ظهرت‬ ‫لذا‬ ‫العمل‬ ‫ما‬ ‫ولكن‬ ،ً‫ا‬‫باع‬‫ت‬ ‫تنفيذذا‬ ‫يتم‬ ‫التي‬
‫اخليارات‬ ‫بعض‬
‫م‬‫َخد‬‫ت‬‫س‬ُ‫مل‬‫ا‬ ‫مع‬ ‫التعامل‬ ‫أثناء‬ ‫العقبات‬ ‫أو‬
‫احليا‬ ‫واقع‬ ‫ن‬‫م‬ ‫ثال‬‫م‬ ‫ب‬‫َرض‬‫ن‬‫ل‬ ‫؟‬
‫ة‬
‫للسيار‬ ‫تك‬َ‫د‬‫يا‬‫ق‬ ‫أثناء‬ َ
‫أنت‬ ،
‫ة‬
،
‫ال‬ ‫تفعيل‬ ‫ُك‬‫ن‬‫مك‬ُ‫ي‬
GPS
‫قيقوم‬
َ‫ه‬‫ج‬‫للو‬ ‫د‬‫د‬َ ُ
‫حم‬ ‫سار‬َ‫م‬ ‫م‬‫س‬ َ‫ر‬‫ب‬
‫ة‬
‫الشوارع‬ ‫أحد‬ ‫وجدت‬ ‫أو‬ ‫طاطئ‬ ‫طريق‬ ‫يف‬ َ
‫ت‬‫ِس‬ ‫لذا‬ ‫ولكن‬ ،
‫ال‬ ‫قسيقوم‬ ‫مسدوده‬
GPS
‫ال‬ ‫بتغيري‬
Route
‫ا‬ ‫عىل‬
‫نس‬ ً‫ا‬‫أيض‬ ُ‫َحن‬‫ن‬ ،!‫لفور‬
َ َ
‫جم‬ َ
‫الرب‬ ‫يف‬ ‫التكنيك‬ ‫نفس‬ ‫م‬‫َخد‬‫ت‬
‫ة‬
‫ط‬َ‫خ‬‫ب‬ ‫م‬‫ك‬َ‫َح‬‫ت‬َ‫ن‬َ‫ق‬ ،
‫ال‬ ‫ري‬ َ
‫س‬
Instructions
‫ُق‬‫ن‬ ‫ا‬‫مل‬ ً‫ا‬‫قق‬‫و‬
.‫ف‬‫وق‬َ‫مل‬‫ا‬ ‫يه‬‫قتض‬َ‫ي‬ ‫ا‬‫ومل‬ ‫ه‬‫ر‬ ِّ‫ر‬
‫ال‬ ‫بعض‬ ‫عن‬ ‫سنتكلم‬
Statements
‫ال‬ ‫بعمل‬ ‫تقوم‬ ‫التي‬
"
Control
"
‫ام‬ َ
‫للرب‬
‫السياره‬ ‫قيادة‬ ‫ثال‬‫م‬ ‫َطبيق‬‫ت‬‫ب‬ ‫ج‬
.
If-Then-Else
‫دع‬
‫أن‬ ‫نتصور‬ ‫نا‬
‫نا‬
‫ن‬
‫سري‬
‫يف‬
‫رئييس‬ ‫شارع‬
..

‫قإن‬
(If)
‫الشارع‬ ‫يف‬ ‫اإلصالحات‬ ‫بعض‬ ‫تواجد‬ َ
‫صادف‬
(Condition)
..

ً‫ا‬‫لذ‬
(Then)
،
‫ال‬ ‫بعض‬ ‫بتنفيذ‬ ‫سنقوم‬
Instructions
!‫ق‬‫العائ‬ ‫ذذا‬ ‫تفادي‬‫ل‬
..

‫ذلك‬ ‫غري‬
(Else)
،
‫اإلصالحات‬ ‫ف‬‫ُصاد‬‫ت‬ ‫مل‬ ‫طاملا‬ ‫سريك‬ ‫باستكامل‬ ‫م‬ُ‫ق‬
.(Condition)
If (condition) then
{
Set of instructions to execute if the condition is met;
}
Else
{
Set of instruction to execute if the condition is not met;
}
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[18]
While/Until Loop
‫أحي‬
‫جمموع‬ ‫تنفيذ‬ ‫ربمج‬ُ‫مل‬‫ا‬ ‫ريد‬ُ‫ي‬ ً‫ا‬‫ان‬
‫ة‬
‫ال‬ ‫من‬
Instructions
‫مر‬ ‫من‬ ‫أكثر‬
‫ة‬
،!
‫ال‬ ‫له‬ ‫تضع‬ ‫أن‬ ‫وستحتاج‬
Condition
‫التي‬
‫س‬
‫ي‬
‫التكرار‬ ‫بتنفيذ‬ ‫عليها‬ ً‫ء‬‫بنا‬ ‫قوم‬
.
:‫املثال‬ ‫ذذا‬ ‫لنأطذ‬
"
‫لذ‬ ،‫اجلوع‬ ‫أصابك‬ ‫لن‬
‫التهم‬ ‫ثم‬ ‫الطعام‬ ‫عىل‬ ‫واحصل‬ ‫ذب‬
‫ة‬
"
..
‫الثاين‬ ‫القوس‬ ‫ينتهي‬
({)
‫ال‬ ‫قيعود‬
Pointer
‫الب‬ ‫لىل‬
‫داية‬
‫أطرى‬ ً‫ة‬‫مر‬ ‫الرشط‬ ‫من‬ ‫قيتحقق‬
..
‫جائع؟‬ ‫الزلت‬ ‫ذل‬
..
‫الدال‬ ‫ج‬‫طار‬ ‫ج‬ ُ‫َخر‬‫ن‬ َ
‫س‬ ً‫ا‬‫لذ‬ ،!‫ال‬
‫ة‬
.
While (you are hungry)
{
Find some food;
Eat the food;
}
‫الكوب‬ ‫عىل‬ ‫املكتوب‬ ‫الكود‬ ‫داللة‬ ‫قهمت‬ ‫ذل‬ ..‫واآلن‬
‫صفحة‬ ‫يف‬ ‫املوجود‬
‫الباب؟‬ ‫ذذا‬ ‫عنوان‬
.
‫دالة‬
Until
‫ال‬ ‫نفس‬ ‫ذي‬
While
:‫أنه‬ ‫أي‬ ،!‫معكوس‬ ‫برشط‬ ‫ولكن‬
‫باألكل‬ ‫استمر‬ ،!‫بعد‬ ‫تشبع‬ ‫مل‬ ‫أنك‬ ‫لطاملا‬
.
Until (you are not hungry)
{
Find some food;
Eat the food;
}
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[19]
For Loop
‫اخلطوات‬ ‫ذذه‬ ،‫ططوات‬ ‫ة‬ّ‫د‬‫ع‬‫ب‬ ‫بالقيام‬ ‫الربنامج‬ ‫ُخرب‬‫ن‬ ‫كأن‬ .‫ات‬ ّ‫ر‬َ‫مل‬‫ا‬ َ‫ن‬‫م‬ ‫د‬َ‫د‬َ‫ع‬‫ل‬ ‫ما‬ ٍ‫يشء‬ ‫تكرار‬‫ل‬ ‫احلاجه‬ ‫عند‬ ً‫ا‬‫أيض‬ ‫نستخدمها‬
.‫الداله‬ ‫من‬ ‫باخلروج‬ ‫سيقوم‬ ‫املرات‬ ‫عدد‬ ‫انتهاء‬ ‫وبعد‬ .‫ِبا‬ ‫ه‬ُ‫ُخرب‬‫ن‬ َ
‫س‬ ‫ات‬ ّ‫ر‬َ‫مل‬‫ا‬ ‫ن‬‫م‬ ‫د‬َ‫د‬َ‫ع‬‫ل‬ ‫َررذا‬‫ك‬ُ‫ي‬ َ
‫س‬
‫ثال‬‫م‬ ‫ماييل‬
‫ذذه‬ ‫لتوضيح‬
‫الدال‬
‫ة‬
ٍ‫كل‬ ‫باستخدام‬ ‫تطبيقه‬‫ب‬ ‫نقوم‬ َ
‫س‬ ،‫رتات‬‫م‬ ‫كيلو‬ ‫ة‬ َ
‫س‬ َ
‫َخ‬ ‫ساقة‬َ‫مل‬ ‫ة‬َ‫ب‬َ‫ك‬‫ر‬َ‫مل‬‫ا‬ ‫قيادة‬‫ل‬ ‫األمر‬ ‫عطي‬ُ‫ي‬ ‫كود‬ ‫ن‬َ‫ع‬ ‫باره‬‫ع‬ ،
‫ن‬‫م‬
While
‫و‬
For
.
For (5 iterations)
Drive straight for 1 mile;
‫مل‬ ‫بالسري‬ ‫تقوم‬ ‫م‬ُ‫ث‬ ،‫واحد‬ ‫ميل‬ ‫ة‬َ‫ق‬‫سا‬َ‫مل‬ ‫السياره‬ ‫يادة‬‫ق‬‫ب‬ ‫َقوم‬‫ت‬ َ
‫س‬ ‫نا‬ُ‫ذ‬
‫امليل‬ ‫لىل‬ ‫تصل‬ ‫أن‬ ‫لىل‬ ‫وذكذا‬ ،‫ثالث‬ ‫ميل‬ ‫م‬ُ‫ث‬ ،‫آطر‬ ‫يل‬
.‫اخلامس‬
‫ال‬ ‫غة‬ُ‫ل‬‫ب‬ ‫الدالة‬ ‫شكل‬ ‫ذذا‬
C
:
For (i=0; i<5; i++)
Drive straight for 1 mile;
ً‫ا‬‫مع‬ ‫ُشاذد‬‫ن‬‫س‬
‫كيف‬
‫ن‬
..ً‫ا‬‫الحق‬ ً‫ا‬‫كثري‬ ‫سيتكرر‬ ‫ألنه‬ ،‫الكود‬ ‫ذذا‬ ‫قرأ‬
‫بقيمة‬ ‫ل‬ ُ
‫ط‬‫َد‬‫ت‬ َ
‫س‬
(i = 0)
‫قيمة‬ ‫قتزداد‬ ،‫واحد‬ ‫ميل‬ ‫ملساقة‬ ‫تقود‬ ‫ثم‬
i
‫قيكون‬ ،‫بواحد‬
(
i = 1
)
‫بالرقم‬ ‫ُقارنه‬‫ت‬ ‫ثم‬ ،
5
‫ذو‬ ‫ذل‬ ،
‫بتنفيذ‬ ‫قم‬ ‫ثم‬ ،‫آطر‬ ‫ميل‬ ‫مساقة‬ ‫لتقود‬ ‫اذذب‬ ،!‫نعم‬ ،‫أصغر؟‬
i++
‫قيكون‬
(
i = 2
)
‫بالرقم‬ ُ‫ه‬‫ن‬‫قار‬ ‫واآلن‬ ،
5
‫للقياد‬ ‫د‬ُ‫ع‬ ‫ثم‬ ،
‫ة‬
،
‫قيمة‬ ‫تكون‬ ‫أن‬ ‫لىل‬ ‫استمر‬
i
‫تساوي‬
5
‫بالرشط‬ ‫ُقارهنا‬‫ن‬‫ق‬ ،
(
i < 5
)
‫ال‬ ‫طارج‬ ‫قنخرج‬ ،!‫يتحقق‬ ‫مل‬ ‫أنه‬ ‫قنجد‬
.‫دالة‬
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[20]
‫باستخدام‬ ‫الرشط‬ ‫نفس‬ ‫ق‬ّ‫ب‬‫ُط‬‫ن‬‫س‬ ‫واآلن‬
While
Set the counter to 0;
While (the counter is less than 5)
{
Drive straight for 1 mile;
Add 1 to the counter;
}
( ‫العداد‬ ‫بتصفري‬ ‫سنقوم‬ ‫نا‬ُ‫ذ‬
0
( ‫ليصبح‬ ‫واحد‬ ‫بقيمة‬ ‫العداد‬ ‫وزيادة‬ ،‫واحد‬ ‫ميل‬ ‫ملساقة‬ ‫القيادة‬ ‫ثم‬ ،)
1
‫الع‬ ‫ثم‬ )
‫و‬
‫د‬
‫ة‬
‫للدالة‬
‫ب‬ ‫الرقم‬ ‫ومقارنة‬
5
( ‫ليصبح‬ ‫العداد‬ ‫وزيادة‬ ‫آطر‬ ‫ميل‬ ‫بمساقة‬ ‫للسري‬ ‫قنعود‬ ،‫أقل‬ ‫أنه‬ ‫قنجد‬
2
‫الوصول‬ ‫حتى‬ ‫وذكذا‬ )
( ‫للرقم‬
4
.‫النهاية‬ ‫قتكون‬ )
Variables
‫ُنا‬‫ن‬‫مك‬ُ‫ي‬ ‫لناء‬ ‫عن‬ ‫عبارة‬ ‫ذو‬ ‫املتغري‬
َ‫د‬ّ‫د‬ ُ
‫حم‬ ‫ة‬َ‫يم‬‫ق‬ ‫بداطله‬ ‫ع‬ َ
‫َض‬‫ن‬ ‫أن‬
‫ة‬
‫استخدام‬ ‫قبل‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫نوع‬ ‫حتديد‬ ‫من‬ ‫د‬ُ‫ب‬‫ال‬ ،
‫شابه‬ُ‫م‬ ‫ذذا‬ ،‫ه‬
‫حيتفظ‬ ‫ال‬ ‫ربام‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫ذذا‬ .‫عليها‬ ‫ه‬َ‫ق‬ َ
‫لص‬ُ‫مل‬‫ا‬ ‫الصور‬ ‫أو‬ ‫الكتابة‬ ‫بوجود‬ ‫متييزذا‬ ‫نستطيع‬ !‫والعصائر‬ ‫املرشوبات‬ ‫جاجات‬ ُ‫لز‬
‫لفظة‬ ‫عليه‬ ‫لطالق‬ ‫قتم‬ ،‫منها‬ ‫ح‬ َ‫ر‬‫َط‬‫ن‬ ‫أو‬ ،‫عليها‬ ‫اإلضاقة‬ ‫أو‬ ،‫َغيريذا‬‫ت‬ ‫مكننا‬ُ‫ي‬ ،‫األبد‬ ‫اىل‬ ‫بداطله‬ ‫القيمة‬ ‫ِبذه‬
"
‫متغري‬
"
‫ماييل‬ ،
‫املوج‬ ‫تعريفه‬
‫ز‬
‫اإلنجليزي‬ ‫باللغه‬
‫ة‬
:
“An object that holds data that can be changed”
‫َوعه‬‫ن‬ ‫د‬ِّ‫د‬َ‫ُح‬‫ن‬‫و‬ ِّ
‫ري‬َ‫غ‬َ‫ت‬ُ‫مل‬‫ا‬ ‫اسم‬ ‫ُر‬‫ك‬‫َذ‬‫ن‬ ‫أن‬ ‫علينا‬ ‫جيب‬ ،ً‫ا‬‫برجمي‬
(declare your Variable)
‫أرقام‬ ‫أو‬ ً‫ا‬‫حروق‬ ‫سيحوي‬ ‫كان‬ ‫لذا‬ ‫ما‬
ً‫ال‬‫مث‬
.
‫احلال‬ ‫كام‬ ،‫برناجمك‬ ‫داطل‬ ‫باستخدامه‬ ‫تقوم‬ ‫أن‬ ‫قبل‬ ‫ذلك‬ ‫يتم‬ ‫أن‬ ‫جيب‬
‫مع‬
‫ُر‬‫ك‬‫َذ‬‫ن‬‫و‬ ‫ف‬ ِّ‫ر‬َ‫ع‬ُ‫ن‬ ‫قنحن‬ ،‫الطبخ‬ ‫وصفات‬
.‫بالطهي‬ ‫الرشوع‬ ‫قبل‬ ‫وأنواعها‬ ‫بأسامئها‬ ‫قادير‬َ‫مل‬‫ا‬
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[21]
‫ال‬ ‫داطل‬ ‫ما‬ ٍ‫مكان‬ ‫يف‬ ‫بتخزينها‬ ‫اجلهاز‬ ‫يقوم‬ ‫املتغريات‬ ‫ذذه‬
Memory
،
.‫بعد‬ ‫قيام‬ ‫بالتفصيل‬ ‫األماكن‬ ‫ذذه‬ ‫عن‬ ‫سنتكلم‬
‫ال‬ ‫أنواع‬ ‫بعض‬ ‫ماييل‬
variables
:
int (integer values)
float (decimal floating)
char (single character values)
‫نا‬ُ‫ذ‬
‫ن‬
‫ق‬
‫و‬
‫م‬
‫تغريين‬ُ‫م‬ ‫َعريف‬‫ت‬‫ب‬
a
‫و‬
b
‫َوعيهام‬‫ن‬ ‫تحديد‬‫ب‬ ‫منا‬ُ‫ق‬‫و‬
(
int
،)
‫سيكون‬ ‫كالذم‬ ‫أن‬ ‫أي‬
object
ُ‫ه‬‫نوع‬ ‫عدد‬ ‫ب‬‫يستوع‬‫ل‬
"
Integer
"
.‫حيح‬ َ
‫ص‬ ‫دد‬َ‫ع‬ ،‫عد‬َ‫ب‬ ُ‫ه‬‫ق‬‫ر‬‫َع‬‫ن‬ ‫ال‬
int a, b;
:‫بسيط‬ ‫مثال‬ ‫نأطذ‬‫ل‬
int a = 13, b;
float k;
char z = 'A';
k = 3.14;
z = 'w';
b = a + 5;
‫تغري‬ُ‫م‬ ‫بتعريف‬ ‫نا‬ُ‫ذ‬ ‫منا‬ُ‫ق‬
a
‫الرقم‬ ‫وذو‬ !ً‫ا‬‫سبق‬ُ‫م‬ ‫بداطله‬ ‫ما‬ ‫وحددنا‬
13
..
‫آطر‬ ‫تغري‬ُ‫م‬ ‫ددنا‬ َ‫ح‬ ‫م‬ُ‫ث‬
b
‫نوعه‬ ،
"
‫صحيح‬ ‫عدد‬
"
‫ن‬‫ولك‬
‫ه‬‫ل‬‫داط‬‫ب‬ ‫حويه‬َ‫ي‬ َ
‫س‬ ‫ما‬ ‫ُحدد‬‫ن‬ َ‫مل‬
..
‫آطر‬ ‫تغري‬ُ‫م‬ ‫قنا‬‫ر‬َ‫ع‬ ‫م‬ُ‫ث‬
k
‫نوعه‬
"
‫عرشي‬ ‫عدد‬
"
‫آطر‬ ‫متغري‬ ‫ثم‬ ،
z
‫بد‬ ‫سيحوي‬
‫اطله‬
‫ذو‬ ‫واحد‬ ‫حرف‬
A
..
‫املتغري‬ ‫داطل‬ ‫وضعها‬ ‫نود‬ ‫التي‬ ‫القيمة‬ ‫حددنا‬ ‫وبعدذا‬
k
‫وذي‬
3.14
..
‫تغري‬ُ‫للم‬ ‫تغيري‬ ‫بإجراء‬ ‫منا‬ُ‫ق‬ ‫م‬ُ‫ث‬
z
‫احلرف‬ ‫وذو‬ ،‫بداطله‬ ‫ما‬ ‫استبدلنا‬ ‫حيث‬ ‫جديد‬ ‫من‬
A
..
‫ذو‬ ،‫آطر‬ ‫حرف‬ ‫منه‬ ً‫ال‬‫بد‬ ‫ووضعنا‬
w
..
‫أطربنا‬ ً‫ا‬‫أطري‬ ‫م‬ُ‫ث‬
‫صديقنا‬
‫تغري‬ُ‫مل‬‫ا‬
b
‫قيم‬ ‫داطله‬ ‫ن‬ ِّ‫خز‬ُ‫ي‬ َ
‫س‬ ُ‫ه‬‫أن‬
‫املتغري‬ ‫ة‬
a
‫وذي‬
13
‫عدد‬ ‫عليها‬ ً‫ا‬‫زائد‬
5
..
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[22]
‫قيمة‬ ‫ستكون‬ ‫وبالتايل‬
b
‫النهاية‬ ‫يف‬
18

.
‫ال‬ ‫بعض‬ ‫لتوضيح‬ ‫اآلن‬ ‫سننتقل‬
Operators
.‫همة‬ُ‫مل‬‫ا‬
Arithmetic Operators
Operation Symbol Example
Addition + b = a + 5
Subtraction - b = a - 5
Multiplication * b = a * 5
Division / b = a / 5
Modulo reduction % b = a % 5
‫ال‬ ‫توضيح‬‫ب‬ ‫نقوم‬ َ
‫س‬
"
Mod
"
‫تغري‬ُ‫م‬ ‫ض‬‫َفر‬‫ن‬‫ل‬ ،‫ثال‬‫َم‬‫ك‬‫و‬ ،‫ة‬َ‫سم‬‫الق‬ ‫عملية‬ ‫لجراء‬ ‫بعد‬ ‫تبقية‬ُ‫مل‬‫ا‬ ‫القيمة‬ ‫وذو‬
a=13
‫وأردنا‬
‫عىل‬ ‫القسمة‬
5
‫الناتج‬ ‫قيكون‬
2
‫الرقم‬ ‫من‬ ‫ويتبقى‬
13
‫ذي‬ ..‫قيمة‬ ‫ذذه‬ ‫سمة‬‫الق‬ ‫عملية‬ ‫بعد‬
(
3
.)
(13%5 = 3)
‫االطتصارات‬ ‫بعض‬ ‫أيضا‬ ‫نستخدم‬
(Shorthand Expressions)
‫ال‬ ‫دالة‬ ‫يف‬ ‫املستخدمة‬ ‫تلك‬ ‫مثل‬ ‫الدوال‬ ‫بعض‬ ‫يف‬
For
ً‫ا‬‫دوم‬
i++
.
Full Expression Shorthand Explanation
i = i + 1 i++ or ++i Add 1 to the variable
i = i - 1 i-- or --i Subtract 1 from the variable
‫ال‬ ‫مع‬ ‫القات‬َ‫ع‬‫ال‬ ‫ذه‬َ‫ذ‬ ‫استخدام‬ ‫م‬‫ت‬َ‫ي‬ ‫ما‬َ‫ند‬‫وع‬
Arithmetic Operators
‫قتخت‬
‫ل‬ ً‫ا‬‫تبع‬ ‫النواتج‬ ‫لف‬
‫ستخدم‬ُ‫مل‬‫ا‬ ‫االطتصار‬ ‫نوع‬
.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[23]
‫مثال‬
:
int a, b;
a = 5;
b = a++ * 6;
‫ن‬‫م‬ ً‫ال‬‫ك‬ ‫سيحوي‬ ‫ماذا‬
a
‫و‬
b
‫؟‬
:‫كالتايل‬ ‫الناتج‬ ‫سيكون‬ ..‫نعم‬
b = 30
a = 6
‫ملاذا؟‬
‫ألن‬
a++
‫بإضاقة‬ ‫الربنامج‬ ‫رب‬‫ُخ‬‫ن‬ ‫أننا‬ ‫تعني‬
1
‫املتغري‬ ‫قيمة‬ ‫لاىل‬
a
‫ولكن‬
"
‫بعد‬
"
‫العم‬ ‫لمتام‬
‫ل‬
‫احلسابية‬ ‫ية‬
!
.
:‫آطر‬ ‫ثال‬‫م‬ ‫لنستعرض‬
int a, b;
a = 5;
b = ++a * 6;
‫تغري‬ُ‫مل‬‫ا‬ ‫يمة‬‫ق‬ ‫تزداد‬ َ
‫س‬ ُ‫ه‬‫أن‬ ‫عني‬َ‫ي‬ ‫وذذا‬
a
"
‫قبل‬
"
:!‫الرضب‬ ‫ملية‬َ‫ع‬ ‫لجراء‬
a = a + 1;
b = a * 6;
‫قيمة‬ ‫تكون‬ ‫وبالتايل‬
b
‫النهاية‬ ‫يف‬
=
36
،
‫ويكون‬
(
a = 6
)
‫عي‬ُ‫م‬ ‫قيمة‬ ‫لضاقة‬ ‫اإلطتصار‬ ‫من‬ ‫كنوع‬ ً‫ا‬‫أيض‬ ‫ُنا‬‫ن‬‫مك‬ُ‫ي‬.. ،‫رائع‬ ‫ذذا‬
‫بالناتج‬ ‫واإلحتفاظ‬ ‫اجلمع‬ ‫بإجراء‬ ‫قيقوم‬ ،‫ما‬ ٍ‫تغري‬ُ‫مل‬ ‫نة‬
.‫األكواد‬ ‫يف‬ ً‫ا‬‫كثري‬ ‫استخدامها‬ ‫يتم‬ ،!‫الوقت‬ ‫نفس‬ ‫يف‬ ‫بداطله‬ ‫النهائي‬
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[24]
Full Expression Shorthand Explanation
i = i + 12 i+=12 Add some value to the variable.
i = i - 12 i-=12 Subtract some value from the variable.
i = i * 12 i*=12 Multiply some value by the variable.
i = i / 12 i/=12 Divide some value from the variable.
Comparison Operators
Condition Symbol Example
Less than < (a < b)
Greater than > (a > b)
Less than or
equal to <= (a <= b)
Greater than or
equal to >= (a >= b)
Equal to == (a == b)
Not equal to != (a != b)
‫نا‬‫ول‬َ‫ق‬ ‫عند‬
(a = 5)
،‫املثال‬ ‫سبيل‬ ‫عىل‬
..‫َعني‬‫ن‬ ُ‫َحن‬‫ن‬َ‫ق‬
‫ع‬ َ
‫ض‬
‫قيمة‬
5
ُ‫مل‬‫ا‬ ‫داطل‬
‫تغري‬
a
..
‫نكتب‬ ‫عندما‬ ‫بينام‬
(a = = 5)
‫قنحن‬ ،
‫تغري‬ُ‫مل‬‫ا‬ ‫لها‬‫م‬ َ
‫حي‬ ‫التي‬ ‫القيمة‬ ‫من‬ ‫ق‬ُ‫ق‬َ‫َح‬‫ت‬‫ال‬ ‫الربنامج‬ ‫من‬ ‫نطلب‬
a
‫كانت‬ ‫لذا‬ ‫ما‬
5
.‫ال‬ ‫أم‬
‫ذناك‬
symbol
‫استخدامه‬ ‫مكن‬ُ‫ي‬ ‫آطر‬
‫ال‬ ‫قبل‬ ‫فرده‬ُ‫م‬‫ب‬
condition
‫ال‬ ‫وذو‬
)!(
‫ويعني‬
"
Not
"
:‫كامييل‬
!(a < b) is equivalent to (a >= b)
‫ال‬ ‫مزي‬ َ‫ر‬‫ب‬ ‫م‬‫ه‬‫تام‬‫خ‬‫ب‬ ‫ونقوم‬
AND
‫وال‬
OR
:
Logic Symbol Example
OR || ((a < b) || (a < c))
AND && ((a < b) && !(a < c))
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[25]
ُ‫َحن‬‫ن‬ :‫األول‬ ‫املثال‬ ‫يف‬
‫ُريد‬‫ن‬ ‫نا‬ُ‫ذ‬
َ
‫حت‬
ّ‫أي‬ ‫قيق‬
‫الثاين‬ ‫أو‬ ‫األول‬ ‫ني‬َ‫ط‬ َ
‫الرش‬ َ‫ن‬‫م‬
..
‫النتيجه‬ ‫قتكون‬
True
.
‫الثا‬ ‫املثال‬ ‫ويف‬
‫سيكون‬ :‫ين‬
‫الناتج‬
True
ً‫ا‬‫مع‬ ‫الرشطني‬ ‫حتقق‬ ‫لذا‬ ‫ققط‬
..
‫قيمة‬ ‫تكون‬ ‫أن‬ ‫وذو‬
a
‫قيمة‬ ‫من‬ ‫أصغر‬
b
‫قيمة‬ ‫تقل‬ ‫ال‬ ‫الوقت‬ ‫نفس‬ ‫ويف‬
a
‫عن‬
‫قيمة‬
c
.
‫العالقة‬ ‫يوضح‬ ‫املثال‬ ‫ذذا‬
ً‫ا‬‫أيض‬
:
While ((hungry) && !(cat_present))
{
Find some food;
If(!(food_is_on_a_mousetrap))
Eat the food;
}
‫دالة‬ ‫تتذكر‬ ‫ذل‬
While
..‫؟‬
‫رش‬ ‫بوضع‬ ‫نا‬ُ‫ذ‬ ‫منا‬ُ‫ق‬
‫حلدوثها‬ ‫طني‬
‫ومه‬ ،
‫ا‬
‫آطر‬ ‫رشط‬ ‫قتح‬ ‫تم‬ ‫ثم‬ ،‫اجلبن‬ ‫قطعة‬ ‫عن‬ ‫قسيبحث‬ .‫ط‬‫الق‬ ‫ياب‬‫وغ‬ ،‫الفأر‬ ‫وع‬ ُ‫ج‬ :
.‫التهامها‬‫ب‬ ‫م‬ُ‫ق‬ ‫حينها‬ ،‫ئران‬‫الف‬ ‫صيدة‬َ‫م‬‫ب‬ ‫ت‬ َ‫يس‬َ‫ل‬ ‫ذذه‬ ‫بن‬ُ‫جل‬‫ا‬ ‫طعة‬‫ق‬ ‫تكون‬ ‫أن‬ ‫وذو‬
ً‫ا‬‫أيض‬ ‫ُنا‬‫ن‬‫مك‬ُ‫ي‬
‫اجلوع‬ ‫وث‬ُ‫د‬ ُ‫ح‬ ‫ن‬َ‫ع‬ ‫التعبري‬
‫بالصيغة‬
While (hungry ==1)
‫القيمة‬ ‫أن‬ ‫يرى‬ ‫الربنامج‬ ‫ألن‬
0
‫تعني‬
False
‫والقيمة‬
1
‫تعني‬
True
.
Functions
‫ال‬ ‫لىل‬ ‫اآلن‬ ‫سننتقل‬ ،‫األساسيات‬ ‫ذذه‬ ‫من‬ ‫انتهينا‬ ‫أن‬ ‫بعد‬
Functions
.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[26]
‫ال‬ ‫من‬ ‫معينة‬ ‫جمموعة‬ ‫استخدام‬ ‫ربمج‬ُ‫مل‬‫ا‬ ‫يود‬ ً‫ا‬‫أحيان‬
Instructions
‫قمث‬ ،‫ع‬‫وض‬َ‫م‬ ‫من‬ ‫أكثر‬ ‫يف‬ ‫بتنفيذذا‬ ‫ليقوم‬
ً‫ال‬
‫قرضنا‬ ‫لذا‬
‫ب‬ ‫اتصال‬ ‫قناة‬ ‫بإنشاء‬ ‫تقوم‬ ‫برجمية‬ ‫أسطر‬ ‫جمموعة‬ ‫بكتابة‬ ‫قمنا‬ ‫أننا‬
Server
‫وبطريق‬ ‫دد‬ ُ
‫حم‬
‫ة‬
‫برنامج‬ ‫ُب‬‫ت‬‫نك‬ ‫ُنا‬‫ك‬ ‫قإذا‬ ،‫معينة‬
‫م‬ ‫قليس‬ ،‫الكود‬ ‫داطل‬ ‫مواضع‬ ‫عدة‬ ‫يف‬ ‫السريقر‬ ‫ِبذا‬ ‫نتصل‬ ‫أن‬ ‫نا‬‫وأرد‬ ،‫طويل‬
‫مر‬ ‫كل‬ ‫األسطر‬ ‫ذذه‬ ‫تكرار‬ ‫احلكمة‬ ‫ن‬
‫ة‬
‫مك‬ُ‫ي‬ ،‫االتصال‬ ‫إلنشاء‬ ‫قيها‬ ‫نحتاج‬
‫ب‬ ‫أشبه‬ ‫يشء‬ ‫يف‬ ‫وضعهم‬ ‫ننا‬
Sub-Program
‫ى‬ّ‫سم‬ُ‫ي‬
"
Function
"
.
‫أردنا‬ ‫وكلام‬
‫ال‬ ‫ذذه‬ ‫عنوان‬ ‫بكتابة‬ ‫اكتفينا‬ ‫االتصال‬ ‫لنشاء‬
Function
.‫اجلهد‬ ‫لتوقري‬ ‫ققط‬
‫ل‬
:‫عليه‬ ‫ق‬ِّ‫ب‬َ‫ط‬ُ‫ن‬‫ل‬ ‫واقعي‬ ‫ثال‬‫م‬ ‫ذ‬ ُ
‫نأط‬
‫حتدد‬ ‫أن‬ ‫وتود‬ ،‫قليل‬ ‫بعد‬ ‫فرتق‬ُ‫م‬ ‫ُصادف‬‫ت‬ ‫ثم‬ ‫الشوارع‬ ‫أحد‬ ‫يف‬ ‫سيارتك‬‫ب‬ ‫َسري‬‫ت‬ ‫أنك‬ ‫ض‬‫نفر‬‫ل‬
‫اليمني‬ ‫لىل‬ ‫ستتجه‬ ‫كنت‬ ‫لذا‬ ‫ما‬
‫كتابة‬‫ب‬ ‫نا‬ُ‫ذ‬ ‫سنقوم‬ ،!‫اليسار‬ ‫لىل‬ ‫أو‬
Function
‫عليها‬ ‫ق‬‫ُطل‬‫ن‬
Function Turn
‫التفاصيل‬ ‫ن‬‫م‬ ‫جمموعة‬ َ
‫لك‬ ‫ز‬ِّ‫ُجه‬‫ن‬‫س‬ ‫أننا‬ ‫أي‬
‫مس‬ ‫بتغيري‬ ‫رغبتك‬ ‫عند‬ ‫اتباعها‬ ‫يتم‬ ‫سوف‬ ‫التي‬
‫برجمية‬ ‫ميزة‬ ‫سنستخدم‬ ‫ولكننا‬ ،!‫ارك‬
‫أن‬ ‫يف‬ ‫القرار‬ ‫لك‬ ‫سنرتك‬ ‫أننا‬ ‫وذي‬
‫االجت‬ ‫دد‬ ُ
‫حت‬
‫ذاته‬ ‫حد‬ ‫يف‬ ‫االجتاه‬ ‫سنعترب‬ .‫اليسار‬ ‫اىل‬ ‫أم‬ ‫اليمني‬ ‫لىل‬ ‫ستتجه‬ ‫كنت‬ ‫اذا‬ ‫قيام‬ ‫اه‬
Variable
‫يه‬ِّ‫م‬ َ‫ُس‬‫ن‬ َ
‫س‬
variable_direction
‫ال‬ ‫تقوم‬ ‫م‬ُ‫ث‬ ‫أنت‬ ُ‫ه‬ُ‫د‬‫د‬َ ُ
‫حت‬ ‫أن‬ َ
‫ك‬َ‫ل‬
Turn( )
‫عليه‬ ً‫ء‬‫بنا‬ ‫عملها‬ ‫بإجراء‬
‫ال‬ ‫ستقوم‬
Function
:‫اآليت‬ ‫بتنفيذ‬

‫اإلشار‬ ‫ضوء‬ ‫تشغيل‬
‫ة‬
‫ا‬ ‫حسب‬ ‫اليُسى‬ ‫أو‬ ‫اليمنى‬
‫لليه‬ ‫االنتقال‬ ‫املراد‬ ‫إلجتاه‬
(
(Activate Blinker
.

‫السيار‬ ‫تبدأ‬
‫ة‬
‫بالتباطئ‬
(
(Slow down
.

!‫لليها‬ ‫سندطل‬ ‫التي‬ ‫احلارة‬ ‫يف‬ ‫املرور‬ ‫حركة‬ ‫بتفحص‬ ‫سنقوم‬
(Check for oncoming traffic)
.
‫ال‬ ‫ذذه‬ ‫عمل‬ ‫وضح‬ُ‫ي‬ ‫ثال‬‫م‬ ‫ذذا‬
function
:
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[27]
Function Turn (variable_direction)
{
Activate the variable_direction blinker;
Slow down;
Check for oncoming traffic;
while (there is oncoming traffic)
{
Stop;
Watch for oncoming traffic;
}
Turn the steering wheel to the variable_direction;
while (turn is not complete)
{
if(speed < 5 mph)
Accelerate;
}
Turn the steering wheel back to the original position;
Turn off the variable_direction blinker;
}
‫األ‬ ‫س‬‫و‬َ‫ق‬‫ال‬ ‫أن‬ ‫ظ‬‫الح‬
)‫(اخلارجي‬ ‫ول‬
‫بينهام‬ ‫ت‬َ‫مت‬ ‫األحداث‬ ‫ومجيع‬ ،‫النهاية‬ ‫يف‬ ‫وغلقه‬ ‫البداية‬ ‫يف‬ ‫تحه‬َ‫ق‬ ‫َم‬‫ت‬
..
‫دالة‬ ‫َخدمنا‬‫ت‬‫اس‬
While
‫احل‬ ‫لىل‬ ‫طول‬ُ‫الد‬ ‫م‬َ‫د‬َ‫ع‬ ‫ط‬ َ
‫رش‬ ‫ع‬ َ
‫َض‬‫ن‬‫ل‬
‫ة‬َ‫مح‬َ‫د‬‫ز‬ُ‫م‬ ‫ا‬‫َوهن‬‫ك‬ ‫حالة‬ ‫يف‬ ‫ارة‬
..
،‫كذلك‬ ‫ُن‬‫ك‬َ‫ت‬ َ‫مل‬ ‫قإن‬
‫ال‬ ‫ل‬‫نتق‬َ‫ي‬ َ
‫س‬َ‫ق‬
pointer
‫ال‬ ‫لىل‬
Instruction
‫ال‬
ُ‫ه‬‫َرك‬‫ت‬ ‫(تم‬ ‫راد‬ُ‫مل‬‫ا‬ ‫اإلجتاه‬ ‫لىل‬ ‫ود‬‫ق‬‫امل‬ ‫دوران‬ ‫وذي‬ ‫تالية‬
‫السيار‬ ‫أن‬ ‫وذو‬ ‫آطر‬ ‫ط‬ َ
‫رش‬ ‫عنا‬ َ
‫ض‬َ‫و‬ ‫م‬ُ‫ث‬ ،)‫تغري‬ُ‫كم‬
‫ة‬
‫ِسع‬ ‫عىل‬ ‫تكون‬ ‫أن‬ ‫د‬ُ‫ب‬‫ال‬ ‫نفسها‬
‫ة‬
‫واالندما‬ ‫بالدوران‬ ‫للقيام‬ ‫كاقية‬
‫ج‬
ً‫ا‬‫مع‬ ‫دالتني‬ ‫قاستخدمنا‬ ‫باحلارة‬
..
Whlie
‫دالة‬ ‫وداطلها‬
if
..
‫الس‬ ‫د‬َ‫قو‬‫م‬ ‫ُعيد‬‫ن‬‫ل‬ ‫م‬ُ‫نه‬‫م‬ ‫جنا‬ َ‫ر‬ َ
‫ط‬ ‫م‬ُ‫ث‬
‫يار‬
‫ة‬
‫ئ‬‫ُطف‬‫ن‬‫و‬ ‫الطبيعي‬ ‫ه‬‫ضع‬َ‫و‬‫ل‬
‫اإلشار‬ ‫صباح‬‫م‬
‫ة‬
‫ال‬ ‫من‬ ‫روج‬ُ‫خل‬‫ا‬ ‫م‬ُ‫ث‬ ،
Function
.ً‫ا‬‫أطري‬
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[28]
‫ال‬ ‫غة‬ُ‫ل‬ ‫يف‬
C
‫لل‬ ‫استدعاء‬ ‫ث‬ُ‫حيد‬
Function
َ‫م‬‫قا‬ ‫ن‬َ‫مل‬ ‫أو‬ ‫نا‬َ‫ل‬ ‫ما‬ ٍ‫قيمة‬ ‫أو‬ ‫ج‬‫نات‬ ‫إرجاع‬‫ب‬ ‫تقوم‬ ‫أن‬ ‫ا‬ّ‫م‬‫ل‬ ،‫ها‬‫ل‬َ‫م‬َ‫ع‬ ‫أداء‬ َ‫عد‬َ‫ب‬‫و‬ ،
‫ها‬‫باستدعائ‬
(
(functions can return a value to a caller
‫يشء‬ ‫لنا‬ ‫ع‬‫ُرج‬‫ت‬ ‫ال‬ ‫بام‬ُ‫ور‬
!
،
‫و‬
‫ال‬ ‫عىل‬ ‫ق‬‫ُطل‬‫ن‬
function
‫التي‬
‫بال‬ ‫عملها‬ ‫انتهاء‬ ‫بعد‬ ‫قيمة‬ ‫لنا‬ ‫ع‬‫ُرج‬‫ت‬ ‫ال‬
.void( )
‫ال‬ ‫لرجاع‬ ‫حالة‬ ‫يف‬ ‫أما‬
function
‫اإلشارة‬‫ب‬ ‫َقوم‬‫ن‬ ‫ها‬‫ل‬َ‫م‬َ‫ع‬ ‫انتهاء‬ َ‫عد‬َ‫ب‬ ‫قيمة‬
‫ال‬ ‫قيه‬ ‫ع‬ َ
‫تض‬ َ
‫س‬ ‫الذي‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫لىل‬
function
‫ال‬ ‫ذذا‬
return value
،
‫ال‬ ‫توضيح‬ َ‫ع‬َ‫م‬
Data type
..‫ه‬‫ب‬ ‫اخلاص‬
‫ذلك؟‬ ‫كيف‬
‫س‬ ..ً‫ا‬‫حسن‬
‫نرشح‬
‫ذذا‬
‫ب‬
‫ثال‬‫م‬
:
‫ماييل‬
function
‫اسمها‬
factorial( )
ِّ
‫تغري‬ُ‫مل‬‫ا‬ ‫عىل‬ ‫رياضية‬ ‫عملية‬ ‫إلجراء‬ ‫باستدعائها‬ ‫نقوم‬
a
،
‫لنا‬ ‫ع‬‫ج‬ ُ
‫سرت‬ ‫انتهائها‬ ‫وبعد‬
‫َغري‬‫ت‬ُ‫مل‬‫ا‬ ‫يف‬ ‫بوضعها‬ ‫تقوم‬ ‫قيمة‬
b
.
int a=5, b;
b = factorial(a);
‫ب‬ ‫الكود‬ ‫ذذا‬ ‫يف‬ ‫َقوم‬‫ن‬
‫بنوع‬ ‫تغريين‬ُ‫م‬ ‫َعريف‬‫ت‬
int
‫املتغري‬ ‫أطربنا‬ ‫م‬ُ‫ث‬ ،
b
‫قيمة‬ ‫سيحوي‬ ُ‫ه‬‫أن‬
،
‫بالطبع‬ ‫ستكون‬
int
،
‫أن‬ ‫يعني‬ ‫وذذا‬
‫ال‬
return value
‫ال‬ ‫من‬ ‫القادم‬
factorial( )
‫نوعه‬ ‫سيكون‬
integer
.
‫تغري‬ُ‫مل‬‫ا‬ ‫قيمة‬ ‫ووضعنا‬
a
"
‫بخمسة‬
"
،
‫سيكون‬
(a)
‫ال‬ ‫ذو‬ ‫نا‬ُ‫ذ‬
Argument
‫ال‬ ‫ذذه‬ ‫لىل‬ ُ‫ه‬‫لمرار‬ ‫م‬‫ت‬َ‫ي‬ ‫الذي‬
function
،
‫الرقم‬ ‫ل‬‫ُدط‬‫ن‬‫س‬ ‫أننا‬ ‫بمعنى‬
5
‫ية‬‫ساب‬‫احل‬ ‫لية‬َ‫م‬َ‫ع‬‫ال‬ ‫إلجراء‬
‫تغري‬ُ‫مل‬‫ا‬ ‫يف‬ ‫ج‬‫النات‬ ‫ع‬ َ
‫َض‬‫ن‬ ‫م‬ُ‫ث‬ ‫ليه‬َ‫ع‬
b
.
‫ال‬ َ‫ي‬‫ذاذ‬
factorial( )
:‫ها‬‫باستدعائ‬ ‫منا‬ُ‫ق‬ ‫التي‬
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[29]
int factorial (int x)
{
int i;
for (i=1; i < x; i++)
x *= i;
return x;
}
‫قيمة‬ ‫أن‬ ‫ظ‬‫الح‬
x
‫لل‬ ً‫ا‬‫تبع‬ ‫تركها‬ ‫َم‬‫ت‬
‫حالتنا‬ ‫يف‬ ‫وذو‬ ‫ل‬ َ
‫دط‬ُ‫مل‬‫ا‬ ‫رقم‬
5
‫ال‬ ‫ديد‬ َ
‫حت‬ ‫َم‬‫ت‬‫و‬ ،
data type
‫أنه‬
integer
.
‫النهاية‬ ‫يف‬
‫تغري‬ُ‫مل‬‫ا‬ ‫سيحوي‬
b
‫ذي‬ ‫قيمة‬
(
5*4*3*2*1 = 120
.)
‫لية‬َ‫م‬َ‫ع‬ ‫م‬‫َت‬‫ت‬ ‫كيف‬ ‫بالتفصيل‬ ‫لك‬ ‫سأرشح‬
"
‫ال‬ ‫استدعاء‬
function
"
‫يف‬
‫الثالث‬ ‫الباب‬
.‫اهلل‬ ‫بإذن‬
‫ال‬ ‫أن‬ ‫ر‬‫ك‬َ‫َذ‬‫ت‬
Function
‫ي‬‫ق‬ ‫نا‬َ‫ل‬ ‫ع‬‫ُرج‬‫ت‬ ‫ال‬ ‫التي‬
‫م‬
‫ة‬
‫عينة‬ُ‫م‬
"
return value
"
‫بال‬ ‫ققط‬ ‫ما‬ ٍ‫وظيفة‬‫ب‬ ‫تقوم‬‫ل‬ ‫َستدعيها‬‫ن‬ ‫التي‬ َ‫ي‬‫وذ‬ ،
"
Void Function
"
.
‫ال‬ ‫استدعينا‬ ‫أننا‬ ‫الحظ‬ ،‫املايض‬ ‫السيارة‬ ‫يادة‬‫ق‬‫ب‬ ‫اخلاص‬ ‫ثال‬‫للم‬ ‫ئنا‬‫ج‬ ‫لذا‬
Function( )
_
Turn
‫لتقوم‬
‫ظار‬‫بانت‬ ‫لسنا‬ ‫قنحن‬ ،‫ققط‬ ‫للحارة‬ ‫الدطول‬ ‫بعملية‬
return value
،‫نها‬‫م‬
‫ألننا‬
‫ال‬ ‫من‬ ‫جمموعة‬ ‫تنفيذ‬ ‫د‬َ‫َو‬‫ن‬ ‫ققط‬
instructions
‫ر‬َ‫م‬ ‫كل‬ ‫تهم‬َ‫ب‬‫تا‬‫لك‬ ‫االضطرار‬ ‫بدون‬
‫ة‬
.!‫حارة‬ ‫ي‬‫أل‬ ‫الدطول‬ ‫قبل‬
‫ثال‬‫امل‬ ‫ذا‬َ‫ِب‬ ‫م‬‫َخت‬‫ن‬ َ
‫س‬
‫ققرة‬
‫ال‬
functions
:
void turn (variable_direction, target_street_name)
{
Look for a street sign;
current_intersection_name = read street sign name;
while (current_intersection_name != target_street_name)
{
Look for another street sign;
current_intersection_name = read street sign name;
}
Activate the variable_direction blinker;
Slow down;
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[30]
Check for oncoming traffic;
while (there is oncoming traffic)
{
Stop;
Watch for oncoming traffic;
}
Turn the steering wheel to the variable_direction;
while(turn is not complete)
{
if(speed < 5 mph)
Accelerate;
}
Turn the steering wheel right back to the original position;
Turn off the variable_direction blinker;
}
‫ال‬ ‫تكون‬ ‫ولكي‬
Function
‫واقعية‬ ‫أكثر‬
..
‫لضاقة‬ ‫َم‬‫ت‬
“Argument”
ِّ
‫تغري‬ُ‫م‬ ‫أو‬
"
target_street_name
"
‫اسم‬ ‫وذو‬
‫ال‬
،‫لليه‬ ‫ماج‬‫اإلند‬ ‫اد‬ َ‫ر‬ُ‫مل‬‫ا‬ ‫ع‬‫شار‬
‫ال‬ ‫ب‬‫جان‬‫ب‬
Argument
‫األول‬
"
variable_direction
."
‫ه‬‫ذ‬َ‫ذ‬ ‫ن‬‫م‬ ‫اإلستفادة‬ ‫ق‬ِّ‫ق‬‫ُح‬‫ن‬‫س‬ ‫واآلن‬
‫ال‬
function
‫للسيار‬ ‫ج‬َ‫م‬‫رنا‬َ‫ب‬ ‫ُب‬‫ت‬‫َك‬‫ن‬ ‫بأن‬
‫ة‬
‫ال‬ ‫َدعي‬‫ت‬‫َس‬‫ن‬ ‫م‬ُ‫ث‬
function
.‫ب‬‫ناس‬ُ‫مل‬‫ا‬ ‫قت‬َ‫الو‬ ‫يف‬
Begin going East on Main Street;
if (street is blocked)
{
Turn (right, 15th Street);
Turn (left, Pine Street);
Turn (right, 16th Street);
}
else
Turn (right, 16th Street);
Turn (left, Destination Road);
for (i=0; i<5; i++)
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[31]
Drive straight for 1 mile;
Stop at 740 Destination Road;
‫باستدعاء‬ ‫منا‬ُ‫ق‬ َ‫أين‬ َ
‫ظت‬ َ‫الح‬ ‫ذل‬
Turn( )
‫؟‬
.
‫ال‬ ‫بإمرار‬ ‫أيضا‬ ‫منا‬ُ‫ق‬
Arguments
‫ال‬ ‫مكان‬ ‫نهم‬‫م‬ ‫ُل‬‫ك‬ ‫ضع‬َ‫و‬ ‫تم‬َ‫ي‬‫ل‬ ‫لليها‬
variable
،‫املطلوب‬ ‫وتنفيذ‬ ‫له‬ ‫ر‬‫ناظ‬ُ‫مل‬‫ا‬
‫ننتظر‬ ‫ولن‬
return value
‫ألهنا‬ ‫نها‬‫م‬
“void function”
.
.‫ديد‬ َ‫ج‬ ‫ن‬‫م‬ ‫ة‬َ َ‫جم‬ َ
‫الرب‬ ‫لىل‬ ‫َعود‬‫ن‬ ‫م‬ُ‫ث‬ ً‫ال‬‫قلي‬ ‫تلف‬ ُ
‫ُم‬ ‫موضوع‬ ‫لىل‬ ‫اآلن‬ ‫سننتقل‬
.
‫ال‬ ‫عض‬َ‫ب‬ ‫عىل‬ ‫سنتعرف‬
Registers
‫التي‬
‫ال‬ ‫مها‬‫ستخد‬َ‫ي‬
CPU
. ‫الربامج‬ ‫مع‬ ‫له‬ُ‫م‬‫تعا‬ ‫أثناء‬
x86 Processor
‫بال‬ ‫تعلقة‬ُ‫مل‬‫ا‬ ‫األمور‬ ‫بعض‬ ‫ُشاذد‬‫ن‬‫ل‬ ‫قصري‬ ‫قاصل‬ ‫نأطذ‬ َ
‫س‬
x86 processor
َ‫ن‬‫ل‬
‫عىل‬ ‫تعرف‬
‫َي‬‫ك‬
‫فية‬
‫ت‬
‫ال‬ ‫ل‬َ‫م‬‫عا‬
CPU
‫ال‬ ‫مع‬
Compiled Program
.
.
‫ال‬ ‫ك‬‫َل‬‫ت‬‫م‬َ‫ي‬
Processor
‫جمموع‬
‫ة‬
‫ال‬ ‫من‬
Registers
..
‫قهو‬
‫ك‬ ‫مهم‬‫َخد‬‫ت‬‫س‬َ‫ي‬
internal variables
ُ‫ي‬
‫ختلف‬ُ‫مل‬‫ا‬ ‫هامه‬َ‫م‬ ‫إلمتام‬ ‫دقيق‬ ‫بشكل‬ ‫فهم‬ِّ‫ظ‬‫و‬
‫ة‬
.
‫بال‬ ‫نعني‬ ‫ماذا‬ ‫ولكن‬ ،‫نعم‬
Register
‫؟‬..
‫ال‬ ‫داطل‬ ‫صغرية‬ ‫ختزين‬ ‫مساحة‬ ‫لهنا‬
CPU
‫ال‬ ‫مع‬ ‫والتعامل‬ ‫للوصول‬ ‫يستخدمها‬ ‫طريقة‬ ‫أِسع‬ ‫ُعد‬‫ت‬‫و‬
Data
.
A small amount of storage on the CPU and is the fastest method for a CPU to access data.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[32]
‫ال‬ ‫داطل‬ ‫الوقوف‬ ‫يمكنك‬ ‫كام‬ ،‫التفاصيل‬ ‫من‬ ‫الكثري‬ ‫رؤية‬ ‫ُك‬‫ن‬‫مك‬ُ‫ي‬
Compiled Program
‫ال‬ ‫راقبة‬ُ‫م‬‫و‬
memory
‫خصص‬ُ‫مل‬‫ا‬
‫ة‬
‫ال‬ ‫أوضاع‬ ‫َيك‬‫ن‬‫ي‬َ‫ع‬‫ب‬ ‫وترى‬ ‫لربناجمك‬
Registers
‫ال‬ ‫وظيفة‬ ‫لهنا‬ ،‫الربنامج‬ ‫عمل‬ ‫أثناء‬
"
Debugger
"
.
‫ال‬ ‫ذذا‬ ‫ما‬
..Debugger
‫؟‬
‫امليكرسكو‬ ‫الكيميائي‬ ‫م‬‫َخد‬‫ت‬‫س‬َ‫ي‬ ‫ثلام‬‫م‬
‫سيتفحص‬ ُ‫ه‬ّ‫ن‬‫ك‬َ‫ل‬ ،ً‫ا‬‫أيض‬ ‫امليكرسكوب‬ ‫باستخدام‬ ‫ج‬‫ربم‬ُ‫مل‬‫ا‬ ‫قوم‬َ‫ي‬ ،‫العينات‬ ‫لفحص‬ ‫ب‬
ُ‫ي‬ ‫َام‬‫ك‬ ،‫اجلهاز‬ ‫عىل‬ ُ‫ه‬‫تأثري‬ ‫راقبة‬ُ‫م‬‫و‬ ‫ه‬ُ‫ُريد‬‫ت‬ ‫ي‬ َ
‫رجم‬َ‫ب‬ ‫سطر‬ ‫أي‬ ‫عىل‬ ‫الوقوف‬ َ
‫ُك‬‫ن‬‫مك‬ُ‫ي‬ ،‫برناجمه‬ ‫به‬
‫َغريا‬‫ت‬ُ‫مل‬‫وا‬ ‫م‬َ‫ي‬‫الق‬ ‫تغيري‬ ‫ُك‬‫ن‬‫مك‬
‫ت‬
..
‫األمور‬ ‫من‬ ‫وغريذا‬
‫الشيق‬
‫ة‬
.!
‫سنقوم‬
‫الثالث‬ ‫الباب‬ ‫يف‬
‫ا‬ ‫بإذن‬
‫ال‬ ‫باستخدام‬ ‫هلل‬
“GDB Debugger”
‫ال‬ ‫وقحص‬ ‫الربامج‬ ‫أحد‬ ‫مع‬
Registers
َ
‫ص‬‫ص‬َ‫خ‬ُ‫مل‬‫ا‬
‫ة‬
‫الربجمي‬ ‫األططاء‬ ‫بعض‬ ‫واستخراج‬ ُ‫ه‬‫ل‬
‫ة‬
.!‫الربنامج‬ ‫اطرتاق‬ ‫يف‬ ‫واستغالهلا‬
‫سنكتفي‬ ‫َام‬‫ن‬‫بي‬
ً‫ا‬‫حالي‬
‫بعض‬ ‫برشح‬
‫بال‬ ‫تعلقة‬ُ‫مل‬‫ا‬ ‫األساسيات‬
Registers
.
‫باستخ‬ ‫تحه‬َ‫ق‬ ‫َم‬‫ت‬ ‫ج‬َ‫م‬‫نا‬ َ
‫رب‬‫ل‬ ‫ثال‬‫م‬ ‫وضع‬َ‫ب‬ ‫َقوم‬‫ن‬ َ
‫س‬
‫د‬
‫ام‬
GDB debugger
‫ل‬َ‫م‬َ‫ع‬‫ب‬ ‫ونقوم‬
Breakpoint
‫ال‬ ‫عند‬
main( )
‫ال‬ ‫ضع‬َ‫و‬ ‫د‬‫ُشاذ‬‫ن‬‫ل‬
Registers
.‫الربنامج‬ ‫َشغيل‬‫ت‬ ‫أثناء‬
‫ال‬ ‫أن‬ ‫الحظ‬
main( )
‫ن‬‫ولك‬ ..‫ج‬َ‫م‬‫نا‬ َ
‫الرب‬ ‫يف‬ ‫رائته‬‫ق‬ ‫م‬‫ت‬َ‫ي‬ ‫ما‬ ‫أول‬ ‫ذي‬
!ً‫ال‬‫ه‬َ‫م‬
‫ال‬ ‫ذذا‬ ‫ن‬‫م‬ ‫نستفيد‬ ‫ماذا‬
Breakpoint
‫؟‬..
“it gives you the ability to halt a process that is being debugged”
‫ل‬َ‫م‬َ‫ع‬‫ب‬ ‫نقوم‬ ‫اذا‬‫ومل‬
halt
‫لل‬
process
‫؟‬..
By halting a process, you are able to inspect variables, stack arguments, and memory locations.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[33]
reader@hacking:~/booksrc $ gdb -q ./a.out
Using host libthread_db library
"/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) break main
Breakpoint 1 at 0x804837a
(gdb) run
Starting program: /home/reader/booksrc/a.out
Breakpoint 1, 0x0804837a in main ()
(gdb) info registers
eax 0xbffff894 -1073743724
ecx 0x48e0fe81 1222704769
edx 0x1 1
ebx 0xb7fd6ff4 -1208127500
esp 0xbffff800 0xbffff800
ebp 0xbffff808 0xbffff808
esi 0xb8000ce0 -1207956256
edi 0x0 0
eip 0x804837a 0x804837a <main+6>
eflags 0x286 [ PF SF IF ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
‫أربعة‬ ‫أول‬ ‫الحظ‬
Registers
:‫الرتتيب‬ ‫عىل‬ ‫م‬ُ‫ذ‬ ،‫ج‬َ‫م‬‫نا‬ َ
‫الرب‬ ‫ل‬َ‫م‬َ‫ع‬ ‫داية‬‫ب‬ ‫ند‬‫ع‬ ‫ظهروا‬
(EAX, ECX, EDX, and EBX)
‫ليهم‬َ‫ع‬ ‫ق‬َ‫ل‬‫ط‬ُ‫ي‬
General Registers
‫ال‬ ‫م‬ُ‫مه‬‫َخد‬‫ت‬‫س‬َ‫ي‬
CPU
‫عتربوا‬ُ‫ي‬ ‫أهنم‬ ‫أمهها‬ ،‫ة‬ّ‫د‬‫ع‬ ‫مور‬ُ‫أ‬ ‫يف‬
"
temporary variables
"
‫ال‬ ‫م‬ُ‫مه‬‫َخد‬‫ت‬‫س‬َ‫ي‬
CPU
‫لل‬ ‫تنفيذه‬ ‫أثناء‬
Instructions
.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[34]
‫ماييل‬
:‫م‬ُ‫نه‬‫م‬ ٍ‫ُل‬‫ك‬‫ل‬ َ
‫َرص‬‫ت‬ ُ
‫ُم‬ ‫توضيح‬
EAX
ً‫ا‬‫أيض‬ ‫ليها‬َ‫ع‬ ‫ق‬َ‫ل‬‫ط‬ُ‫ي‬
Accumulator register
‫ساب‬‫احل‬ ‫ليات‬َ‫م‬َ‫ع‬‫ال‬ ‫عض‬َ‫ب‬ ‫بإجراء‬ ‫تقوم‬
‫املقارن‬ ‫و‬ ‫والطرح‬ ‫اجلمع‬ ‫مثل‬ ‫ية‬
‫ة‬
،
‫ال‬ ‫ختزين‬ ‫مكان‬ ‫د‬َ‫ع‬ُ‫ت‬ ‫أهنا‬ ‫زذا‬ِّ‫ي‬َ‫م‬ُ‫ي‬ ‫ما‬ ‫م‬َ‫وأذ‬ ،‫ة‬َ‫سم‬‫والق‬ ‫الرضب‬ ً‫ا‬‫وأيض‬
return values
.
‫ذذا‬ ‫ر‬‫تتذك‬ ‫ذل‬
‫ال‬
return value
‫؟‬..
‫ال‬ ‫ققرة‬ ‫يف‬ ُ‫ه‬‫عن‬ ‫حتدثنا‬ ‫لقد‬
“Functions”
،
ً‫ا‬‫لذ‬
..
‫مكن‬ُ‫ي‬
‫نا‬
‫التأكد‬
‫أداء‬ ‫اكتامل‬ ‫من‬
function
‫ها‬‫ين‬َ‫ع‬‫ب‬
‫َوى‬‫ت‬ ُ
‫حم‬ ‫حص‬َ‫ق‬ ‫ريق‬َ‫ط‬ ‫ن‬َ‫ع‬
‫ال‬
EAX
،
ُ‫ن‬‫مك‬ُ‫ي‬ ‫َام‬‫ك‬
‫نا‬
‫هل‬ ‫علية‬‫الف‬ ‫يمة‬‫الق‬ ‫ة‬َ‫ق‬‫عر‬َ‫م‬
‫ال‬ ‫ذا‬
return value
.
ECX
‫عليها‬ ‫ق‬‫ُطل‬‫ن‬
“Count register or Counter”
،
‫ال‬ ‫يف‬ ‫م‬َ‫َخد‬‫ت‬‫ُس‬‫ت‬ ‫ألهنا‬
Looping operations
.
EDX
‫عليها‬ ‫ق‬َ‫ل‬‫ط‬ُ‫ي‬ ‫ذذه‬
Data register
‫لل‬ ‫امتداد‬ ‫د‬َ‫ع‬ُ‫ت‬‫و‬ ،
EAX
‫ال‬ ‫من‬ ‫أكرب‬ ‫كمية‬ ‫ختزين‬ ‫حالة‬ ‫يف‬ ‫تدعمها‬ ‫أهنا‬ ‫أي‬
data
‫أثناء‬
.!ً‫ا‬‫تعقيد‬ ‫األكثر‬ ‫احلسابات‬ ‫لجراء‬
EBX
..ً‫ا‬‫وأطري‬
Base register
‫ك‬َ‫ل‬ ،‫ها‬‫ين‬َ‫ع‬‫ب‬ ‫ظيفة‬َ‫و‬‫ل‬ ‫م‬‫م‬ َ
‫ُص‬‫ت‬ ‫مل‬ ،
‫لضاقي‬ ‫ساحة‬‫َم‬‫ك‬ ‫م‬َ‫َخد‬‫ت‬‫ُس‬‫ت‬ ‫نها‬
‫ة‬
.‫للتخزين‬
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[35]
‫ال‬ ‫من‬ ‫جديدين‬ ‫نوعني‬ ‫لنا‬ ‫يظهر‬ ‫ثم‬
Registers
‫وذم‬
:
ESP and EBP
Stack Pointer
‫و‬
Base Pointer
‫ال‬ ‫عملية‬ ‫إلدارة‬ ‫استخدامهم‬ ‫يتم‬
function calls
‫ال‬ ‫مع‬ ‫ل‬ُ‫م‬‫والتعا‬
Stack
.
‫يف‬ ‫التفصيل‬ ‫من‬ ‫بمزيد‬ ‫هلم‬ ‫سنتعرض‬
.‫الثالث‬ ‫الباب‬
‫ال‬ ‫ماذذا‬ ‫ن‬‫ولك‬
Stack
‫؟‬
‫أهنا‬ ‫يبدو‬
structure
‫باالحتفاظ‬ ‫يقوم‬
‫التفصيلي‬ ‫بالبيانات‬
‫ة‬
‫بال‬ ‫اخلاصة‬
function calls
،
‫ال‬ ‫مبدأ‬ ‫وتعتمد‬
(FILO)
‫ويعني‬
“First In Last Out”
‫ب‬ ‫لليها‬ ‫البيانات‬ ‫لرسال‬ ‫عملية‬ ‫عىل‬ ‫ق‬‫ُطل‬‫ن‬ ،‫بالشكل‬ ‫يظهر‬ ‫كام‬
“Push”
‫ب‬ ‫منها‬ ‫البيانات‬ ‫استخراج‬ ‫وعملية‬
“Pop”
.
‫عملية‬ ‫لك‬ ‫ح‬ ِّ
‫سأوض‬
function call
‫ال‬ ‫لىل‬ ‫يانات‬َ‫ب‬‫ال‬ ‫لرسال‬ ‫م‬‫ت‬َ‫ي‬ َ
‫َيف‬‫ك‬ ‫د‬‫ُشاذ‬‫ت‬‫ل‬ ‫باألسفل‬
Stack
.
..‫عام‬ ‫وبوجه‬
‫ال‬ ‫تقوم‬
Stack
‫بثالث‬
‫ة‬
:‫ذي‬ ‫رئيسية‬ ‫أمور‬
Stores information about how a function is called, the parameters it takes, and how it should
return after it is finished executing.
‫لجراء‬ ‫لية‬َ‫م‬َ‫ع‬‫ل‬ ‫ثال‬‫م‬ ‫ذذا‬
function call
،
‫ال‬ ‫ن‬‫م‬ ً‫ال‬ُ‫ك‬ ‫دور‬ ً‫ا‬‫ع‬َ‫م‬ ‫َرى‬‫ن‬‫س‬
(ESP and EBP)
،
‫م‬َ‫َخد‬‫ت‬‫س‬ُ‫مل‬‫ا‬ ‫الصيغة‬ ‫ذي‬ ‫ذذه‬
‫ة‬
‫لعمل‬
call
‫لل‬
function
‫سام‬ُ‫مل‬‫ا‬
‫ة‬
my_pencils( )
‫ال‬ ‫بلغة‬
C
:
int my_pencils (color_one, color_two, color_three);
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[36]
‫ال‬ ‫عملية‬ ‫م‬‫َت‬‫ت‬ ‫وذكذا‬
Call
‫بال‬
x86 Assembly
:
push color_three
push color_two
push color_one
call my_pencils
‫ال‬ ‫شكل‬ ‫ذو‬ ‫وذذا‬
Stack frame
‫ال‬ ‫أن‬ ‫(الحظ‬ ،
Argument
‫الثالث‬
‫ال‬ ‫أسفل‬ ‫يف‬ ً‫ال‬‫أو‬ ‫وضعه‬ ‫تم‬
Stack
،!)
‫كام‬
ً‫ام‬‫دائ‬ ‫أنه‬
‫ال‬ ‫ُشري‬‫ت‬ ‫ما‬
ESP
‫ال‬ ‫لىل‬
(Top of Stack)
.
‫ال‬ ‫ذذه‬ ‫لىل‬ ‫سطر‬ ‫بإضاقة‬ ‫سنقوم‬ ‫واآلن‬
function
‫ال‬ ‫يف‬ ‫ث‬ُ‫حد‬َ‫ي‬ َ
‫س‬ ‫ما‬ ‫د‬‫ُشاذ‬‫ن‬ ‫كي‬
Stack
.
int my_pencils (color_one, color_two, color_3);
{
[
10
]
char uni_pen_color_one
}
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[37]
‫ال‬ ‫طانة‬ ‫قوق‬ ‫أطرى‬ ‫طانة‬ ‫ظهور‬ ‫ُالحظ‬‫ن‬‫س‬
Return address
‫ال‬ ‫يف‬
stack
،
‫تغري‬ُ‫مل‬‫ا‬ ‫ِبا‬ ‫سيكون‬
(uni_pen_color_one)
‫ال‬ ‫وسينتقل‬
Stack pointer
‫لال‬
‫شار‬
‫ة‬
‫لليها‬
،
‫ال‬ ‫لىل‬ ً‫ا‬‫دوم‬ ‫شري‬ُ‫ي‬ ُ‫ه‬‫ن‬‫أل‬
"
Top of Stack
"
.
‫س‬
ً‫ا‬‫حالي‬ ‫القدر‬ ‫ِبذا‬ ‫نكتفي‬
.
‫ل‬
‫ال‬ ‫لىل‬ ‫نعود‬
Registers
:‫اآلطرى‬
ESI and EDI
 (ESI) Source Index, holds the location of the input data stream.
 (EDI) Destination Index, points to the location where the result of a data operation is
stored.
:‫ُّر‬‫ك‬‫َذ‬‫ت‬‫ال‬ ‫لية‬َ‫م‬َ‫ع‬ ‫َسهيل‬‫ت‬‫ول‬
 ESI is used when we need to read data from something.
 EDI is used when we want to write data in somewhere.
EIP
‫ليها‬َ‫ع‬ ‫ق‬َ‫ل‬‫ط‬ُ‫ي‬
Instruction Pointer
‫ال‬ ‫لىل‬ ‫ُشري‬‫ت‬ ‫ألهنا‬
Instruction
‫يقوم‬ ‫التي‬ ‫احلالية‬
‫ال‬
CPU
‫لها‬ُّ‫ي‬ َ
‫خت‬ َ
‫ُك‬‫ن‬‫مك‬ُ‫ي‬ .‫ها‬‫رائت‬‫ق‬‫ب‬
‫قرائت‬ ‫أثناء‬ ‫أذا‬ َ‫قر‬َ‫ي‬ ‫ة‬َ‫م‬‫َل‬‫ك‬ ‫ُل‬‫ك‬ ‫عىل‬ ‫لصبعه‬ ‫ع‬ َ
‫ض‬َ‫ي‬ ‫خص‬ َ
‫ش‬‫ب‬
‫ه‬
‫ال‬ ‫كذلك‬ ،‫ما‬ ٍ‫ع‬‫موضو‬ ‫أو‬ ‫جلة‬‫مل‬
processor
‫لصبعه‬ ‫يستخدم‬
‫ال‬ ‫وذو‬ ‫اخلاص‬
EIP
‫كل‬ ‫ليقرأ‬
Instruction
‫ري‬ َ
‫جي‬
.ُ‫ه‬‫فيذ‬‫َن‬‫ت‬
‫ال‬ ‫من‬ ‫ذذه‬
registers
‫عمل‬ ‫أثناء‬ ‫اذتاممك‬ ‫ستوليها‬ ‫التي‬
‫ال‬ ‫ية‬
Debugging
.
ُ‫ذ‬ ‫لىل‬
..‫الفاصل‬ ‫ذذا‬ ‫أهنينا‬ ‫قد‬ ‫نكون‬ ‫نا‬
‫َعود‬‫ن‬‫ل‬ ‫ذيا‬
‫جديد‬ ‫من‬
..‫ية‬ َ
‫جم‬ َ
‫الرب‬ ‫األساسيات‬ ‫ل‬‫َستكم‬‫ن‬‫ل‬
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[38]
Arrays
‫عددذا‬ ‫العنارص‬ ‫من‬ ‫جمموعة‬ ‫لهنا‬
n
‫ذات‬
data type
‫حمدد‬
‫ة‬
‫ال‬ ‫داطل‬ ‫تتموضع‬
Memory
.
“Is a list of n elements of a specific data type”
،
َ‫ل‬‫ط‬ُ‫ي‬ ً‫ا‬‫أيض‬
‫عليها‬ ‫ق‬
“Buffers”
.
‫ماييل‬
‫مثال‬
‫يوضح‬
‫لنا‬
‫ال‬
character array
:
#include <stdio.h>
int main()
{
char str_a[20];
str_a[0] = 'H';
str_a[1] = 'e';
str_a[2] = 'l';
str_a[3] = 'l';
str_a[4] = 'o';
str_a[5] = ',';
str_a[6] = ' ';
str_a[7] = 'w';
str_a[8] = 'o';
str_a[9] = 'r';
str_a[10] = 'l';
str_a[11] = 'd';
str_a[12] = '!';
str_a[13] = 'n';
str_a[14] = 0;
printf (str_a);
}
‫عمل‬ ‫عند‬ ‫الربنامج‬ ‫شكل‬ ‫وذذا‬
compile
‫باستخدام‬ ‫له‬
GCC
:
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[39]
reader@hacking:~/booksrc $ gcc -o char_array char_array.c
reader@hacking:~/booksrc $ ./char_array
Hello, world!
reader@hacking:~/booksrc $
..!‫جيد‬
‫بسيط‬ ‫مالحظة‬ ‫لدينا‬
‫ة‬
‫بحجز‬ ‫منا‬ُ‫ق‬ ‫لقد‬ ..
buffer
‫ل‬ ‫تتسع‬ ‫مساحته‬
20
‫ختصيص‬ ‫تم‬ ‫أنه‬ ‫أي‬ ،‫حرف‬
20 bytes
‫ننا‬‫لك‬ .‫لنا‬
‫ققط‬ ‫مألنا‬
(
12 bytes
)
،!‫منهم‬
ً‫ا‬‫أيض‬
‫كان‬ ‫حرف‬ ‫آطر‬
(
0
)
‫عليه‬ ‫طلق‬ُ‫ي‬..
“null byte”
‫ال‬ ‫إلطبار‬ ‫م‬َ‫َخد‬‫ت‬‫س‬ُ‫ي‬‫و‬
functions
‫ال‬ ‫ذذه‬ ‫مع‬ ‫تتعامل‬ ‫التي‬
array
‫ال‬ ‫ذذا‬ ‫ظهور‬ ‫عند‬ ‫القراءة‬ ‫عن‬ ‫تتوقف‬ ‫بأن‬
null byte
‫ال‬ ‫باقي‬ ‫لمهال‬ ‫ويتم‬
buffer
‫وكأنه‬
.‫موجود‬ ‫غري‬
‫الطريقة‬ ‫ِبذه‬ ‫حرف‬ ‫ُل‬‫ك‬ ‫أكتب‬ ‫أن‬ ‫يب‬ ‫ض‬َ َ
‫فرت‬ُ‫ي‬ ‫ذل‬ ‫ولكن‬
َ‫س‬‫البائ‬
‫ة‬
‫بإدطال‬ ‫تي‬َ‫ب‬‫غ‬َ‫ر‬ ‫ند‬‫ع‬
string
‫؟‬
‫سنستخدم‬ ،!‫ال‬ ‫بالطبع‬
Library
‫ى‬‫ُسم‬‫ت‬
string.h
:‫ثال‬‫م‬ ‫ب‬‫َرض‬‫ن‬ ‫عنا‬َ‫د‬ ،‫األعامل‬ ‫ه‬‫ذ‬َ‫ِب‬ ‫نا‬َ‫ل‬ ‫َقوم‬‫ت‬ َ
‫س‬ َ‫ي‬‫وذ‬
‫ال‬ ‫أحد‬ ‫من‬ ‫نطلب‬ ‫ثم‬ ،‫ُريد‬‫ن‬ ‫التي‬ ‫ل‬َ‫م‬ُ‫جل‬‫ا‬ ‫ُب‬‫ت‬‫نك‬ ‫سوف‬
functions
‫ال‬ ‫مع‬ ‫للتعامل‬ ‫ت‬ َ
‫ص‬ ِّ
‫ص‬ ُ
‫ط‬ ‫التي‬
strings
‫ال‬ ‫أو‬
Arrays
‫ك‬ ‫ما‬ ‫بنسخ‬
‫ال‬ ‫داطل‬ ‫ووضعه‬ ‫تبناه‬
buffer
‫ال‬ ‫ذذه‬ ‫ب‬ِّ‫ر‬َ‫ُج‬‫ن‬ ‫دعنا‬ ،
function
‫الرائع‬
‫ة‬
ً‫ا‬‫حالي‬ ‫أحد‬ ‫يستخدمها‬ ‫ال‬ ‫التي‬
ُ‫ه‬‫ألن‬ ،
ُ‫ي‬ ‫بذلك‬
َ‫ع‬
ِّ‫ر‬
‫ض‬
‫برناجمه‬
‫ال‬ ‫هلجوم‬
Buffer overflow
‫بساط‬ ‫بكل‬
‫ة‬
!

..
‫لهنا‬
strcpy( )
..
‫بالنسخ‬ ‫تقوم‬ ‫أهنا‬ ‫ظ‬‫الح‬
:‫كالتايل‬
strcpy (destination, source)
‫التا‬ ‫الكود‬ ‫يقوم‬
‫العبارة‬ ‫بنسخ‬ ‫يل‬
Hello, world!
‫ال‬ ‫لىل‬
buffer
‫ى‬‫سم‬ُ‫مل‬‫ا‬
str_a
.‫طباعته‬ ‫م‬ُ‫ث‬
#include <stdio.h>
#include <string.h>
int main() {
char str_a[20];
strcpy (str_a, "Hello, world!n");
printf (str_a);
}
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[40]
Signed and Unsigned
‫ال‬ ‫عن‬ ‫نتحدث‬ ‫عندما‬
numerical values
‫ال‬ ‫يف‬ ‫ختزينها‬ ‫يتم‬ ‫التي‬ ‫األعداد‬ ‫نعني‬ ‫قنحن‬
memory
‫الثنائي‬ ‫بالنظام‬
،
‫تكون‬ ‫أن‬ ‫لما‬ ‫وذي‬
Signed
‫(موجب‬ ‫أي‬
‫ة‬
‫أو‬ ،)‫سالبة‬ ‫أو‬
Unsigned
‫(موجب‬ ‫أي‬
‫ة‬
.)‫ققط‬
:‫كالتايل‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫ذذا‬ ‫بتعريف‬ ‫نقوم‬
“unsigned int”
‫ساح‬‫بامل‬ ‫ُّم‬‫ك‬َ‫َح‬‫ت‬‫ال‬ ‫مكننا‬ُ‫ي‬ ً‫ا‬‫أيض‬ ،
‫ة‬
َ
‫صص‬َ‫خ‬ُ‫مل‬‫ا‬
‫ة‬
‫ال‬ ‫ذا‬‫هل‬
Numerical variable
‫بالزياد‬ ً‫ء‬‫سوا‬
‫ة‬
‫ُقصان‬‫ن‬‫بال‬ ‫أو‬
‫بإضاقة‬ ‫وذلك‬
short or long
.‫بله‬َ‫ق‬
‫توجد‬
function
‫ال‬ ‫لغة‬ ‫يف‬
C
‫تسمى‬
sizeof( )
..
‫أي‬ ‫مساحة‬ ‫حتديد‬ ‫وظيفتها‬
data type
.‫نريده‬
‫ال‬ ‫ذذه‬ ‫ب‬ ِّ‫ُجر‬‫ن‬‫ل‬
function
‫هم‬ُ‫مل‬‫ا‬ ‫تغريات‬ُ‫مل‬‫ا‬ ‫بعض‬ ‫مساحة‬ ‫عىل‬ ‫ف‬‫نتعر‬ ‫كي‬
‫ة‬
:
#include <stdio.h>
int main() {
printf("The 'int' data type istt %d bytesn",
sizeof(int));
printf("The 'unsigned int' data type ist %d bytesn",
sizeof(unsigned int));
printf("The 'short int' data type ist %d bytesn",
sizeof(short int));
printf("The 'long int' data type ist %d bytesn",
sizeof(long int));
printf("The 'long long int' data type is %d bytesn",
sizeof(long long int));
printf("The 'float' data type ist %d bytesn",
sizeof(float));
printf("The 'char' data type istt %d bytesn",
sizeof(char));
}
‫استخدمنا‬ ‫أننا‬ ‫معي‬ ‫الحظ‬
printf( )
‫الشاش‬ ‫عىل‬ ‫ما‬ ‫يشء‬ ‫بطباعة‬ ‫لتقوم‬
‫ة‬
:
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[41]
‫بال‬ ‫يسمى‬ ‫ما‬ ‫استخدمنا‬ ‫لقد‬
format specifier
‫وذي‬
%d
:‫ييل‬ ‫كام‬ ‫العرض‬ ‫بعملية‬ ‫لتقوم‬
‫ال‬ ‫مساحة‬ ‫بعرض‬ ‫الكود‬ ‫ذذا‬ ‫سيقوم‬
data types
‫ال‬
‫موضح‬ ‫ذو‬ ‫كام‬ ‫له‬ ‫بإدطاهلا‬ ‫قمنا‬ ‫تي‬
.
reader@hacking:~/booksrc $ gcc datatype_sizes.c
reader@hacking:~/booksrc $ ./a.out
The 'int' data type is 4 bytes
The 'unsigned int' data type is 4 bytes
The 'short int' data type is 2 bytes
The 'long int' data type is 4 bytes
The 'long long int' data type is 8 bytes
The 'float' data type is 4 bytes
The 'char' data type is 1 bytes
reader@hacking:~/booksrc $
Pointers
‫ال‬ ‫أن‬ ‫ر‬‫ك‬َ‫َذ‬‫ت‬
(
EIP register
)
‫ن‬َ‫ع‬ ‫بارة‬‫ع‬ َ‫ي‬‫ذ‬
pointer
‫ال‬ ‫لىل‬ ‫شري‬ُ‫ي‬
current instruction
‫وذلك‬ ‫الربنامج‬ ‫ل‬َ‫م‬َ‫ع‬ ‫أثناء‬
‫ال‬ ‫عىل‬ ‫الحتوائها‬
memory address
‫ال‬ ‫ه‬‫ذ‬َ‫ِب‬ ‫اخلاص‬
instruction
.
‫ال‬ َ‫ع‬َ‫م‬ ‫ل‬ُ‫م‬‫َعا‬‫ت‬‫ال‬ ‫أثناء‬
memory
‫التي‬ ‫للبيانات‬ ‫ّسخ‬‫ن‬‫ال‬ ‫ليات‬َ‫م‬َ‫ع‬‫ل‬ ‫باستمرار‬ ‫َحتاج‬‫ن‬
‫ال‬ ‫بواسطة‬ ‫استخدامها‬ ‫م‬‫ت‬َ‫ي‬
functions
،
‫ال‬ ‫داطل‬ ‫البيانات‬ ‫نسخ‬ ‫تكرار‬ ‫ة‬َ‫م‬‫ك‬‫احل‬ َ‫ن‬‫م‬ ‫قليس‬ ‫وبالتايل‬
memory
‫لكل‬
function
‫حجز‬ ‫يتطلب‬ ‫ألنه‬ ،‫نستدعيها‬
‫ال‬ ‫مساحة‬
destination
‫ال‬ ‫نسخ‬ ‫سيتم‬ ‫(التي‬
data
‫ال‬ ‫يف‬ )‫لليها‬
memory
‫األمر‬ ‫كون‬َ‫ي‬ َ
‫س‬ .!‫ّسخ‬‫ن‬‫ال‬ ‫لية‬َ‫م‬َ‫ع‬‫ب‬ ‫البدء‬ ‫قبل‬
‫لل‬ ً‫ا‬‫ك‬‫هل‬ُ‫م‬
memory
.!‫هلا‬ ً‫ا‬‫ومستهلك‬
‫ال‬ ‫استخدام‬ ‫مكننا‬ُ‫ي‬ ‫ذلك‬ ‫من‬ ً‫ال‬‫بد‬
pointer
ّ‫ر‬ ُ‫ح‬ ‫ُل‬‫ك‬‫ب‬ ‫به‬ ‫لنتحرك‬
‫ي‬
‫ة‬
‫داطل‬
‫ال‬
memory
‫اإلشار‬ ‫طريق‬ ‫عن‬
‫ة‬
‫لىل‬
‫ال‬ ‫عناوين‬
blocks
.
We use pointers to point to the address of the beginning of that block of memory.
Pointers are 32 bits in size (4 bytes), and is defining by putting (*) to the variable name.
‫اإللكتروني‬‫القرصنة‬
‫ة‬
‫وأ‬
‫المعلومات‬‫من‬
Understanding Hacking and Information Security
Programming
[42]
:‫مثال‬ ‫نأطذ‬ ‫دعنا‬
#include <stdio.h>
#include <string.h>
int main() {
char str_a[20]; // A 20-element character array
char *pointer; // A pointer, meant for a character array
char *pointer2; // another one
strcpy(str_a, "Hello, world!n");
pointer = str_a; // Set the first pointer to the start of the array.
printf(pointer);
pointer2 = pointer + 2; // Set the second one 2 bytes further in.
printf(pointer2); // Print it.
strcpy(pointer2, "y you guys!n"); // Copy into that spot.
printf(pointer); // Print again.
}
‫ماييل‬
:‫الكود‬ ‫ذذا‬ ‫نتائج‬
reader@hacking:~/booksrc $ gcc -o pointer pointer.c
reader@hacking:~/booksrc $ ./pointer
Hello, world!
llo, world!
Hey you guys!
reader@hacking:~/booksrc $
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات
القرصنة الإلكترونية وأمن المعلومات

More Related Content

Similar to القرصنة الإلكترونية وأمن المعلومات

البعث الشيعي في سورية
البعث الشيعي في سوريةالبعث الشيعي في سورية
البعث الشيعي في سوريةShamKarama
 
صفحات من المجد الخالد
صفحات من المجد الخالدصفحات من المجد الخالد
صفحات من المجد الخالدAmin-sheikho.com
 
Android(arabic) android studioتحميل كتاب تعلم أساسيات الاندرويد بالعربية باست...
Android(arabic) android studioتحميل كتاب تعلم أساسيات الاندرويد بالعربية باست...Android(arabic) android studioتحميل كتاب تعلم أساسيات الاندرويد بالعربية باست...
Android(arabic) android studioتحميل كتاب تعلم أساسيات الاندرويد بالعربية باست...NoureddineHassi
 
تدريس الاستدلال الرياضي في المرحلة الثانوية
تدريس الاستدلال الرياضي في المرحلة الثانويةتدريس الاستدلال الرياضي في المرحلة الثانوية
تدريس الاستدلال الرياضي في المرحلة الثانويةHisham Hussein
 
Amazon Web service Aws
Amazon Web service Aws Amazon Web service Aws
Amazon Web service Aws Ahmed Gamil
 
نظم الاتصالات النقالة (Mobile communication system)
نظم الاتصالات النقالة (Mobile communication system)نظم الاتصالات النقالة (Mobile communication system)
نظم الاتصالات النقالة (Mobile communication system)Mohammad Alsharif
 
Gomhoreya Design Document_Final
Gomhoreya Design Document_FinalGomhoreya Design Document_Final
Gomhoreya Design Document_FinalMohamed Abubakr
 
المعهد الصناعي الثانوي برفحاء
المعهد الصناعي الثانوي برفحاءالمعهد الصناعي الثانوي برفحاء
المعهد الصناعي الثانوي برفحاءSultan Abdul
 
دليل التدريب العملي 2014
دليل التدريب العملي  2014دليل التدريب العملي  2014
دليل التدريب العملي 2014llatifah12345
 
چۆنیەتی ئیشکردنی total station
 چۆنیەتی ئیشکردنی total station چۆنیەتی ئیشکردنی total station
چۆنیەتی ئیشکردنی total stationBahzad5
 

Similar to القرصنة الإلكترونية وأمن المعلومات (20)

البعث الشيعي في سورية
البعث الشيعي في سوريةالبعث الشيعي في سورية
البعث الشيعي في سورية
 
ورقة أتعرف على حاسوبي 02
ورقة أتعرف على حاسوبي 02ورقة أتعرف على حاسوبي 02
ورقة أتعرف على حاسوبي 02
 
صفحات من المجد الخالد
صفحات من المجد الخالدصفحات من المجد الخالد
صفحات من المجد الخالد
 
4873
48734873
4873
 
3809
38093809
3809
 
Android(arabic) android studioتحميل كتاب تعلم أساسيات الاندرويد بالعربية باست...
Android(arabic) android studioتحميل كتاب تعلم أساسيات الاندرويد بالعربية باست...Android(arabic) android studioتحميل كتاب تعلم أساسيات الاندرويد بالعربية باست...
Android(arabic) android studioتحميل كتاب تعلم أساسيات الاندرويد بالعربية باست...
 
تدريس الاستدلال الرياضي في المرحلة الثانوية
تدريس الاستدلال الرياضي في المرحلة الثانويةتدريس الاستدلال الرياضي في المرحلة الثانوية
تدريس الاستدلال الرياضي في المرحلة الثانوية
 
359
359359
359
 
5prim arabic
5prim arabic5prim arabic
5prim arabic
 
ورقة أتعرف على حاسوبي 05
ورقة أتعرف على حاسوبي 05ورقة أتعرف على حاسوبي 05
ورقة أتعرف على حاسوبي 05
 
5600
56005600
5600
 
Amazon Web service Aws
Amazon Web service Aws Amazon Web service Aws
Amazon Web service Aws
 
نظم الاتصالات النقالة (Mobile communication system)
نظم الاتصالات النقالة (Mobile communication system)نظم الاتصالات النقالة (Mobile communication system)
نظم الاتصالات النقالة (Mobile communication system)
 
برنامج إدارة المطاعم - اذواق
برنامج إدارة المطاعم - اذواقبرنامج إدارة المطاعم - اذواق
برنامج إدارة المطاعم - اذواق
 
Gomhoreya Design Document_Final
Gomhoreya Design Document_FinalGomhoreya Design Document_Final
Gomhoreya Design Document_Final
 
المعهد الصناعي الثانوي برفحاء
المعهد الصناعي الثانوي برفحاءالمعهد الصناعي الثانوي برفحاء
المعهد الصناعي الثانوي برفحاء
 
دليل التدريب العملي 2014
دليل التدريب العملي  2014دليل التدريب العملي  2014
دليل التدريب العملي 2014
 
چۆنیەتی ئیشکردنی total station
 چۆنیەتی ئیشکردنی total station چۆنیەتی ئیشکردنی total station
چۆنیەتی ئیشکردنی total station
 
ورقة أشارك العالم 02
ورقة أشارك العالم 02ورقة أشارك العالم 02
ورقة أشارك العالم 02
 
5662
56625662
5662
 

القرصنة الإلكترونية وأمن المعلومات

  • 1. [1]
  • 3. [3]  ‫املشد‬ ‫أمحد‬ :: ‫املؤلف‬ ‫اسم‬  ‫املعلومات‬ ‫وأمن‬ ‫اإللكرتونية‬ ‫القرصنة‬ :: ‫الكتاب‬ ‫اسم‬  ‫والتوزيع‬ ‫للنرش‬ ‫العربية‬ ‫األمة‬ ‫مؤسسة‬ :: ‫النارش‬  :: ‫القانوين‬ ‫اإليداع‬ ‫رقم‬ 2017 / 26244  :: ‫الدويل‬ ‫الرقم‬ 978 / 977 / 783 / 405 / 6  ‫العربية‬ ‫مرص‬ ‫جهورية‬ :: ‫النرش‬ ‫دولة‬  :: ‫النرش‬ ‫سنة‬ 2017  ‫األوىل‬ ‫الطبعة‬ :: ‫الطبعة‬ ‫رقم‬ ‫حتذير‬ || ‫نرش‬ ‫بإعادة‬ ‫يسمح‬ ‫وال‬ ‫للمؤلف‬ ‫حمفوظة‬ ‫احلقوق‬ ‫مجيع‬ ‫م‬ ‫ططية‬ ‫بمواققة‬ ‫لال‬ ‫الكتاب‬ ‫ذذا‬ ‫نه‬ .
  • 4. [4] ‫الكتاب‬ ‫ذذا‬ ‫يف‬ ‫ستتعلم‬ :‫ماييل‬  ‫ال‬ ‫بلغة‬ ‫الربجمه‬ C ، ‫األكواد‬ ‫وحتليل‬ ‫وقهم‬ .‫الربجمية‬  ‫شبكات‬ ‫احلاسب‬ ‫ال‬ ‫برجمة‬ ‫وكيفية‬ ، Sockets .‫األنظمه‬ ‫بني‬ ‫اإلتصاالت‬ ‫ولنشاء‬ ،  ‫واستغالهلا‬ ‫األنظمه‬ ‫يف‬ ‫ثغرات‬ ‫لجياد‬ ‫طريق‬ ‫عن‬ ‫ال‬ ‫ذجامت‬ Buffer Overflows .  ‫ال‬ ‫استخدام‬ Debuggers ‫ال‬ ‫لفحص‬ Processor Registers ‫وال‬ System Memory .  ‫كيف‬ ‫احلاميه‬ ‫آليات‬ ‫عىل‬ ‫ل‬ُ‫ي‬‫التحا‬ ‫ية‬ ‫اخلاصة‬ ‫ب‬ ‫أنظم‬ ‫ال‬ ‫صالحيات‬ ‫عىل‬ ‫واحلصول‬ ،‫التشغيل‬ ‫ة‬ system ‫ال‬ ‫أو‬ root .‫البعيدة‬ ‫األنظمه‬ ‫عىل‬  ‫وحتليلها‬ ،‫التشفري‬ ‫وأنظمة‬ ‫طوارزميات‬ ، ‫و‬ ‫تطبيقاهتا‬ ‫قهم‬ ‫ه‬َ‫د‬ِّ‫َعد‬‫ت‬ُ‫مل‬‫ا‬ . ‫األول‬ ‫الباب‬ ‫يف‬ ‫نقوم‬ ‫ب‬ ‫م‬ُّ‫ل‬َ‫ع‬َ‫ت‬ ،‫الربجميه‬ ‫األكواد‬ ‫تابة‬‫وك‬ ‫قراءة‬ ‫و‬ ‫دراسة‬ ‫التشغيل‬ ‫أنظمة‬ ‫الربامج‬ ‫مع‬ ‫تعاطيها‬ ‫ق‬ ُ‫ر‬ُ‫ط‬‫و‬ ، ُ ‫حيث‬ ‫د‬َ‫ع‬ُ‫ت‬ ‫ل‬ ‫األساس‬ ‫بقية‬ .‫األبواب‬ ‫ل‬ ،‫الشبكات‬ ‫عامل‬ ‫لىل‬ ‫ننتقل‬ ‫الثاين‬ ‫الباب‬ ‫يف‬ َ‫ن‬ ‫تعر‬ ُ‫ب‬‫و‬ ‫آليات‬ ‫عىل‬ ‫ف‬ ‫من‬ ً‫ا‬‫بدء‬ ،‫األنظمة‬ ‫بني‬ ‫البيانات‬ ‫انتقال‬ ‫وكيفية‬ ،‫الشبكات‬ ‫روتوكوالت‬ ‫ال‬ Application Layer ‫بال‬ ً‫ء‬‫وانتها‬ Physical Layer ‫س‬ . ‫ن‬ ‫ت‬ ‫علم‬ ‫الباب‬ ‫ذذا‬ ‫يف‬ ‫ف‬ِّ‫ظ‬‫ُو‬‫ن‬ ‫كيف‬ ‫ال‬ Sockets َ‫د‬‫و‬ ‫وا‬ ‫ل‬ ‫الشبكات‬ ‫يف‬ ‫قنوات‬ ‫لنشاء‬ ‫األنظمه‬ ‫بني‬ ‫اإلتصال‬ . ،‫األنظمه‬ ‫وتأمني‬ ‫اإلطرتاق‬ ‫عمليات‬ ‫عىل‬ ‫الضوء‬ ‫بتسليط‬ ‫نقوم‬ ‫الثالث‬ ‫الباب‬ ‫يف‬ ،‫الشبكات‬ ‫بيئة‬ ‫يف‬ ‫أكثر‬ ‫والتعمق‬ ‫أنواع‬ ‫عض‬َ‫ب‬‫ل‬ ‫ليل‬ َ ‫وحت‬ ‫ال‬ ‫باستخدام‬ ‫امت‬َ‫ج‬َ‫اهل‬ Debuggers .‫عميل‬ ‫اطرتاق‬ ‫اطتبار‬ ‫بإجراء‬ ‫ونختم‬ ، ‫الر‬ ‫الباب‬ ‫يف‬ ،ً‫ا‬‫وأطري‬ ‫عض‬َ‫ب‬‫ل‬ ‫راسه‬‫د‬ ‫ع‬َ‫م‬ ،‫التشفري‬ ‫طوارزميات‬ ‫باستخدام‬ ‫األمان‬ ‫حتقيق‬ ‫آلليات‬ ‫ض‬‫َعر‬‫ت‬َ‫ن‬‫ل‬ ،‫البيانات‬ ‫تشفري‬ ‫علوم‬ ‫لىل‬ ‫ننتقل‬ ‫ابع‬ ‫انتقاهل‬ ‫أثناء‬ ‫يانات‬َ‫ب‬‫ال‬ ‫المة‬ َ ‫وس‬ ،‫صوصية‬ُ‫خل‬‫وا‬ ،‫وثوقية‬َ‫مل‬‫ا‬ ‫توقري‬‫ل‬ ‫ة‬َ‫م‬َ‫َخد‬‫ت‬‫س‬ُ‫مل‬‫ا‬ ‫لة‬‫تكام‬ُ‫مل‬‫ا‬ ‫ة‬َ‫م‬‫األنظ‬ ‫آل‬ ‫كان‬َ‫م‬ ‫ن‬‫م‬ ‫ا‬ .‫طر‬
  • 5. [5] Table of Content I- Programming 1. Introduction...……………………………………………………………………… 13 2. If-Then-Else...…………………………………………………………………....... 17 3. While Loop...………………………………………………………………………. 18 4. For loop……………………………………………………………………………. 19 5. Variables…………………………………………………….................................... 20 6. Arithmetic Operators………………………………………………………………. 22 7. Comparison Operator……………………………………….................................... 24 8. Functions…………………………………………………………………………... 26 9. x86 processor ……………………………………………………………………… 31 10. Arrays…………………………………………………………………………….... 38 11. Signed, Unsigned………………………………………………………………...... 40 12. Pointers………………………………………………………….............................. 41 13. Format Strings……………………………………………………………………... 45 14. Typecasting………………………………………………………………………... 50 15. command-Line Arguments……………….………………….................................. 55 16. Variable Scoping…………………………………………………………………... 56 17. Memory Segmentation…………………………………………………………...... 62 18. The Heap…………………………………………………………………………... 66 19. Void Pointers…………………………………………………................................. 71 20. File Access……………………………………………………................................ 77 21. File Permissions………………………………………………................................ 85 22. User IDs………………………………………………………................................ 87 23. Structs……………………………………………………………………………… 91 24. Function Pointers………………………………………………………………...... 97 II- Networking 1. Introduction...……………………………………………………………………….. 105 2. The OSI Model...……………………………………………………………………. 107 3. The Socket...………………………………………………………………………… 116
  • 6. [6] 4. Socket Functions……………………………………………………………………. 121 5. Socket Address……………………………………………….................................... 124 6. Big-Endian Byte Ordering………………………………………………………….. 128 7. Conversion between IP and 32-Bit……………………….......................................... 130 8. Error.h Lib…………………………………………………………………………... 132 9. Some Definitions……………………………………………………………………. 137 10. Server Example……………………………………………………………………... 138 11. The Browser……………………………………………………………………….... 148 12. The Big Picture…………………………………………………................................ 151 13. Layer 2 (Data-Link)…………………………………………………………………. 152 14. …Optaining an address…………….….……………………………………………. 153 15. …ARP Messages……………………………………………………………………. 155 16. …Sending packet outside the domain………………………………………………. 157 17. Layer 3 (Network)…………………………………………………………………... 158 18. …IP Header………..………………………………………………………………... 158 19. …IP Fragmentation..………………………………………………………………... 161 20. Layer 4 (Transport)……………….………………………….................................... 163 21. …Multiplexing & Demultiplexing………...………………………………………... 163 22. …TCP Header……..………………………………………………………………... 165 23. …TCP Three-way Handshake…..…………………………………………………... 168 III- Security & Attacks 1. Introduction...……………………………………………………………………….. 175 2. Computer Security...………………………………………………………………… 177 3. The Rings...…………………………………………………………………………. 178 4. Operational States…………………………………………………………………… 180 5. Technical Mechanisms……………………………………….................................... 182 6. …Layering, Abstraction, Data Hiding, and Process Isolation……………………… 182 7. Network Sniffing……………………………………………………………………. 186 8. Building our Sniffer………………………................................................................. 188 9. Libpcap Sniffer……………………………………………………………………… 191 10. Layer Analysis………………………………………………………………………. 197 11. …Ethernet Header…………………………………………………………………... 197 12. …IP Header……..…………………………………………………………………... 200 13. …TCP Header…..…………………………………………………………………... 202 14. The Decoder Sniffer………………………………………………………………… 205
  • 7. [7] 15. …The Conclusion………………………………………………………………….... 224 16. ARP Poisoning Attack....….……………………………………………………........ 225 17. …Inside Nemesis Tool……………………………………………………………... 229 18. Buffer Overflow……………………………………………….................................. 243 19. The Stack……………………………………………………………………………. 247 20. Stack Overflow……………………………………………………………………… 253 21. Putting Things all Together…………………………………………………………. 265 22. …Preparing and Sending our Buffer………………………………………………... 266 23. …Binary Tree Analysis……………………………………………………………... 269 24. …Locating Space for our Shellcode………………………………………………... 274 25. …Redirecting Execution Flow……………………………………………………… 277 26. …Getting the Shell…………………………………………………………………. 279 27. Protection Mechanisms………….…………………………...................................... 283 IV- Cryptography 1. Introduction...……………………………………………………………………….. 291 2. Cryptography...……………………………………………………………………… 295 3. …Substitution...……………………………………………………………………... 298 4. …Transposition……………………………………………………………………... 300 5. Symmetric Cryptography…………………………………........................................ 301 6. …Stream Ciphers…………………………………………………………………… 304 7. …Block Ciphers………………………...................................................................... 307 8. …AES Cryptosystem……………………………………………………………….. 309 9. ……Encryption Process…………………………………………………………….. 312 10. ………SubBytes…..……..………………………………………………………….. 314 11. ………ShiftRows………..………………………………………………………….. 318 12. ………MixColumns……..………………………………………………………….. 319 13. ………AddRoundKey…...………………………………………………………….. 320 14. ……Key Schedule…………………………………………………………………... 322 15. Asymmetric Cryptography…………………………………………………….......... 332 16. …Goals of Cryptography…………………………………………………………… 334 17. ……Confidentiality..………………………………………………………………... 334 18. ……Integrity………………………………………………………………………... 335 19. ……Authentication..………………………………………………………………... 336 20. ……Nonrepudiatin…...……………………………………………………………... 338 21. …RSA………………………………………………................................................. 341
  • 8. [8] 22. ……RSA Algorithm………………………………………………………………… 344 23. Cryptographic Hash Functions……………………………………………………… 356 24. …Message Authentication………………………………………………………….. 358 25. …Confidentiality, Authentication, and Signature....................................................... 366 26. …Message Authentication Code (MAC)…………………………………………… 370 27. …Digital Signature…………………………………………………………………. 373 28. ……Digital Signature Standard (DSS)……………………………………………... 377 29. Key Distribution…………………………………………………….......................... 380 30. …Using Symmetric Key Encryption…………………………………….................. 381 31. …Using Asymmetric Key Distribution…………………………………................... 384 32. Distribution of Public Keys…………………………………………………………. 386 33. …Using Public-Key Authority…………………………………................................ 386 34. …Using Public-Key Certificate.....……………………………................................. 388 35. Inside Secure Socket Layer (SSL)…………………………………………………... 391 36. Perfect Forward Secrecy (PFS)…..……………………………................................. 407 37. Success Algorithms……………………………………………................................. 418 38. References…………………………………………………………………………... 424 39. Appendixes.……………………………………………………................................. 425
  • 9. [9] About the Author ‫املشد‬ ‫أمحد‬ ُ ‫أحببت‬ ‫ذ‬ُ‫م‬ ‫الكمبيوتر‬ ‫ُن‬‫ك‬ ُ ‫ت‬ ‫مع‬ ‫يل‬ُ‫م‬‫َعا‬‫ت‬ ‫أثناء‬ ‫عادة‬ َ ‫بالس‬ ‫ر‬ُ‫ع‬‫أش‬ ‫نفيس‬ ُ ‫ت‬‫وجد‬ ‫ندما‬‫ع‬ ‫ذلك‬ ُ ‫كت‬َ‫أدر‬ ،ً‫ا‬‫صغري‬ ‫التصميم‬ ‫برامج‬ ‫والتطوير‬ ‫املختلفة‬ .. ُ‫ث‬ ‫عندم‬ ‫أكثر‬ ‫ق‬ُّ‫م‬َ‫ع‬َ‫ت‬‫بال‬ ‫بدأت‬ ‫م‬ ‫ا‬ ‫وأمن‬ ،‫بالشبكات‬ ‫ألذتم‬ ‫ت‬ ُ ‫َرب‬‫ك‬ .‫التشغيل‬ ‫وأنظمة‬ ،‫املعلومات‬ ‫ين‬ ّ ُ ‫ُس‬َ‫ي‬ ‫ال‬ ُ ‫تواص‬ ‫ل‬ ‫مع‬ ‫كم‬ .. a.almashad@gmail.com Acknowledgement ‫أ‬ ‫بدأ‬ ‫ب‬ ُ ‫ش‬ ‫ك‬ ‫ر‬ ‫ا‬ ،‫ة‬َ‫ديد‬َ‫ع‬‫ال‬ ‫ه‬‫م‬َ‫ع‬‫ن‬ ‫عىل‬ ‫َعاىل‬‫ت‬ ‫هلل‬ ‫وعائلتي‬ ‫و‬ ،‫وأصدقائي‬ .ُ‫ه‬‫ن‬‫م‬ ُ ‫مت‬ّ‫ل‬َ‫ع‬َ‫ت‬ ‫ن‬َ‫م‬ ‫ُل‬‫ك‬ ‫السيد‬ ‫أشكر‬ ‫أن‬ ُ ‫ب‬‫وأح‬ Jon Erickson ، ‫الك‬‫المت‬ ‫ه‬ ‫قريد‬ ‫ة‬َ‫ب‬‫وذ‬َ‫م‬ :‫هري‬ َ ‫الش‬ ‫تابه‬‫ك‬ ‫يف‬ ‫ت‬ َ‫ر‬َ‫ه‬َ‫ظ‬ ،!‫ة‬ “Hacking, The art of exploitation” .. ‫القتباس‬ ‫مادقعني‬ ‫األ‬ ‫بعض‬ ‫الربجمية‬ ‫كواد‬ ُ‫ه‬‫من‬ ‫ألقوم‬ ‫كتايب‬ ‫يف‬ ‫ورشحها‬ ‫بتحليلها‬ ، ‫عض‬َ‫ب‬‫ب‬ ‫استعنت‬ ‫َام‬‫ك‬ ‫املؤلفات‬ ‫طرى‬ُ‫أل‬‫ا‬ .‫جال‬َ‫مل‬‫ا‬ ‫ذا‬‫ِب‬ ‫صني‬ ِّ ‫تخص‬ُ‫مل‬‫ا‬ ‫دونات‬ُ‫م‬‫و‬ ‫أنه‬ ‫املعلوم‬ ‫من‬ ‫ل‬ ‫ن‬ ‫م‬ّ‫ل‬‫َع‬‫ت‬ ‫م‬ُ‫أل‬‫ا‬ ‫نا‬‫ت‬َ‫غ‬ُ‫ل‬‫ب‬ ‫لوم‬ُ‫ع‬‫ال‬ ‫نا‬ ، َ‫ن‬ ‫ا‬‫مل‬ ً‫ام‬‫ه‬َ‫ق‬َ‫و‬ ً‫ة‬‫قو‬ ‫أشد‬ ‫نكون‬ َ ‫س‬ ‫لىل‬ ‫طر‬‫َض‬‫ن‬ ‫كننا‬‫ل‬ ،!‫لنسانية‬ ‫بيعة‬َ‫ط‬ ‫هذه‬َ‫ق‬ ،‫َلقاه‬‫ت‬ ‫ا‬ ..‫لدينا‬ ‫وارد‬َ‫مل‬‫ا‬ ‫لفقر‬ ‫األجنبية‬ ‫باللغات‬ ‫لتعلم‬ ‫أن‬ ‫أمتنى‬ ‫ذا‬‫وهل‬ ُ‫ن‬ ‫ساذ‬ ‫م‬ ‫د‬ّ‫ي‬‫ج‬ ‫بمنهجية‬ ،‫العربية‬ ‫لغتنا‬‫ب‬ ‫لوم‬ُ‫ع‬‫ال‬ ‫لثراء‬ ‫يف‬ ‫ة‬ .‫ط‬‫بس‬ُ‫م‬ ‫سلوب‬ُ‫أ‬‫و‬
  • 10. [10] What you need for this book ‫أس‬‫ب‬ ‫راية‬‫د‬ ‫عىل‬ َ ‫أنك‬ ‫ض‬ َ ‫فرت‬َ‫ي‬ ‫الكتاب‬ ‫ذذا‬ ‫ُمبيوتر‬‫ك‬‫ال‬ ‫اسيات‬ ‫العام‬ ‫ة‬ ‫األساسي‬ ‫فاذيم‬َ‫مل‬‫وبا‬ ، ‫ة‬ ‫ر‬ِّ‫ق‬‫تو‬ُ‫مل‬‫كا‬ ،‫للشبكات‬ ‫ة‬ ‫ج‬َ‫نه‬َ‫م‬ ‫يف‬ ‫شهادة‬ “Network+” َ‫ق‬‫عر‬َ‫مل‬‫ا‬ ‫وبعض‬ ، ‫ة‬ َ ‫ثل‬‫م‬ ‫التشغيل‬ ‫ة‬َ‫م‬‫بأنظ‬ Windows ‫و‬ Linux . Preface ‫يف‬ ‫ذذا‬ ‫الكتاب‬ ‫ن‬ ‫قوم‬ ‫عىل‬ ‫الضوء‬ ‫بتسليط‬ ‫القرصنة‬ ‫و‬ ،‫املعلومات‬ ‫وأمن‬ ‫اإللكرتونية‬ ‫حتى‬ ‫رشح‬ ‫من‬ ‫نتمكن‬ ‫قلس‬ ‫فة‬ ‫اإل‬ ‫واألنظمة‬ ‫البيانات‬ ‫تأمني‬ ‫أو‬ ‫طرتاق‬ ‫بحاج‬ ‫قنحن‬ ، ‫ة‬ ‫أمور‬ ‫بعدة‬ ‫لإلملام‬ ‫حتضريية‬ ، ‫ب‬ ‫تبدأ‬ ‫معرقة‬ ‫ال‬ Computer Architecture ‫التشغيل‬ ‫وأنظمة‬ Windows) ‫و‬ (Linux ، ‫و‬ ‫ا‬ ‫لربوتوكوالت‬ ‫اجليد‬ ‫الفهم‬ ‫لشبكات‬ ،‫التشفري‬ ‫وتكنولوجيا‬ ‫الربجمة‬ ‫لغات‬ ‫وبعض‬ َ‫ك‬ ُ‫ل‬ ‫ال‬ ‫غة‬ C ، ‫و‬ Scripting language ‫كا‬ ‫ل‬ Python . ‫يف‬ ‫الكتاب‬ ‫يتدرج‬ ‫تناول‬ ‫األمور‬ ‫ذذه‬ ،‫ذرمي‬ ‫بشكل‬ ‫الربجمة‬ ‫أساسيات‬ ‫بتبسيط‬ ‫يبدأ‬ ‫ال‬ ‫ومبادئ‬ Computer Architecture ،‫للقارئ‬ ،‫األبواب‬ ‫لبقية‬ ‫األساس‬ ‫تعد‬ ‫حيث‬ ‫ثم‬ ‫ينتقل‬ ‫الشبكات‬ ‫علوم‬ ‫لىل‬ ‫و‬ ‫آلية‬ ‫بني‬ ‫البيانات‬ ‫انتقال‬ ‫األنظمة‬ ‫ثم‬ ، ‫ليبدأ‬ ‫أكثر‬ ‫يتعمق‬ ‫ب‬ ‫رشح‬ ‫وحتليل‬ ‫اإلطرت‬ ‫آليات‬ ‫و‬ ‫اق‬ ‫احلامية‬ ، ‫وخيتم‬ ‫ب‬ ‫التشفري‬ ‫علوم‬ ‫الالزمة‬ ‫لتحقي‬ ‫ق‬ ‫واملوثوقية‬ ‫والسالمة‬ ‫اخلصوصية‬ . ‫ب‬ ‫الكتاب‬ ‫موضوعات‬ ‫لعداد‬ ‫تم‬ ‫عتمدة‬ُ‫م‬ ‫تكون‬ ‫حيث‬ ،‫يل‬ ُ ‫تسلس‬ ‫بشكل‬ ‫بعضها‬ ‫عىل‬ ‫لكن‬ ‫بإمكانك‬ ‫كام‬ ‫التنقل‬ ‫داطل‬ ‫تشاء‬ ‫كنت‬ ‫لذا‬ ‫الكتاب‬ ‫املطلوبة‬ ‫باألساسيات‬ ً‫ام‬‫ل‬ُ‫م‬ .
  • 13. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [13] Introduction ‫أحد‬ ‫عن‬ ‫عبارة‬ ..‫أعجبتني‬ ‫بمقولة‬ ‫أبدأ‬ ‫أن‬ ُ ‫حب‬ُ‫أ‬ ‫ال‬ ‫مفهوم‬ ‫ح‬ِّ‫ُصح‬‫ت‬ ‫التي‬ ‫التعريفات‬ ‫قرصنة‬ !‫الكثري‬ ‫عند‬ : “Hacker is a term for both those who write code, and those who exploit it!” َ‫ت‬‫ال‬ ‫يف‬ ‫التكنيك‬ ‫نفس‬ ‫لدهيم‬ ‫النهاية‬ ‫يف‬ ‫أهنم‬ ‫لال‬ ‫منهم‬ ‫كل‬ ‫أذداف‬ ‫اطتالف‬ ‫من‬ ‫الرغم‬ ‫عىل‬ ُّ‫ل‬‫غ‬ ُ‫ه‬‫ألن‬ ،!‫ل‬‫شاك‬َ‫مل‬‫ا‬ ‫عىل‬ ‫ب‬ ‫ببساط‬ ‫ة‬ َ ‫جم‬ َ ‫الرب‬ ‫م‬‫ه‬َ‫ق‬ .. ‫ة‬ ‫اكت‬ ‫عىل‬ ُ‫ه‬‫ساعد‬ُ‫ي‬ ،‫األنظمة‬ ‫عىل‬ ‫ل‬ُ‫ي‬‫التحا‬ ‫ريد‬ُ‫ي‬ ‫ن‬‫مل‬ ‫هم‬ُ‫م‬ ‫الربجمي‬ ‫األططاء‬ ‫شاف‬ ‫ة‬ ،‫األمنية‬ ‫والثغرات‬ ‫اآلطر‬ ‫اجلانب‬ ‫وعىل‬ .. ‫م‬ِّ‫صم‬ُ‫م‬ ‫أو‬ ‫ج‬‫ربم‬ُ‫مل‬‫ا‬ ‫سينفع‬ )‫الربجمي‬ ‫اخلطأ‬ ‫أو‬ ‫نفسها‬ ‫(الثغرة‬ ‫االطرتاق‬ ‫ذذا‬ ‫حدوث‬ ‫لسبب‬ ‫الفهم‬ ‫ا‬ ‫يتفح‬ ‫حتى‬ ‫أكثر‬ ُ‫ه‬ُ‫علم‬ُ‫ي‬ َ ‫وس‬ ‫األمني‬ ‫لنظام‬ ‫األجهز‬ ‫لعدادات‬ ‫و‬ ‫أكواده‬ ‫ص‬ ‫ة‬ ‫لديه‬ ‫أن‬ ‫وبام‬ . َ ‫جم‬ َ ‫الرب‬ ‫م‬‫ه‬َ‫ق‬ ‫ة‬ ‫األسايس‬ ‫ط‬ َ ‫الرش‬ ‫و‬ُ‫ذ‬ َ‫ت‬ ‫حتى‬ ‫التي‬ ‫األساسيات‬ ‫عض‬َ‫ب‬‫ل‬ ‫ط‬ ّ‫س‬َ‫ب‬ُ‫م‬ ‫ح‬ َ ‫رش‬‫ب‬ ‫نبدأ‬ َ ‫سوف‬َ‫ق‬ ،‫الربوتوكوالت‬َ‫و‬ ‫األنظمة‬ َ‫ني‬َ‫ب‬ ‫األمور‬ ‫َسري‬‫ت‬ َ ‫َيف‬‫ك‬ ‫م‬َ‫فه‬ ‫بغ‬ ‫تحتاجها‬ َ ‫س‬ َ ‫ُنت‬‫ك‬ ‫ما‬ ‫عن‬ ‫النظر‬ ‫ض‬ ‫الربجم‬ ‫ب‬ ُ ‫حت‬ ‫ة‬ .!‫ال‬ ‫أم‬ ..‫رحلتنا‬ ‫لنبدأ‬ ‫ذيا‬ ‫الربنامج‬ ‫بار‬‫ع‬ ‫ذو‬ ‫ة‬ ‫جمموع‬ ‫عن‬ ‫ة‬ ‫كتوب‬َ‫م‬ ‫ل‬َ‫م‬ُ‫جل‬‫ا‬ ‫أو‬ ‫ر‬ُ‫ط‬‫األس‬ ‫من‬ ‫ة‬ ‫غ‬ُ‫ل‬‫ب‬ ‫ة‬ ‫عين‬ُ‫م‬ ‫ة‬ ‫قهناك‬ !‫قحسب‬ ‫الربامج‬ ‫ليست‬ ‫الواقع‬ ‫يف‬ ، ‫كثرية‬ ‫أمور‬ ‫عىل‬ ‫مبنية‬ ‫حولنا‬ ‫مفهوم‬ ‫الربجم‬ ‫ة‬ ‫للسيار‬ ‫قيادتك‬ ً‫ال‬‫مث‬ ، ‫ة‬ َ َ ‫ربجم‬ُ‫مل‬‫ا‬ ‫األمور‬ ‫ن‬‫م‬ ‫ُعد‬‫ت‬ ‫ة‬ ً ‫وذلك‬ ً‫ا‬‫ق‬َ‫ب‬‫س‬ُ‫م‬ ‫باتباع‬ ‫خلطوات‬ ‫ك‬ َ‫د‬‫د‬َ ُ ‫حم‬ ‫ة‬ ‫ياد‬‫الق‬ ‫ند‬‫ع‬ ‫ة‬ ‫الطبخ‬ ‫وصفات‬ ً‫ا‬‫أيض‬ ، ‫القدم‬ ‫ُرة‬‫ك‬ ‫رياضة‬ ً‫ا‬‫وأطري‬ ، ، ‫اهلدف‬ ‫قيها‬ ‫يتحقق‬ ‫جمموعة‬ ‫بحدوث‬ ‫من‬ ‫اإلحتامالت‬ ‫تنتهي‬ ، ‫بوضع‬ ‫ُر‬‫ك‬‫ال‬ ‫ة‬ ‫الشبك‬ ‫داطل‬ ‫ة‬ . ‫تاز‬ ُ ‫ُم‬ ‫ذذا‬ ! .. ‫ا‬ ‫لىل‬ ‫نعود‬‫ل‬ ‫لكمبيوتر‬ ..
  • 14. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [14] ‫أنه‬ ‫البدهيي‬ ‫من‬ ‫أن‬ ‫قعلينا‬ ‫ما‬ ‫بيشء‬ ‫يقوم‬ ‫الكمبيوتر‬ ‫نجعل‬ ‫كي‬ ‫ال‬ ُ‫ه‬‫ل‬ ‫نكتب‬ Instructions ‫ب‬ ‫يفهمها‬ ‫لغة‬ ‫وذي‬ ، ‫ال‬ Machine Language ، ‫الفهم‬ ‫صعبة‬ ‫لكنها‬ ! .. ‫عبار‬ ‫ألهنا‬ ‫ة‬ ‫عن‬ Bits, and Bytes ‫من‬ ‫وختتلف‬ Architecture .‫آلطر‬ ‫بال‬ ‫الكتابه‬ ‫أزمة‬ ‫عىل‬ ‫نتغلب‬ ‫ولكي‬ Machine Language ‫ال‬ ‫لنا‬ ‫ظهر‬ Assembler ‫بار‬‫ع‬ ‫وذو‬ ‫ة‬ ‫ن‬َ‫ع‬ Translator ‫ال‬ ‫مجة‬ َ ‫رت‬‫ب‬ ‫يقوم‬ Assembly Instructions ‫ال‬ ‫اىل‬ Machine Language . ‫ُعد‬‫ت‬ ‫ال‬ ‫غة‬ُ‫ل‬ Assembly ‫أبسط‬ ‫ن‬‫م‬ ‫ال‬ Machine ، ‫هي‬َ‫ق‬ ‫مفهوم‬ ‫وعناوين‬ ‫امت‬‫َل‬‫ك‬ ‫م‬‫َخد‬‫ت‬‫َس‬‫ت‬ ‫ة‬ ‫ال‬ ‫كس‬َ‫ع‬‫ب‬ Machine ‫تتشابه‬ ‫لكنها‬ .!‫ققط‬ ‫أرقام‬ ‫من‬ ‫تتكون‬ ‫التي‬ ‫مع‬ ‫ال‬ Machine ‫ال‬ ‫نوع‬ ‫باطتالف‬ ً‫ا‬‫أيض‬ ‫ختتلف‬ ‫أهنا‬ ‫يف‬ Architecture . ‫ن‬‫ق‬ َ‫ر‬َ‫ع‬ ‫حاج‬‫ب‬ ‫أننا‬ ‫ا‬ ‫ة‬ ‫لىل‬ Translator ‫ال‬ ‫من‬ ‫للتحويل‬ Assembly ‫ال‬ ‫لىل‬ Machine Language ، ‫اللغ‬ ‫وذي‬ ‫ة‬ ‫التي‬ ‫ال‬ ‫يستطيع‬ CPU ‫بال‬ ‫األكواد‬ ‫ُب‬‫ت‬‫سنك‬ ‫ذل‬ ‫واآلن‬ ..‫ها‬َ‫م‬َ‫فه‬َ‫ي‬ ‫أن‬ Assembly ،‫؟‬ ،!ً‫ا‬‫أيض‬ ً‫ا‬‫صعب‬ ‫األمر‬ ‫كون‬َ‫ي‬ َ ‫س‬ ُ‫ن‬‫َح‬‫ن‬ ‫حاج‬‫ب‬ ‫ة‬ ‫لىل‬ Translator ‫م‬ ‫ه‬ُ‫ب‬ُ‫ت‬‫َك‬‫ن‬ ‫ما‬ ‫نا‬َ‫ل‬ ‫رتجم‬ُ‫ي‬‫ل‬ ‫آطر‬ ‫نوع‬ ‫ن‬‫م‬ ‫ال‬ ‫غات‬ُ‫ل‬ ‫ثل‬‫م‬ ‫بلغات‬ ‫أكواد‬ ‫ن‬ C, C++ ‫ال‬ ‫لىل‬ Machine Language ‫ال‬ ‫سيكون‬ ‫نا‬ُ‫ذ‬.. ، Translator ‫ال‬ ‫ذو‬ Compiler . ‫ال‬ ‫يقوم‬ ..ً‫ا‬‫لذ‬ Compiler ‫ال‬ ‫بلغة‬ ‫األكواد‬ ‫برتمجة‬ C ‫ال‬ ‫نوع‬ ‫عىل‬ ً‫ء‬‫وبنا‬ ‫اآلله‬ ‫غة‬ُ‫ل‬ ‫لىل‬ Processor Architecture ‫بال‬ ‫ربجمني‬ُ‫مل‬‫ا‬ ‫اذتامم‬ ِّ ‫فُس‬ُ‫ي‬‫ما‬ ‫وذذا‬ ،‫املوجود‬ Source Code ‫ال‬ ‫ولكن‬ ،!‫الربنامج‬ ‫لنجاح‬ ‫األساس‬ ‫ألنه‬ Hacker ‫نا‬ُ‫ذ‬ ‫ال‬ ‫أن‬ ‫عي‬َ‫ي‬ Compiled Program ‫سيتعامل‬ ‫الذي‬ ‫ذو‬ ‫املطاف‬ ‫هناية‬ ‫يف‬ ‫ال‬ ‫مع‬ CPU ، ‫تعامل‬ ‫لكيفية‬ ‫اجليد‬ ‫بالفحص‬ ‫و‬ ‫ال‬ CPU ‫وال‬ Memory ‫اكتشاف‬ ‫من‬ ‫يتمكن‬ ‫بام‬ُ‫ر‬ ،‫الربنامج‬ ‫ذذا‬ ‫مع‬ ‫ثغرة‬ ‫ال‬ ‫أو‬ ‫الربنامج‬ ‫يف‬ Application ُ‫مت‬ ‫حينها‬ ُ‫ه‬‫ن‬‫ك‬ ‫لحداث‬ ‫من‬ crash ‫ال‬ ‫ذذا‬ ‫يقوده‬ ‫وربام‬ ،‫له‬ crash ‫ال‬ ‫توجيه‬ ‫حماولة‬ ‫لىل‬ execution flow ‫أطرى‬ ‫ألماكن‬ ‫داطل‬ ‫ال‬ memory ‫ال‬ ‫من‬ ‫جمموعة‬ ‫ِبا‬ ‫يضع‬ ‫حيث‬ instructions ‫ُسميها‬‫ن‬ shellcode ‫ال‬ ‫ليقوم‬ ، CPU ‫استكامل‬ ‫من‬ ً‫ال‬‫بد‬ ‫بتنفيذذا‬ .!‫الربنامج‬ ‫تنفيذ‬
  • 15. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [15] ‫ذذا‬ ‫عىل‬ ‫يؤكد‬ ‫األمر‬ ‫السيد‬ " Dave Aitel " ‫بار‬‫الع‬ ‫ه‬‫ذ‬َ‫ِب‬ ‫ة‬ : “Hacking is not reverse engineering!, your goal is not to come up with original source code for the application!, your goal is to have a greater understanding of the program or system than the people who built it”. ‫تطوي‬ ‫تم‬ ‫تقنيات‬ ‫ر‬ ‫ملنع‬ ‫أمنية‬ ‫او‬ ُ ‫حم‬ ‫ذه‬َ‫ذ‬ ‫ب‬ُ‫ع‬‫َال‬‫ت‬‫ال‬ ‫الت‬ ‫نها‬‫م‬ ، SafeSEH ‫وال‬ ، Nonexecutable Stack ‫ال‬ ‫أو‬ Randomized Stack Space ، ‫و‬ ‫قامت‬ ‫مايكروسوقت‬ ‫شهرية‬ ‫تقنية‬ ‫بتطوير‬ .. ‫ذي‬ “DEP” ، ‫التقنيات‬ ‫من‬ ‫وغريذا‬ ‫يف‬ ً‫ا‬‫الحق‬ ‫ناقشتها‬ُ‫م‬ ‫جري‬َ‫ي‬‫س‬ ‫التي‬ ‫األمنية‬ ‫الثالث‬ ‫الباب‬ .‫اهلل‬ ‫بإذن‬ ..!‫رائع‬ ‫ذذا‬ ‫ال‬ ‫ة‬َ‫غ‬ُ‫ل‬ ‫ن‬‫م‬ ‫َستفيد‬‫ن‬ َ ‫س‬ ‫ماذا‬ ‫ولكن‬ Assembly .. ‫؟‬ ، ‫ال‬ ‫م‬‫َخد‬‫ت‬‫َس‬‫ن‬ َ ‫س‬ ‫ققط‬ ‫ُنا‬‫ك‬ ‫لذا‬ Compiler ‫لىل‬ ‫ُريد‬‫ن‬‫ما‬ ‫ة‬َ َ ‫رتمج‬‫ل‬ ‫ال‬ Machine Language .!‫األمر‬ ‫وينتهي‬ ‫ة‬َ‫غ‬ُ‫ل‬‫ل‬ ‫اخلصائص‬ ‫بعض‬ ‫أوضح‬ ‫دعني‬ ‫ولكن‬ ،‫منطقي‬ ‫ذذا‬ ..‫نعم‬ ‫ال‬ Assembly ‫وا‬ ‫أمهيتها‬ ‫ك‬َ‫وحد‬ ‫َعي‬‫ت‬ ‫َجعلك‬‫ت‬ َ ‫س‬ ‫لتي‬ .  ‫ال‬ Assembly ُ‫ت‬ َ‫ق‬‫ري‬َ‫ط‬ َ ‫عترب‬ ‫ة‬ ‫َخ‬‫ت‬‫يس‬ ‫ال‬ ‫عراض‬‫الست‬ ‫ني‬‫ربجم‬ُ‫مل‬‫ا‬ ‫ها‬ُ‫م‬‫د‬ " Machine Language Instructions " ‫ال‬ ‫لىل‬ ‫لعطاؤذا‬ ‫َم‬‫ت‬ ‫التي‬ CPU .  ‫ال‬ Assembly ‫القة‬َ‫ع‬‫ب‬ ‫تتعامل‬ One-to-One ‫ال‬ ‫مع‬ Machine Language ‫ُل‬‫ك‬‫ل‬ ‫أنه‬ ‫بمعنى‬ ، Instruction ‫ال‬ ‫غة‬ُ‫ل‬‫ب‬ Machine ‫لها‬‫قاب‬ُ‫ي‬ Instruction ‫ال‬ ‫ة‬ُ‫غ‬ُ‫ل‬‫ب‬ Assembly ‫ريق‬َ‫ط‬‫ب‬ ُ‫ه‬‫ح‬‫يوض‬ ‫ة‬ ‫ال‬ ‫تعامل‬َ‫ي‬ َ ‫َيف‬‫ك‬ ‫َفهم‬‫ت‬‫ل‬ ‫أسهل‬ CPU ‫ثال‬‫َم‬‫ك‬‫و‬ ،!‫عليه‬ ‫ل‬َ‫عم‬َ‫ي‬ ‫الذي‬ ‫الربنامج‬ َ‫ع‬َ‫م‬ ‫عل‬‫الف‬‫ب‬ .. " 0xc3 " ‫أو‬ 11000011 ‫اآلل‬ ‫غة‬ُ‫ل‬‫ب‬ ‫ة‬ ‫بال‬ ُ‫ه‬‫قابل‬ُ‫ي‬ Assembly ‫ذذه‬ :‫ة‬َ‫م‬‫َل‬‫ك‬‫ال‬ " ret " ‫عنى‬َ‫م‬‫ب‬ (return) .
  • 16. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [16] ‫األمر؟‬ ‫ذذا‬ ‫ُطبق‬‫ن‬ َ ‫وكيف‬ ‫ى‬ّ‫سم‬ُ‫ي‬ ‫ما‬ ‫م‬‫َخد‬‫ت‬‫َس‬‫ن‬ ‫نا‬ُ‫ذ‬ ‫بال‬ Disassembler ‫ال‬ ‫ترمجة‬ ‫بإعادة‬ ‫يقوم‬ ‫والذي‬ Machine Language ‫ال‬ ‫لغة‬ ‫لىل‬ Assembly ‫والتحليل‬ ‫الفهم‬ ‫ل‬ُ‫ه‬‫س‬َ‫ي‬ ‫كي‬ . ‫تأمل‬ ‫معي‬ ‫مغزى‬ ‫لك‬ ‫ستوضح‬ ‫الصورة‬ ‫ذذه‬ ‫األمر‬ .. ‫توضح‬ ‫الصورة‬ ‫ذذه‬ ‫لنا‬ ‫به‬ ‫مايقوم‬ ‫كل‬ ‫من‬ ‫ال‬ malware author ‫بلغه‬ ‫أكواده‬ ‫يكتب‬ ‫حيث‬ ‫ال‬ ‫مثل‬ C ‫ال‬ ‫عمل‬ ‫يرتكز‬ ‫بينام‬ ، malware analyst ‫وتدقيق‬ ‫قحص‬ ‫يف‬ ‫ال‬ instructions ‫ال‬ ‫أو‬ software behavior ‫ال‬ ‫باستخدام‬ Hex Auditors ‫كال‬ IDA Pro .‫وغريذا‬ ‫عىل‬ ‫الرتكيز‬ ‫ذو‬ ‫الشكل‬ ‫ذذا‬ ‫ن‬‫م‬ ُ‫ه‬‫ُريد‬‫ن‬ ‫ما‬ ‫ن‬‫م‬ ٍ‫ُل‬‫ك‬ ‫وظيفة‬ ‫ال‬ Compiler ‫ال‬ ‫و‬ Disassembler . ‫ذ‬ ‫كان‬ ‫والتي‬ ،‫قدمة‬ُ‫مل‬‫ا‬ ‫ذذه‬ ‫هاية‬‫ن‬‫ل‬ ‫وصلنا‬ ‫نكون‬ ‫نا‬ُ‫ذ‬ ‫لىل‬ ‫دقها‬ ‫الربجم‬ ‫أمهية‬ ‫إلدراك‬ ‫حتفيزك‬ ‫ة‬ ..! ‫ذلك؟‬ ‫أدركت‬ ‫ذل‬ ، ..!‫جيد‬ ‫ذيا‬ ‫الربجم‬ ‫أساسيات‬ ‫برشح‬ ‫لنبدأ‬ ً‫ا‬‫لذ‬ ‫ة‬ ‫ال‬ ‫ة‬َ‫غ‬ُ‫ل‬‫ب‬ C .
  • 17. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [17] Control Structures ‫الطبيعي‬ ‫من‬ َ‫موع‬ َ ‫جم‬ ‫ن‬‫م‬ ‫يتكون‬ ‫الربنامج‬ ‫أن‬ ‫ة‬ ‫ال‬ َ‫ن‬‫م‬ Instructions ‫ظهرت‬ ‫لذا‬ ‫العمل‬ ‫ما‬ ‫ولكن‬ ،ً‫ا‬‫باع‬‫ت‬ ‫تنفيذذا‬ ‫يتم‬ ‫التي‬ ‫اخليارات‬ ‫بعض‬ ‫م‬‫َخد‬‫ت‬‫س‬ُ‫مل‬‫ا‬ ‫مع‬ ‫التعامل‬ ‫أثناء‬ ‫العقبات‬ ‫أو‬ ‫احليا‬ ‫واقع‬ ‫ن‬‫م‬ ‫ثال‬‫م‬ ‫ب‬‫َرض‬‫ن‬‫ل‬ ‫؟‬ ‫ة‬ ‫للسيار‬ ‫تك‬َ‫د‬‫يا‬‫ق‬ ‫أثناء‬ َ ‫أنت‬ ، ‫ة‬ ، ‫ال‬ ‫تفعيل‬ ‫ُك‬‫ن‬‫مك‬ُ‫ي‬ GPS ‫قيقوم‬ َ‫ه‬‫ج‬‫للو‬ ‫د‬‫د‬َ ُ ‫حم‬ ‫سار‬َ‫م‬ ‫م‬‫س‬ َ‫ر‬‫ب‬ ‫ة‬ ‫الشوارع‬ ‫أحد‬ ‫وجدت‬ ‫أو‬ ‫طاطئ‬ ‫طريق‬ ‫يف‬ َ ‫ت‬‫ِس‬ ‫لذا‬ ‫ولكن‬ ، ‫ال‬ ‫قسيقوم‬ ‫مسدوده‬ GPS ‫ال‬ ‫بتغيري‬ Route ‫ا‬ ‫عىل‬ ‫نس‬ ً‫ا‬‫أيض‬ ُ‫َحن‬‫ن‬ ،!‫لفور‬ َ َ ‫جم‬ َ ‫الرب‬ ‫يف‬ ‫التكنيك‬ ‫نفس‬ ‫م‬‫َخد‬‫ت‬ ‫ة‬ ‫ط‬َ‫خ‬‫ب‬ ‫م‬‫ك‬َ‫َح‬‫ت‬َ‫ن‬َ‫ق‬ ، ‫ال‬ ‫ري‬ َ ‫س‬ Instructions ‫ُق‬‫ن‬ ‫ا‬‫مل‬ ً‫ا‬‫قق‬‫و‬ .‫ف‬‫وق‬َ‫مل‬‫ا‬ ‫يه‬‫قتض‬َ‫ي‬ ‫ا‬‫ومل‬ ‫ه‬‫ر‬ ِّ‫ر‬ ‫ال‬ ‫بعض‬ ‫عن‬ ‫سنتكلم‬ Statements ‫ال‬ ‫بعمل‬ ‫تقوم‬ ‫التي‬ " Control " ‫ام‬ َ ‫للرب‬ ‫السياره‬ ‫قيادة‬ ‫ثال‬‫م‬ ‫َطبيق‬‫ت‬‫ب‬ ‫ج‬ . If-Then-Else ‫دع‬ ‫أن‬ ‫نتصور‬ ‫نا‬ ‫نا‬ ‫ن‬ ‫سري‬ ‫يف‬ ‫رئييس‬ ‫شارع‬ ..  ‫قإن‬ (If) ‫الشارع‬ ‫يف‬ ‫اإلصالحات‬ ‫بعض‬ ‫تواجد‬ َ ‫صادف‬ (Condition) ..  ً‫ا‬‫لذ‬ (Then) ، ‫ال‬ ‫بعض‬ ‫بتنفيذ‬ ‫سنقوم‬ Instructions !‫ق‬‫العائ‬ ‫ذذا‬ ‫تفادي‬‫ل‬ ..  ‫ذلك‬ ‫غري‬ (Else) ، ‫اإلصالحات‬ ‫ف‬‫ُصاد‬‫ت‬ ‫مل‬ ‫طاملا‬ ‫سريك‬ ‫باستكامل‬ ‫م‬ُ‫ق‬ .(Condition) If (condition) then { Set of instructions to execute if the condition is met; } Else { Set of instruction to execute if the condition is not met; }
  • 18. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [18] While/Until Loop ‫أحي‬ ‫جمموع‬ ‫تنفيذ‬ ‫ربمج‬ُ‫مل‬‫ا‬ ‫ريد‬ُ‫ي‬ ً‫ا‬‫ان‬ ‫ة‬ ‫ال‬ ‫من‬ Instructions ‫مر‬ ‫من‬ ‫أكثر‬ ‫ة‬ ،! ‫ال‬ ‫له‬ ‫تضع‬ ‫أن‬ ‫وستحتاج‬ Condition ‫التي‬ ‫س‬ ‫ي‬ ‫التكرار‬ ‫بتنفيذ‬ ‫عليها‬ ً‫ء‬‫بنا‬ ‫قوم‬ . :‫املثال‬ ‫ذذا‬ ‫لنأطذ‬ " ‫لذ‬ ،‫اجلوع‬ ‫أصابك‬ ‫لن‬ ‫التهم‬ ‫ثم‬ ‫الطعام‬ ‫عىل‬ ‫واحصل‬ ‫ذب‬ ‫ة‬ " .. ‫الثاين‬ ‫القوس‬ ‫ينتهي‬ ({) ‫ال‬ ‫قيعود‬ Pointer ‫الب‬ ‫لىل‬ ‫داية‬ ‫أطرى‬ ً‫ة‬‫مر‬ ‫الرشط‬ ‫من‬ ‫قيتحقق‬ .. ‫جائع؟‬ ‫الزلت‬ ‫ذل‬ .. ‫الدال‬ ‫ج‬‫طار‬ ‫ج‬ ُ‫َخر‬‫ن‬ َ ‫س‬ ً‫ا‬‫لذ‬ ،!‫ال‬ ‫ة‬ . While (you are hungry) { Find some food; Eat the food; } ‫الكوب‬ ‫عىل‬ ‫املكتوب‬ ‫الكود‬ ‫داللة‬ ‫قهمت‬ ‫ذل‬ ..‫واآلن‬ ‫صفحة‬ ‫يف‬ ‫املوجود‬ ‫الباب؟‬ ‫ذذا‬ ‫عنوان‬ . ‫دالة‬ Until ‫ال‬ ‫نفس‬ ‫ذي‬ While :‫أنه‬ ‫أي‬ ،!‫معكوس‬ ‫برشط‬ ‫ولكن‬ ‫باألكل‬ ‫استمر‬ ،!‫بعد‬ ‫تشبع‬ ‫مل‬ ‫أنك‬ ‫لطاملا‬ . Until (you are not hungry) { Find some food; Eat the food; }
  • 19. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [19] For Loop ‫اخلطوات‬ ‫ذذه‬ ،‫ططوات‬ ‫ة‬ّ‫د‬‫ع‬‫ب‬ ‫بالقيام‬ ‫الربنامج‬ ‫ُخرب‬‫ن‬ ‫كأن‬ .‫ات‬ ّ‫ر‬َ‫مل‬‫ا‬ َ‫ن‬‫م‬ ‫د‬َ‫د‬َ‫ع‬‫ل‬ ‫ما‬ ٍ‫يشء‬ ‫تكرار‬‫ل‬ ‫احلاجه‬ ‫عند‬ ً‫ا‬‫أيض‬ ‫نستخدمها‬ .‫الداله‬ ‫من‬ ‫باخلروج‬ ‫سيقوم‬ ‫املرات‬ ‫عدد‬ ‫انتهاء‬ ‫وبعد‬ .‫ِبا‬ ‫ه‬ُ‫ُخرب‬‫ن‬ َ ‫س‬ ‫ات‬ ّ‫ر‬َ‫مل‬‫ا‬ ‫ن‬‫م‬ ‫د‬َ‫د‬َ‫ع‬‫ل‬ ‫َررذا‬‫ك‬ُ‫ي‬ َ ‫س‬ ‫ثال‬‫م‬ ‫ماييل‬ ‫ذذه‬ ‫لتوضيح‬ ‫الدال‬ ‫ة‬ ٍ‫كل‬ ‫باستخدام‬ ‫تطبيقه‬‫ب‬ ‫نقوم‬ َ ‫س‬ ،‫رتات‬‫م‬ ‫كيلو‬ ‫ة‬ َ ‫س‬ َ ‫َخ‬ ‫ساقة‬َ‫مل‬ ‫ة‬َ‫ب‬َ‫ك‬‫ر‬َ‫مل‬‫ا‬ ‫قيادة‬‫ل‬ ‫األمر‬ ‫عطي‬ُ‫ي‬ ‫كود‬ ‫ن‬َ‫ع‬ ‫باره‬‫ع‬ ، ‫ن‬‫م‬ While ‫و‬ For . For (5 iterations) Drive straight for 1 mile; ‫مل‬ ‫بالسري‬ ‫تقوم‬ ‫م‬ُ‫ث‬ ،‫واحد‬ ‫ميل‬ ‫ة‬َ‫ق‬‫سا‬َ‫مل‬ ‫السياره‬ ‫يادة‬‫ق‬‫ب‬ ‫َقوم‬‫ت‬ َ ‫س‬ ‫نا‬ُ‫ذ‬ ‫امليل‬ ‫لىل‬ ‫تصل‬ ‫أن‬ ‫لىل‬ ‫وذكذا‬ ،‫ثالث‬ ‫ميل‬ ‫م‬ُ‫ث‬ ،‫آطر‬ ‫يل‬ .‫اخلامس‬ ‫ال‬ ‫غة‬ُ‫ل‬‫ب‬ ‫الدالة‬ ‫شكل‬ ‫ذذا‬ C : For (i=0; i<5; i++) Drive straight for 1 mile; ً‫ا‬‫مع‬ ‫ُشاذد‬‫ن‬‫س‬ ‫كيف‬ ‫ن‬ ..ً‫ا‬‫الحق‬ ً‫ا‬‫كثري‬ ‫سيتكرر‬ ‫ألنه‬ ،‫الكود‬ ‫ذذا‬ ‫قرأ‬ ‫بقيمة‬ ‫ل‬ ُ ‫ط‬‫َد‬‫ت‬ َ ‫س‬ (i = 0) ‫قيمة‬ ‫قتزداد‬ ،‫واحد‬ ‫ميل‬ ‫ملساقة‬ ‫تقود‬ ‫ثم‬ i ‫قيكون‬ ،‫بواحد‬ ( i = 1 ) ‫بالرقم‬ ‫ُقارنه‬‫ت‬ ‫ثم‬ ، 5 ‫ذو‬ ‫ذل‬ ، ‫بتنفيذ‬ ‫قم‬ ‫ثم‬ ،‫آطر‬ ‫ميل‬ ‫مساقة‬ ‫لتقود‬ ‫اذذب‬ ،!‫نعم‬ ،‫أصغر؟‬ i++ ‫قيكون‬ ( i = 2 ) ‫بالرقم‬ ُ‫ه‬‫ن‬‫قار‬ ‫واآلن‬ ، 5 ‫للقياد‬ ‫د‬ُ‫ع‬ ‫ثم‬ ، ‫ة‬ ، ‫قيمة‬ ‫تكون‬ ‫أن‬ ‫لىل‬ ‫استمر‬ i ‫تساوي‬ 5 ‫بالرشط‬ ‫ُقارهنا‬‫ن‬‫ق‬ ، ( i < 5 ) ‫ال‬ ‫طارج‬ ‫قنخرج‬ ،!‫يتحقق‬ ‫مل‬ ‫أنه‬ ‫قنجد‬ .‫دالة‬
  • 20. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [20] ‫باستخدام‬ ‫الرشط‬ ‫نفس‬ ‫ق‬ّ‫ب‬‫ُط‬‫ن‬‫س‬ ‫واآلن‬ While Set the counter to 0; While (the counter is less than 5) { Drive straight for 1 mile; Add 1 to the counter; } ( ‫العداد‬ ‫بتصفري‬ ‫سنقوم‬ ‫نا‬ُ‫ذ‬ 0 ( ‫ليصبح‬ ‫واحد‬ ‫بقيمة‬ ‫العداد‬ ‫وزيادة‬ ،‫واحد‬ ‫ميل‬ ‫ملساقة‬ ‫القيادة‬ ‫ثم‬ ،) 1 ‫الع‬ ‫ثم‬ ) ‫و‬ ‫د‬ ‫ة‬ ‫للدالة‬ ‫ب‬ ‫الرقم‬ ‫ومقارنة‬ 5 ( ‫ليصبح‬ ‫العداد‬ ‫وزيادة‬ ‫آطر‬ ‫ميل‬ ‫بمساقة‬ ‫للسري‬ ‫قنعود‬ ،‫أقل‬ ‫أنه‬ ‫قنجد‬ 2 ‫الوصول‬ ‫حتى‬ ‫وذكذا‬ ) ( ‫للرقم‬ 4 .‫النهاية‬ ‫قتكون‬ ) Variables ‫ُنا‬‫ن‬‫مك‬ُ‫ي‬ ‫لناء‬ ‫عن‬ ‫عبارة‬ ‫ذو‬ ‫املتغري‬ َ‫د‬ّ‫د‬ ُ ‫حم‬ ‫ة‬َ‫يم‬‫ق‬ ‫بداطله‬ ‫ع‬ َ ‫َض‬‫ن‬ ‫أن‬ ‫ة‬ ‫استخدام‬ ‫قبل‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫نوع‬ ‫حتديد‬ ‫من‬ ‫د‬ُ‫ب‬‫ال‬ ، ‫شابه‬ُ‫م‬ ‫ذذا‬ ،‫ه‬ ‫حيتفظ‬ ‫ال‬ ‫ربام‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫ذذا‬ .‫عليها‬ ‫ه‬َ‫ق‬ َ ‫لص‬ُ‫مل‬‫ا‬ ‫الصور‬ ‫أو‬ ‫الكتابة‬ ‫بوجود‬ ‫متييزذا‬ ‫نستطيع‬ !‫والعصائر‬ ‫املرشوبات‬ ‫جاجات‬ ُ‫لز‬ ‫لفظة‬ ‫عليه‬ ‫لطالق‬ ‫قتم‬ ،‫منها‬ ‫ح‬ َ‫ر‬‫َط‬‫ن‬ ‫أو‬ ،‫عليها‬ ‫اإلضاقة‬ ‫أو‬ ،‫َغيريذا‬‫ت‬ ‫مكننا‬ُ‫ي‬ ،‫األبد‬ ‫اىل‬ ‫بداطله‬ ‫القيمة‬ ‫ِبذه‬ " ‫متغري‬ " ‫ماييل‬ ، ‫املوج‬ ‫تعريفه‬ ‫ز‬ ‫اإلنجليزي‬ ‫باللغه‬ ‫ة‬ : “An object that holds data that can be changed” ‫َوعه‬‫ن‬ ‫د‬ِّ‫د‬َ‫ُح‬‫ن‬‫و‬ ِّ ‫ري‬َ‫غ‬َ‫ت‬ُ‫مل‬‫ا‬ ‫اسم‬ ‫ُر‬‫ك‬‫َذ‬‫ن‬ ‫أن‬ ‫علينا‬ ‫جيب‬ ،ً‫ا‬‫برجمي‬ (declare your Variable) ‫أرقام‬ ‫أو‬ ً‫ا‬‫حروق‬ ‫سيحوي‬ ‫كان‬ ‫لذا‬ ‫ما‬ ً‫ال‬‫مث‬ . ‫احلال‬ ‫كام‬ ،‫برناجمك‬ ‫داطل‬ ‫باستخدامه‬ ‫تقوم‬ ‫أن‬ ‫قبل‬ ‫ذلك‬ ‫يتم‬ ‫أن‬ ‫جيب‬ ‫مع‬ ‫ُر‬‫ك‬‫َذ‬‫ن‬‫و‬ ‫ف‬ ِّ‫ر‬َ‫ع‬ُ‫ن‬ ‫قنحن‬ ،‫الطبخ‬ ‫وصفات‬ .‫بالطهي‬ ‫الرشوع‬ ‫قبل‬ ‫وأنواعها‬ ‫بأسامئها‬ ‫قادير‬َ‫مل‬‫ا‬
  • 21. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [21] ‫ال‬ ‫داطل‬ ‫ما‬ ٍ‫مكان‬ ‫يف‬ ‫بتخزينها‬ ‫اجلهاز‬ ‫يقوم‬ ‫املتغريات‬ ‫ذذه‬ Memory ، .‫بعد‬ ‫قيام‬ ‫بالتفصيل‬ ‫األماكن‬ ‫ذذه‬ ‫عن‬ ‫سنتكلم‬ ‫ال‬ ‫أنواع‬ ‫بعض‬ ‫ماييل‬ variables : int (integer values) float (decimal floating) char (single character values) ‫نا‬ُ‫ذ‬ ‫ن‬ ‫ق‬ ‫و‬ ‫م‬ ‫تغريين‬ُ‫م‬ ‫َعريف‬‫ت‬‫ب‬ a ‫و‬ b ‫َوعيهام‬‫ن‬ ‫تحديد‬‫ب‬ ‫منا‬ُ‫ق‬‫و‬ ( int ،) ‫سيكون‬ ‫كالذم‬ ‫أن‬ ‫أي‬ object ُ‫ه‬‫نوع‬ ‫عدد‬ ‫ب‬‫يستوع‬‫ل‬ " Integer " .‫حيح‬ َ ‫ص‬ ‫دد‬َ‫ع‬ ،‫عد‬َ‫ب‬ ُ‫ه‬‫ق‬‫ر‬‫َع‬‫ن‬ ‫ال‬ int a, b; :‫بسيط‬ ‫مثال‬ ‫نأطذ‬‫ل‬ int a = 13, b; float k; char z = 'A'; k = 3.14; z = 'w'; b = a + 5; ‫تغري‬ُ‫م‬ ‫بتعريف‬ ‫نا‬ُ‫ذ‬ ‫منا‬ُ‫ق‬ a ‫الرقم‬ ‫وذو‬ !ً‫ا‬‫سبق‬ُ‫م‬ ‫بداطله‬ ‫ما‬ ‫وحددنا‬ 13 .. ‫آطر‬ ‫تغري‬ُ‫م‬ ‫ددنا‬ َ‫ح‬ ‫م‬ُ‫ث‬ b ‫نوعه‬ ، " ‫صحيح‬ ‫عدد‬ " ‫ن‬‫ولك‬ ‫ه‬‫ل‬‫داط‬‫ب‬ ‫حويه‬َ‫ي‬ َ ‫س‬ ‫ما‬ ‫ُحدد‬‫ن‬ َ‫مل‬ .. ‫آطر‬ ‫تغري‬ُ‫م‬ ‫قنا‬‫ر‬َ‫ع‬ ‫م‬ُ‫ث‬ k ‫نوعه‬ " ‫عرشي‬ ‫عدد‬ " ‫آطر‬ ‫متغري‬ ‫ثم‬ ، z ‫بد‬ ‫سيحوي‬ ‫اطله‬ ‫ذو‬ ‫واحد‬ ‫حرف‬ A .. ‫املتغري‬ ‫داطل‬ ‫وضعها‬ ‫نود‬ ‫التي‬ ‫القيمة‬ ‫حددنا‬ ‫وبعدذا‬ k ‫وذي‬ 3.14 .. ‫تغري‬ُ‫للم‬ ‫تغيري‬ ‫بإجراء‬ ‫منا‬ُ‫ق‬ ‫م‬ُ‫ث‬ z ‫احلرف‬ ‫وذو‬ ،‫بداطله‬ ‫ما‬ ‫استبدلنا‬ ‫حيث‬ ‫جديد‬ ‫من‬ A .. ‫ذو‬ ،‫آطر‬ ‫حرف‬ ‫منه‬ ً‫ال‬‫بد‬ ‫ووضعنا‬ w .. ‫أطربنا‬ ً‫ا‬‫أطري‬ ‫م‬ُ‫ث‬ ‫صديقنا‬ ‫تغري‬ُ‫مل‬‫ا‬ b ‫قيم‬ ‫داطله‬ ‫ن‬ ِّ‫خز‬ُ‫ي‬ َ ‫س‬ ُ‫ه‬‫أن‬ ‫املتغري‬ ‫ة‬ a ‫وذي‬ 13 ‫عدد‬ ‫عليها‬ ً‫ا‬‫زائد‬ 5 ..
  • 22. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [22] ‫قيمة‬ ‫ستكون‬ ‫وبالتايل‬ b ‫النهاية‬ ‫يف‬ 18  . ‫ال‬ ‫بعض‬ ‫لتوضيح‬ ‫اآلن‬ ‫سننتقل‬ Operators .‫همة‬ُ‫مل‬‫ا‬ Arithmetic Operators Operation Symbol Example Addition + b = a + 5 Subtraction - b = a - 5 Multiplication * b = a * 5 Division / b = a / 5 Modulo reduction % b = a % 5 ‫ال‬ ‫توضيح‬‫ب‬ ‫نقوم‬ َ ‫س‬ " Mod " ‫تغري‬ُ‫م‬ ‫ض‬‫َفر‬‫ن‬‫ل‬ ،‫ثال‬‫َم‬‫ك‬‫و‬ ،‫ة‬َ‫سم‬‫الق‬ ‫عملية‬ ‫لجراء‬ ‫بعد‬ ‫تبقية‬ُ‫مل‬‫ا‬ ‫القيمة‬ ‫وذو‬ a=13 ‫وأردنا‬ ‫عىل‬ ‫القسمة‬ 5 ‫الناتج‬ ‫قيكون‬ 2 ‫الرقم‬ ‫من‬ ‫ويتبقى‬ 13 ‫ذي‬ ..‫قيمة‬ ‫ذذه‬ ‫سمة‬‫الق‬ ‫عملية‬ ‫بعد‬ ( 3 .) (13%5 = 3) ‫االطتصارات‬ ‫بعض‬ ‫أيضا‬ ‫نستخدم‬ (Shorthand Expressions) ‫ال‬ ‫دالة‬ ‫يف‬ ‫املستخدمة‬ ‫تلك‬ ‫مثل‬ ‫الدوال‬ ‫بعض‬ ‫يف‬ For ً‫ا‬‫دوم‬ i++ . Full Expression Shorthand Explanation i = i + 1 i++ or ++i Add 1 to the variable i = i - 1 i-- or --i Subtract 1 from the variable ‫ال‬ ‫مع‬ ‫القات‬َ‫ع‬‫ال‬ ‫ذه‬َ‫ذ‬ ‫استخدام‬ ‫م‬‫ت‬َ‫ي‬ ‫ما‬َ‫ند‬‫وع‬ Arithmetic Operators ‫قتخت‬ ‫ل‬ ً‫ا‬‫تبع‬ ‫النواتج‬ ‫لف‬ ‫ستخدم‬ُ‫مل‬‫ا‬ ‫االطتصار‬ ‫نوع‬ .
  • 23. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [23] ‫مثال‬ : int a, b; a = 5; b = a++ * 6; ‫ن‬‫م‬ ً‫ال‬‫ك‬ ‫سيحوي‬ ‫ماذا‬ a ‫و‬ b ‫؟‬ :‫كالتايل‬ ‫الناتج‬ ‫سيكون‬ ..‫نعم‬ b = 30 a = 6 ‫ملاذا؟‬ ‫ألن‬ a++ ‫بإضاقة‬ ‫الربنامج‬ ‫رب‬‫ُخ‬‫ن‬ ‫أننا‬ ‫تعني‬ 1 ‫املتغري‬ ‫قيمة‬ ‫لاىل‬ a ‫ولكن‬ " ‫بعد‬ " ‫العم‬ ‫لمتام‬ ‫ل‬ ‫احلسابية‬ ‫ية‬ ! . :‫آطر‬ ‫ثال‬‫م‬ ‫لنستعرض‬ int a, b; a = 5; b = ++a * 6; ‫تغري‬ُ‫مل‬‫ا‬ ‫يمة‬‫ق‬ ‫تزداد‬ َ ‫س‬ ُ‫ه‬‫أن‬ ‫عني‬َ‫ي‬ ‫وذذا‬ a " ‫قبل‬ " :!‫الرضب‬ ‫ملية‬َ‫ع‬ ‫لجراء‬ a = a + 1; b = a * 6; ‫قيمة‬ ‫تكون‬ ‫وبالتايل‬ b ‫النهاية‬ ‫يف‬ = 36 ، ‫ويكون‬ ( a = 6 ) ‫عي‬ُ‫م‬ ‫قيمة‬ ‫لضاقة‬ ‫اإلطتصار‬ ‫من‬ ‫كنوع‬ ً‫ا‬‫أيض‬ ‫ُنا‬‫ن‬‫مك‬ُ‫ي‬.. ،‫رائع‬ ‫ذذا‬ ‫بالناتج‬ ‫واإلحتفاظ‬ ‫اجلمع‬ ‫بإجراء‬ ‫قيقوم‬ ،‫ما‬ ٍ‫تغري‬ُ‫مل‬ ‫نة‬ .‫األكواد‬ ‫يف‬ ً‫ا‬‫كثري‬ ‫استخدامها‬ ‫يتم‬ ،!‫الوقت‬ ‫نفس‬ ‫يف‬ ‫بداطله‬ ‫النهائي‬
  • 24. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [24] Full Expression Shorthand Explanation i = i + 12 i+=12 Add some value to the variable. i = i - 12 i-=12 Subtract some value from the variable. i = i * 12 i*=12 Multiply some value by the variable. i = i / 12 i/=12 Divide some value from the variable. Comparison Operators Condition Symbol Example Less than < (a < b) Greater than > (a > b) Less than or equal to <= (a <= b) Greater than or equal to >= (a >= b) Equal to == (a == b) Not equal to != (a != b) ‫نا‬‫ول‬َ‫ق‬ ‫عند‬ (a = 5) ،‫املثال‬ ‫سبيل‬ ‫عىل‬ ..‫َعني‬‫ن‬ ُ‫َحن‬‫ن‬َ‫ق‬ ‫ع‬ َ ‫ض‬ ‫قيمة‬ 5 ُ‫مل‬‫ا‬ ‫داطل‬ ‫تغري‬ a .. ‫نكتب‬ ‫عندما‬ ‫بينام‬ (a = = 5) ‫قنحن‬ ، ‫تغري‬ُ‫مل‬‫ا‬ ‫لها‬‫م‬ َ ‫حي‬ ‫التي‬ ‫القيمة‬ ‫من‬ ‫ق‬ُ‫ق‬َ‫َح‬‫ت‬‫ال‬ ‫الربنامج‬ ‫من‬ ‫نطلب‬ a ‫كانت‬ ‫لذا‬ ‫ما‬ 5 .‫ال‬ ‫أم‬ ‫ذناك‬ symbol ‫استخدامه‬ ‫مكن‬ُ‫ي‬ ‫آطر‬ ‫ال‬ ‫قبل‬ ‫فرده‬ُ‫م‬‫ب‬ condition ‫ال‬ ‫وذو‬ )!( ‫ويعني‬ " Not " :‫كامييل‬ !(a < b) is equivalent to (a >= b) ‫ال‬ ‫مزي‬ َ‫ر‬‫ب‬ ‫م‬‫ه‬‫تام‬‫خ‬‫ب‬ ‫ونقوم‬ AND ‫وال‬ OR : Logic Symbol Example OR || ((a < b) || (a < c)) AND && ((a < b) && !(a < c))
  • 25. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [25] ُ‫َحن‬‫ن‬ :‫األول‬ ‫املثال‬ ‫يف‬ ‫ُريد‬‫ن‬ ‫نا‬ُ‫ذ‬ َ ‫حت‬ ّ‫أي‬ ‫قيق‬ ‫الثاين‬ ‫أو‬ ‫األول‬ ‫ني‬َ‫ط‬ َ ‫الرش‬ َ‫ن‬‫م‬ .. ‫النتيجه‬ ‫قتكون‬ True . ‫الثا‬ ‫املثال‬ ‫ويف‬ ‫سيكون‬ :‫ين‬ ‫الناتج‬ True ً‫ا‬‫مع‬ ‫الرشطني‬ ‫حتقق‬ ‫لذا‬ ‫ققط‬ .. ‫قيمة‬ ‫تكون‬ ‫أن‬ ‫وذو‬ a ‫قيمة‬ ‫من‬ ‫أصغر‬ b ‫قيمة‬ ‫تقل‬ ‫ال‬ ‫الوقت‬ ‫نفس‬ ‫ويف‬ a ‫عن‬ ‫قيمة‬ c . ‫العالقة‬ ‫يوضح‬ ‫املثال‬ ‫ذذا‬ ً‫ا‬‫أيض‬ : While ((hungry) && !(cat_present)) { Find some food; If(!(food_is_on_a_mousetrap)) Eat the food; } ‫دالة‬ ‫تتذكر‬ ‫ذل‬ While ..‫؟‬ ‫رش‬ ‫بوضع‬ ‫نا‬ُ‫ذ‬ ‫منا‬ُ‫ق‬ ‫حلدوثها‬ ‫طني‬ ‫ومه‬ ، ‫ا‬ ‫آطر‬ ‫رشط‬ ‫قتح‬ ‫تم‬ ‫ثم‬ ،‫اجلبن‬ ‫قطعة‬ ‫عن‬ ‫قسيبحث‬ .‫ط‬‫الق‬ ‫ياب‬‫وغ‬ ،‫الفأر‬ ‫وع‬ ُ‫ج‬ : .‫التهامها‬‫ب‬ ‫م‬ُ‫ق‬ ‫حينها‬ ،‫ئران‬‫الف‬ ‫صيدة‬َ‫م‬‫ب‬ ‫ت‬ َ‫يس‬َ‫ل‬ ‫ذذه‬ ‫بن‬ُ‫جل‬‫ا‬ ‫طعة‬‫ق‬ ‫تكون‬ ‫أن‬ ‫وذو‬ ً‫ا‬‫أيض‬ ‫ُنا‬‫ن‬‫مك‬ُ‫ي‬ ‫اجلوع‬ ‫وث‬ُ‫د‬ ُ‫ح‬ ‫ن‬َ‫ع‬ ‫التعبري‬ ‫بالصيغة‬ While (hungry ==1) ‫القيمة‬ ‫أن‬ ‫يرى‬ ‫الربنامج‬ ‫ألن‬ 0 ‫تعني‬ False ‫والقيمة‬ 1 ‫تعني‬ True . Functions ‫ال‬ ‫لىل‬ ‫اآلن‬ ‫سننتقل‬ ،‫األساسيات‬ ‫ذذه‬ ‫من‬ ‫انتهينا‬ ‫أن‬ ‫بعد‬ Functions .
  • 26. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [26] ‫ال‬ ‫من‬ ‫معينة‬ ‫جمموعة‬ ‫استخدام‬ ‫ربمج‬ُ‫مل‬‫ا‬ ‫يود‬ ً‫ا‬‫أحيان‬ Instructions ‫قمث‬ ،‫ع‬‫وض‬َ‫م‬ ‫من‬ ‫أكثر‬ ‫يف‬ ‫بتنفيذذا‬ ‫ليقوم‬ ً‫ال‬ ‫قرضنا‬ ‫لذا‬ ‫ب‬ ‫اتصال‬ ‫قناة‬ ‫بإنشاء‬ ‫تقوم‬ ‫برجمية‬ ‫أسطر‬ ‫جمموعة‬ ‫بكتابة‬ ‫قمنا‬ ‫أننا‬ Server ‫وبطريق‬ ‫دد‬ ُ ‫حم‬ ‫ة‬ ‫برنامج‬ ‫ُب‬‫ت‬‫نك‬ ‫ُنا‬‫ك‬ ‫قإذا‬ ،‫معينة‬ ‫م‬ ‫قليس‬ ،‫الكود‬ ‫داطل‬ ‫مواضع‬ ‫عدة‬ ‫يف‬ ‫السريقر‬ ‫ِبذا‬ ‫نتصل‬ ‫أن‬ ‫نا‬‫وأرد‬ ،‫طويل‬ ‫مر‬ ‫كل‬ ‫األسطر‬ ‫ذذه‬ ‫تكرار‬ ‫احلكمة‬ ‫ن‬ ‫ة‬ ‫مك‬ُ‫ي‬ ،‫االتصال‬ ‫إلنشاء‬ ‫قيها‬ ‫نحتاج‬ ‫ب‬ ‫أشبه‬ ‫يشء‬ ‫يف‬ ‫وضعهم‬ ‫ننا‬ Sub-Program ‫ى‬ّ‫سم‬ُ‫ي‬ " Function " . ‫أردنا‬ ‫وكلام‬ ‫ال‬ ‫ذذه‬ ‫عنوان‬ ‫بكتابة‬ ‫اكتفينا‬ ‫االتصال‬ ‫لنشاء‬ Function .‫اجلهد‬ ‫لتوقري‬ ‫ققط‬ ‫ل‬ :‫عليه‬ ‫ق‬ِّ‫ب‬َ‫ط‬ُ‫ن‬‫ل‬ ‫واقعي‬ ‫ثال‬‫م‬ ‫ذ‬ ُ ‫نأط‬ ‫حتدد‬ ‫أن‬ ‫وتود‬ ،‫قليل‬ ‫بعد‬ ‫فرتق‬ُ‫م‬ ‫ُصادف‬‫ت‬ ‫ثم‬ ‫الشوارع‬ ‫أحد‬ ‫يف‬ ‫سيارتك‬‫ب‬ ‫َسري‬‫ت‬ ‫أنك‬ ‫ض‬‫نفر‬‫ل‬ ‫اليمني‬ ‫لىل‬ ‫ستتجه‬ ‫كنت‬ ‫لذا‬ ‫ما‬ ‫كتابة‬‫ب‬ ‫نا‬ُ‫ذ‬ ‫سنقوم‬ ،!‫اليسار‬ ‫لىل‬ ‫أو‬ Function ‫عليها‬ ‫ق‬‫ُطل‬‫ن‬ Function Turn ‫التفاصيل‬ ‫ن‬‫م‬ ‫جمموعة‬ َ ‫لك‬ ‫ز‬ِّ‫ُجه‬‫ن‬‫س‬ ‫أننا‬ ‫أي‬ ‫مس‬ ‫بتغيري‬ ‫رغبتك‬ ‫عند‬ ‫اتباعها‬ ‫يتم‬ ‫سوف‬ ‫التي‬ ‫برجمية‬ ‫ميزة‬ ‫سنستخدم‬ ‫ولكننا‬ ،!‫ارك‬ ‫أن‬ ‫يف‬ ‫القرار‬ ‫لك‬ ‫سنرتك‬ ‫أننا‬ ‫وذي‬ ‫االجت‬ ‫دد‬ ُ ‫حت‬ ‫ذاته‬ ‫حد‬ ‫يف‬ ‫االجتاه‬ ‫سنعترب‬ .‫اليسار‬ ‫اىل‬ ‫أم‬ ‫اليمني‬ ‫لىل‬ ‫ستتجه‬ ‫كنت‬ ‫اذا‬ ‫قيام‬ ‫اه‬ Variable ‫يه‬ِّ‫م‬ َ‫ُس‬‫ن‬ َ ‫س‬ variable_direction ‫ال‬ ‫تقوم‬ ‫م‬ُ‫ث‬ ‫أنت‬ ُ‫ه‬ُ‫د‬‫د‬َ ُ ‫حت‬ ‫أن‬ َ ‫ك‬َ‫ل‬ Turn( ) ‫عليه‬ ً‫ء‬‫بنا‬ ‫عملها‬ ‫بإجراء‬ ‫ال‬ ‫ستقوم‬ Function :‫اآليت‬ ‫بتنفيذ‬  ‫اإلشار‬ ‫ضوء‬ ‫تشغيل‬ ‫ة‬ ‫ا‬ ‫حسب‬ ‫اليُسى‬ ‫أو‬ ‫اليمنى‬ ‫لليه‬ ‫االنتقال‬ ‫املراد‬ ‫إلجتاه‬ ( (Activate Blinker .  ‫السيار‬ ‫تبدأ‬ ‫ة‬ ‫بالتباطئ‬ ( (Slow down .  !‫لليها‬ ‫سندطل‬ ‫التي‬ ‫احلارة‬ ‫يف‬ ‫املرور‬ ‫حركة‬ ‫بتفحص‬ ‫سنقوم‬ (Check for oncoming traffic) . ‫ال‬ ‫ذذه‬ ‫عمل‬ ‫وضح‬ُ‫ي‬ ‫ثال‬‫م‬ ‫ذذا‬ function :
  • 27. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [27] Function Turn (variable_direction) { Activate the variable_direction blinker; Slow down; Check for oncoming traffic; while (there is oncoming traffic) { Stop; Watch for oncoming traffic; } Turn the steering wheel to the variable_direction; while (turn is not complete) { if(speed < 5 mph) Accelerate; } Turn the steering wheel back to the original position; Turn off the variable_direction blinker; } ‫األ‬ ‫س‬‫و‬َ‫ق‬‫ال‬ ‫أن‬ ‫ظ‬‫الح‬ )‫(اخلارجي‬ ‫ول‬ ‫بينهام‬ ‫ت‬َ‫مت‬ ‫األحداث‬ ‫ومجيع‬ ،‫النهاية‬ ‫يف‬ ‫وغلقه‬ ‫البداية‬ ‫يف‬ ‫تحه‬َ‫ق‬ ‫َم‬‫ت‬ .. ‫دالة‬ ‫َخدمنا‬‫ت‬‫اس‬ While ‫احل‬ ‫لىل‬ ‫طول‬ُ‫الد‬ ‫م‬َ‫د‬َ‫ع‬ ‫ط‬ َ ‫رش‬ ‫ع‬ َ ‫َض‬‫ن‬‫ل‬ ‫ة‬َ‫مح‬َ‫د‬‫ز‬ُ‫م‬ ‫ا‬‫َوهن‬‫ك‬ ‫حالة‬ ‫يف‬ ‫ارة‬ .. ،‫كذلك‬ ‫ُن‬‫ك‬َ‫ت‬ َ‫مل‬ ‫قإن‬ ‫ال‬ ‫ل‬‫نتق‬َ‫ي‬ َ ‫س‬َ‫ق‬ pointer ‫ال‬ ‫لىل‬ Instruction ‫ال‬ ُ‫ه‬‫َرك‬‫ت‬ ‫(تم‬ ‫راد‬ُ‫مل‬‫ا‬ ‫اإلجتاه‬ ‫لىل‬ ‫ود‬‫ق‬‫امل‬ ‫دوران‬ ‫وذي‬ ‫تالية‬ ‫السيار‬ ‫أن‬ ‫وذو‬ ‫آطر‬ ‫ط‬ َ ‫رش‬ ‫عنا‬ َ ‫ض‬َ‫و‬ ‫م‬ُ‫ث‬ ،)‫تغري‬ُ‫كم‬ ‫ة‬ ‫ِسع‬ ‫عىل‬ ‫تكون‬ ‫أن‬ ‫د‬ُ‫ب‬‫ال‬ ‫نفسها‬ ‫ة‬ ‫واالندما‬ ‫بالدوران‬ ‫للقيام‬ ‫كاقية‬ ‫ج‬ ً‫ا‬‫مع‬ ‫دالتني‬ ‫قاستخدمنا‬ ‫باحلارة‬ .. Whlie ‫دالة‬ ‫وداطلها‬ if .. ‫الس‬ ‫د‬َ‫قو‬‫م‬ ‫ُعيد‬‫ن‬‫ل‬ ‫م‬ُ‫نه‬‫م‬ ‫جنا‬ َ‫ر‬ َ ‫ط‬ ‫م‬ُ‫ث‬ ‫يار‬ ‫ة‬ ‫ئ‬‫ُطف‬‫ن‬‫و‬ ‫الطبيعي‬ ‫ه‬‫ضع‬َ‫و‬‫ل‬ ‫اإلشار‬ ‫صباح‬‫م‬ ‫ة‬ ‫ال‬ ‫من‬ ‫روج‬ُ‫خل‬‫ا‬ ‫م‬ُ‫ث‬ ، Function .ً‫ا‬‫أطري‬
  • 28. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [28] ‫ال‬ ‫غة‬ُ‫ل‬ ‫يف‬ C ‫لل‬ ‫استدعاء‬ ‫ث‬ُ‫حيد‬ Function َ‫م‬‫قا‬ ‫ن‬َ‫مل‬ ‫أو‬ ‫نا‬َ‫ل‬ ‫ما‬ ٍ‫قيمة‬ ‫أو‬ ‫ج‬‫نات‬ ‫إرجاع‬‫ب‬ ‫تقوم‬ ‫أن‬ ‫ا‬ّ‫م‬‫ل‬ ،‫ها‬‫ل‬َ‫م‬َ‫ع‬ ‫أداء‬ َ‫عد‬َ‫ب‬‫و‬ ، ‫ها‬‫باستدعائ‬ ( (functions can return a value to a caller ‫يشء‬ ‫لنا‬ ‫ع‬‫ُرج‬‫ت‬ ‫ال‬ ‫بام‬ُ‫ور‬ ! ، ‫و‬ ‫ال‬ ‫عىل‬ ‫ق‬‫ُطل‬‫ن‬ function ‫التي‬ ‫بال‬ ‫عملها‬ ‫انتهاء‬ ‫بعد‬ ‫قيمة‬ ‫لنا‬ ‫ع‬‫ُرج‬‫ت‬ ‫ال‬ .void( ) ‫ال‬ ‫لرجاع‬ ‫حالة‬ ‫يف‬ ‫أما‬ function ‫اإلشارة‬‫ب‬ ‫َقوم‬‫ن‬ ‫ها‬‫ل‬َ‫م‬َ‫ع‬ ‫انتهاء‬ َ‫عد‬َ‫ب‬ ‫قيمة‬ ‫ال‬ ‫قيه‬ ‫ع‬ َ ‫تض‬ َ ‫س‬ ‫الذي‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫لىل‬ function ‫ال‬ ‫ذذا‬ return value ، ‫ال‬ ‫توضيح‬ َ‫ع‬َ‫م‬ Data type ..‫ه‬‫ب‬ ‫اخلاص‬ ‫ذلك؟‬ ‫كيف‬ ‫س‬ ..ً‫ا‬‫حسن‬ ‫نرشح‬ ‫ذذا‬ ‫ب‬ ‫ثال‬‫م‬ : ‫ماييل‬ function ‫اسمها‬ factorial( ) ِّ ‫تغري‬ُ‫مل‬‫ا‬ ‫عىل‬ ‫رياضية‬ ‫عملية‬ ‫إلجراء‬ ‫باستدعائها‬ ‫نقوم‬ a ، ‫لنا‬ ‫ع‬‫ج‬ ُ ‫سرت‬ ‫انتهائها‬ ‫وبعد‬ ‫َغري‬‫ت‬ُ‫مل‬‫ا‬ ‫يف‬ ‫بوضعها‬ ‫تقوم‬ ‫قيمة‬ b . int a=5, b; b = factorial(a); ‫ب‬ ‫الكود‬ ‫ذذا‬ ‫يف‬ ‫َقوم‬‫ن‬ ‫بنوع‬ ‫تغريين‬ُ‫م‬ ‫َعريف‬‫ت‬ int ‫املتغري‬ ‫أطربنا‬ ‫م‬ُ‫ث‬ ، b ‫قيمة‬ ‫سيحوي‬ ُ‫ه‬‫أن‬ ، ‫بالطبع‬ ‫ستكون‬ int ، ‫أن‬ ‫يعني‬ ‫وذذا‬ ‫ال‬ return value ‫ال‬ ‫من‬ ‫القادم‬ factorial( ) ‫نوعه‬ ‫سيكون‬ integer . ‫تغري‬ُ‫مل‬‫ا‬ ‫قيمة‬ ‫ووضعنا‬ a " ‫بخمسة‬ " ، ‫سيكون‬ (a) ‫ال‬ ‫ذو‬ ‫نا‬ُ‫ذ‬ Argument ‫ال‬ ‫ذذه‬ ‫لىل‬ ُ‫ه‬‫لمرار‬ ‫م‬‫ت‬َ‫ي‬ ‫الذي‬ function ، ‫الرقم‬ ‫ل‬‫ُدط‬‫ن‬‫س‬ ‫أننا‬ ‫بمعنى‬ 5 ‫ية‬‫ساب‬‫احل‬ ‫لية‬َ‫م‬َ‫ع‬‫ال‬ ‫إلجراء‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫يف‬ ‫ج‬‫النات‬ ‫ع‬ َ ‫َض‬‫ن‬ ‫م‬ُ‫ث‬ ‫ليه‬َ‫ع‬ b . ‫ال‬ َ‫ي‬‫ذاذ‬ factorial( ) :‫ها‬‫باستدعائ‬ ‫منا‬ُ‫ق‬ ‫التي‬
  • 29. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [29] int factorial (int x) { int i; for (i=1; i < x; i++) x *= i; return x; } ‫قيمة‬ ‫أن‬ ‫ظ‬‫الح‬ x ‫لل‬ ً‫ا‬‫تبع‬ ‫تركها‬ ‫َم‬‫ت‬ ‫حالتنا‬ ‫يف‬ ‫وذو‬ ‫ل‬ َ ‫دط‬ُ‫مل‬‫ا‬ ‫رقم‬ 5 ‫ال‬ ‫ديد‬ َ ‫حت‬ ‫َم‬‫ت‬‫و‬ ، data type ‫أنه‬ integer . ‫النهاية‬ ‫يف‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫سيحوي‬ b ‫ذي‬ ‫قيمة‬ ( 5*4*3*2*1 = 120 .) ‫لية‬َ‫م‬َ‫ع‬ ‫م‬‫َت‬‫ت‬ ‫كيف‬ ‫بالتفصيل‬ ‫لك‬ ‫سأرشح‬ " ‫ال‬ ‫استدعاء‬ function " ‫يف‬ ‫الثالث‬ ‫الباب‬ .‫اهلل‬ ‫بإذن‬ ‫ال‬ ‫أن‬ ‫ر‬‫ك‬َ‫َذ‬‫ت‬ Function ‫ي‬‫ق‬ ‫نا‬َ‫ل‬ ‫ع‬‫ُرج‬‫ت‬ ‫ال‬ ‫التي‬ ‫م‬ ‫ة‬ ‫عينة‬ُ‫م‬ " return value " ‫بال‬ ‫ققط‬ ‫ما‬ ٍ‫وظيفة‬‫ب‬ ‫تقوم‬‫ل‬ ‫َستدعيها‬‫ن‬ ‫التي‬ َ‫ي‬‫وذ‬ ، " Void Function " . ‫ال‬ ‫استدعينا‬ ‫أننا‬ ‫الحظ‬ ،‫املايض‬ ‫السيارة‬ ‫يادة‬‫ق‬‫ب‬ ‫اخلاص‬ ‫ثال‬‫للم‬ ‫ئنا‬‫ج‬ ‫لذا‬ Function( ) _ Turn ‫لتقوم‬ ‫ظار‬‫بانت‬ ‫لسنا‬ ‫قنحن‬ ،‫ققط‬ ‫للحارة‬ ‫الدطول‬ ‫بعملية‬ return value ،‫نها‬‫م‬ ‫ألننا‬ ‫ال‬ ‫من‬ ‫جمموعة‬ ‫تنفيذ‬ ‫د‬َ‫َو‬‫ن‬ ‫ققط‬ instructions ‫ر‬َ‫م‬ ‫كل‬ ‫تهم‬َ‫ب‬‫تا‬‫لك‬ ‫االضطرار‬ ‫بدون‬ ‫ة‬ .!‫حارة‬ ‫ي‬‫أل‬ ‫الدطول‬ ‫قبل‬ ‫ثال‬‫امل‬ ‫ذا‬َ‫ِب‬ ‫م‬‫َخت‬‫ن‬ َ ‫س‬ ‫ققرة‬ ‫ال‬ functions : void turn (variable_direction, target_street_name) { Look for a street sign; current_intersection_name = read street sign name; while (current_intersection_name != target_street_name) { Look for another street sign; current_intersection_name = read street sign name; } Activate the variable_direction blinker; Slow down;
  • 30. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [30] Check for oncoming traffic; while (there is oncoming traffic) { Stop; Watch for oncoming traffic; } Turn the steering wheel to the variable_direction; while(turn is not complete) { if(speed < 5 mph) Accelerate; } Turn the steering wheel right back to the original position; Turn off the variable_direction blinker; } ‫ال‬ ‫تكون‬ ‫ولكي‬ Function ‫واقعية‬ ‫أكثر‬ .. ‫لضاقة‬ ‫َم‬‫ت‬ “Argument” ِّ ‫تغري‬ُ‫م‬ ‫أو‬ " target_street_name " ‫اسم‬ ‫وذو‬ ‫ال‬ ،‫لليه‬ ‫ماج‬‫اإلند‬ ‫اد‬ َ‫ر‬ُ‫مل‬‫ا‬ ‫ع‬‫شار‬ ‫ال‬ ‫ب‬‫جان‬‫ب‬ Argument ‫األول‬ " variable_direction ." ‫ه‬‫ذ‬َ‫ذ‬ ‫ن‬‫م‬ ‫اإلستفادة‬ ‫ق‬ِّ‫ق‬‫ُح‬‫ن‬‫س‬ ‫واآلن‬ ‫ال‬ function ‫للسيار‬ ‫ج‬َ‫م‬‫رنا‬َ‫ب‬ ‫ُب‬‫ت‬‫َك‬‫ن‬ ‫بأن‬ ‫ة‬ ‫ال‬ ‫َدعي‬‫ت‬‫َس‬‫ن‬ ‫م‬ُ‫ث‬ function .‫ب‬‫ناس‬ُ‫مل‬‫ا‬ ‫قت‬َ‫الو‬ ‫يف‬ Begin going East on Main Street; if (street is blocked) { Turn (right, 15th Street); Turn (left, Pine Street); Turn (right, 16th Street); } else Turn (right, 16th Street); Turn (left, Destination Road); for (i=0; i<5; i++)
  • 31. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [31] Drive straight for 1 mile; Stop at 740 Destination Road; ‫باستدعاء‬ ‫منا‬ُ‫ق‬ َ‫أين‬ َ ‫ظت‬ َ‫الح‬ ‫ذل‬ Turn( ) ‫؟‬ . ‫ال‬ ‫بإمرار‬ ‫أيضا‬ ‫منا‬ُ‫ق‬ Arguments ‫ال‬ ‫مكان‬ ‫نهم‬‫م‬ ‫ُل‬‫ك‬ ‫ضع‬َ‫و‬ ‫تم‬َ‫ي‬‫ل‬ ‫لليها‬ variable ،‫املطلوب‬ ‫وتنفيذ‬ ‫له‬ ‫ر‬‫ناظ‬ُ‫مل‬‫ا‬ ‫ننتظر‬ ‫ولن‬ return value ‫ألهنا‬ ‫نها‬‫م‬ “void function” . .‫ديد‬ َ‫ج‬ ‫ن‬‫م‬ ‫ة‬َ َ‫جم‬ َ ‫الرب‬ ‫لىل‬ ‫َعود‬‫ن‬ ‫م‬ُ‫ث‬ ً‫ال‬‫قلي‬ ‫تلف‬ ُ ‫ُم‬ ‫موضوع‬ ‫لىل‬ ‫اآلن‬ ‫سننتقل‬ . ‫ال‬ ‫عض‬َ‫ب‬ ‫عىل‬ ‫سنتعرف‬ Registers ‫التي‬ ‫ال‬ ‫مها‬‫ستخد‬َ‫ي‬ CPU . ‫الربامج‬ ‫مع‬ ‫له‬ُ‫م‬‫تعا‬ ‫أثناء‬ x86 Processor ‫بال‬ ‫تعلقة‬ُ‫مل‬‫ا‬ ‫األمور‬ ‫بعض‬ ‫ُشاذد‬‫ن‬‫ل‬ ‫قصري‬ ‫قاصل‬ ‫نأطذ‬ َ ‫س‬ x86 processor َ‫ن‬‫ل‬ ‫عىل‬ ‫تعرف‬ ‫َي‬‫ك‬ ‫فية‬ ‫ت‬ ‫ال‬ ‫ل‬َ‫م‬‫عا‬ CPU ‫ال‬ ‫مع‬ Compiled Program . . ‫ال‬ ‫ك‬‫َل‬‫ت‬‫م‬َ‫ي‬ Processor ‫جمموع‬ ‫ة‬ ‫ال‬ ‫من‬ Registers .. ‫قهو‬ ‫ك‬ ‫مهم‬‫َخد‬‫ت‬‫س‬َ‫ي‬ internal variables ُ‫ي‬ ‫ختلف‬ُ‫مل‬‫ا‬ ‫هامه‬َ‫م‬ ‫إلمتام‬ ‫دقيق‬ ‫بشكل‬ ‫فهم‬ِّ‫ظ‬‫و‬ ‫ة‬ . ‫بال‬ ‫نعني‬ ‫ماذا‬ ‫ولكن‬ ،‫نعم‬ Register ‫؟‬.. ‫ال‬ ‫داطل‬ ‫صغرية‬ ‫ختزين‬ ‫مساحة‬ ‫لهنا‬ CPU ‫ال‬ ‫مع‬ ‫والتعامل‬ ‫للوصول‬ ‫يستخدمها‬ ‫طريقة‬ ‫أِسع‬ ‫ُعد‬‫ت‬‫و‬ Data . A small amount of storage on the CPU and is the fastest method for a CPU to access data.
  • 32. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [32] ‫ال‬ ‫داطل‬ ‫الوقوف‬ ‫يمكنك‬ ‫كام‬ ،‫التفاصيل‬ ‫من‬ ‫الكثري‬ ‫رؤية‬ ‫ُك‬‫ن‬‫مك‬ُ‫ي‬ Compiled Program ‫ال‬ ‫راقبة‬ُ‫م‬‫و‬ memory ‫خصص‬ُ‫مل‬‫ا‬ ‫ة‬ ‫ال‬ ‫أوضاع‬ ‫َيك‬‫ن‬‫ي‬َ‫ع‬‫ب‬ ‫وترى‬ ‫لربناجمك‬ Registers ‫ال‬ ‫وظيفة‬ ‫لهنا‬ ،‫الربنامج‬ ‫عمل‬ ‫أثناء‬ " Debugger " . ‫ال‬ ‫ذذا‬ ‫ما‬ ..Debugger ‫؟‬ ‫امليكرسكو‬ ‫الكيميائي‬ ‫م‬‫َخد‬‫ت‬‫س‬َ‫ي‬ ‫ثلام‬‫م‬ ‫سيتفحص‬ ُ‫ه‬ّ‫ن‬‫ك‬َ‫ل‬ ،ً‫ا‬‫أيض‬ ‫امليكرسكوب‬ ‫باستخدام‬ ‫ج‬‫ربم‬ُ‫مل‬‫ا‬ ‫قوم‬َ‫ي‬ ،‫العينات‬ ‫لفحص‬ ‫ب‬ ُ‫ي‬ ‫َام‬‫ك‬ ،‫اجلهاز‬ ‫عىل‬ ُ‫ه‬‫تأثري‬ ‫راقبة‬ُ‫م‬‫و‬ ‫ه‬ُ‫ُريد‬‫ت‬ ‫ي‬ َ ‫رجم‬َ‫ب‬ ‫سطر‬ ‫أي‬ ‫عىل‬ ‫الوقوف‬ َ ‫ُك‬‫ن‬‫مك‬ُ‫ي‬ ،‫برناجمه‬ ‫به‬ ‫َغريا‬‫ت‬ُ‫مل‬‫وا‬ ‫م‬َ‫ي‬‫الق‬ ‫تغيري‬ ‫ُك‬‫ن‬‫مك‬ ‫ت‬ .. ‫األمور‬ ‫من‬ ‫وغريذا‬ ‫الشيق‬ ‫ة‬ .! ‫سنقوم‬ ‫الثالث‬ ‫الباب‬ ‫يف‬ ‫ا‬ ‫بإذن‬ ‫ال‬ ‫باستخدام‬ ‫هلل‬ “GDB Debugger” ‫ال‬ ‫وقحص‬ ‫الربامج‬ ‫أحد‬ ‫مع‬ Registers َ ‫ص‬‫ص‬َ‫خ‬ُ‫مل‬‫ا‬ ‫ة‬ ‫الربجمي‬ ‫األططاء‬ ‫بعض‬ ‫واستخراج‬ ُ‫ه‬‫ل‬ ‫ة‬ .!‫الربنامج‬ ‫اطرتاق‬ ‫يف‬ ‫واستغالهلا‬ ‫سنكتفي‬ ‫َام‬‫ن‬‫بي‬ ً‫ا‬‫حالي‬ ‫بعض‬ ‫برشح‬ ‫بال‬ ‫تعلقة‬ُ‫مل‬‫ا‬ ‫األساسيات‬ Registers . ‫باستخ‬ ‫تحه‬َ‫ق‬ ‫َم‬‫ت‬ ‫ج‬َ‫م‬‫نا‬ َ ‫رب‬‫ل‬ ‫ثال‬‫م‬ ‫وضع‬َ‫ب‬ ‫َقوم‬‫ن‬ َ ‫س‬ ‫د‬ ‫ام‬ GDB debugger ‫ل‬َ‫م‬َ‫ع‬‫ب‬ ‫ونقوم‬ Breakpoint ‫ال‬ ‫عند‬ main( ) ‫ال‬ ‫ضع‬َ‫و‬ ‫د‬‫ُشاذ‬‫ن‬‫ل‬ Registers .‫الربنامج‬ ‫َشغيل‬‫ت‬ ‫أثناء‬ ‫ال‬ ‫أن‬ ‫الحظ‬ main( ) ‫ن‬‫ولك‬ ..‫ج‬َ‫م‬‫نا‬ َ ‫الرب‬ ‫يف‬ ‫رائته‬‫ق‬ ‫م‬‫ت‬َ‫ي‬ ‫ما‬ ‫أول‬ ‫ذي‬ !ً‫ال‬‫ه‬َ‫م‬ ‫ال‬ ‫ذذا‬ ‫ن‬‫م‬ ‫نستفيد‬ ‫ماذا‬ Breakpoint ‫؟‬.. “it gives you the ability to halt a process that is being debugged” ‫ل‬َ‫م‬َ‫ع‬‫ب‬ ‫نقوم‬ ‫اذا‬‫ومل‬ halt ‫لل‬ process ‫؟‬.. By halting a process, you are able to inspect variables, stack arguments, and memory locations.
  • 33. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [33] reader@hacking:~/booksrc $ gdb -q ./a.out Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". (gdb) break main Breakpoint 1 at 0x804837a (gdb) run Starting program: /home/reader/booksrc/a.out Breakpoint 1, 0x0804837a in main () (gdb) info registers eax 0xbffff894 -1073743724 ecx 0x48e0fe81 1222704769 edx 0x1 1 ebx 0xb7fd6ff4 -1208127500 esp 0xbffff800 0xbffff800 ebp 0xbffff808 0xbffff808 esi 0xb8000ce0 -1207956256 edi 0x0 0 eip 0x804837a 0x804837a <main+6> eflags 0x286 [ PF SF IF ] cs 0x73 115 ss 0x7b 123 ds 0x7b 123 es 0x7b 123 fs 0x0 0 gs 0x33 51 ‫أربعة‬ ‫أول‬ ‫الحظ‬ Registers :‫الرتتيب‬ ‫عىل‬ ‫م‬ُ‫ذ‬ ،‫ج‬َ‫م‬‫نا‬ َ ‫الرب‬ ‫ل‬َ‫م‬َ‫ع‬ ‫داية‬‫ب‬ ‫ند‬‫ع‬ ‫ظهروا‬ (EAX, ECX, EDX, and EBX) ‫ليهم‬َ‫ع‬ ‫ق‬َ‫ل‬‫ط‬ُ‫ي‬ General Registers ‫ال‬ ‫م‬ُ‫مه‬‫َخد‬‫ت‬‫س‬َ‫ي‬ CPU ‫عتربوا‬ُ‫ي‬ ‫أهنم‬ ‫أمهها‬ ،‫ة‬ّ‫د‬‫ع‬ ‫مور‬ُ‫أ‬ ‫يف‬ " temporary variables " ‫ال‬ ‫م‬ُ‫مه‬‫َخد‬‫ت‬‫س‬َ‫ي‬ CPU ‫لل‬ ‫تنفيذه‬ ‫أثناء‬ Instructions .
  • 34. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [34] ‫ماييل‬ :‫م‬ُ‫نه‬‫م‬ ٍ‫ُل‬‫ك‬‫ل‬ َ ‫َرص‬‫ت‬ ُ ‫ُم‬ ‫توضيح‬ EAX ً‫ا‬‫أيض‬ ‫ليها‬َ‫ع‬ ‫ق‬َ‫ل‬‫ط‬ُ‫ي‬ Accumulator register ‫ساب‬‫احل‬ ‫ليات‬َ‫م‬َ‫ع‬‫ال‬ ‫عض‬َ‫ب‬ ‫بإجراء‬ ‫تقوم‬ ‫املقارن‬ ‫و‬ ‫والطرح‬ ‫اجلمع‬ ‫مثل‬ ‫ية‬ ‫ة‬ ، ‫ال‬ ‫ختزين‬ ‫مكان‬ ‫د‬َ‫ع‬ُ‫ت‬ ‫أهنا‬ ‫زذا‬ِّ‫ي‬َ‫م‬ُ‫ي‬ ‫ما‬ ‫م‬َ‫وأذ‬ ،‫ة‬َ‫سم‬‫والق‬ ‫الرضب‬ ً‫ا‬‫وأيض‬ return values . ‫ذذا‬ ‫ر‬‫تتذك‬ ‫ذل‬ ‫ال‬ return value ‫؟‬.. ‫ال‬ ‫ققرة‬ ‫يف‬ ُ‫ه‬‫عن‬ ‫حتدثنا‬ ‫لقد‬ “Functions” ، ً‫ا‬‫لذ‬ .. ‫مكن‬ُ‫ي‬ ‫نا‬ ‫التأكد‬ ‫أداء‬ ‫اكتامل‬ ‫من‬ function ‫ها‬‫ين‬َ‫ع‬‫ب‬ ‫َوى‬‫ت‬ ُ ‫حم‬ ‫حص‬َ‫ق‬ ‫ريق‬َ‫ط‬ ‫ن‬َ‫ع‬ ‫ال‬ EAX ، ُ‫ن‬‫مك‬ُ‫ي‬ ‫َام‬‫ك‬ ‫نا‬ ‫هل‬ ‫علية‬‫الف‬ ‫يمة‬‫الق‬ ‫ة‬َ‫ق‬‫عر‬َ‫م‬ ‫ال‬ ‫ذا‬ return value . ECX ‫عليها‬ ‫ق‬‫ُطل‬‫ن‬ “Count register or Counter” ، ‫ال‬ ‫يف‬ ‫م‬َ‫َخد‬‫ت‬‫ُس‬‫ت‬ ‫ألهنا‬ Looping operations . EDX ‫عليها‬ ‫ق‬َ‫ل‬‫ط‬ُ‫ي‬ ‫ذذه‬ Data register ‫لل‬ ‫امتداد‬ ‫د‬َ‫ع‬ُ‫ت‬‫و‬ ، EAX ‫ال‬ ‫من‬ ‫أكرب‬ ‫كمية‬ ‫ختزين‬ ‫حالة‬ ‫يف‬ ‫تدعمها‬ ‫أهنا‬ ‫أي‬ data ‫أثناء‬ .!ً‫ا‬‫تعقيد‬ ‫األكثر‬ ‫احلسابات‬ ‫لجراء‬ EBX ..ً‫ا‬‫وأطري‬ Base register ‫ك‬َ‫ل‬ ،‫ها‬‫ين‬َ‫ع‬‫ب‬ ‫ظيفة‬َ‫و‬‫ل‬ ‫م‬‫م‬ َ ‫ُص‬‫ت‬ ‫مل‬ ، ‫لضاقي‬ ‫ساحة‬‫َم‬‫ك‬ ‫م‬َ‫َخد‬‫ت‬‫ُس‬‫ت‬ ‫نها‬ ‫ة‬ .‫للتخزين‬
  • 35. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [35] ‫ال‬ ‫من‬ ‫جديدين‬ ‫نوعني‬ ‫لنا‬ ‫يظهر‬ ‫ثم‬ Registers ‫وذم‬ : ESP and EBP Stack Pointer ‫و‬ Base Pointer ‫ال‬ ‫عملية‬ ‫إلدارة‬ ‫استخدامهم‬ ‫يتم‬ function calls ‫ال‬ ‫مع‬ ‫ل‬ُ‫م‬‫والتعا‬ Stack . ‫يف‬ ‫التفصيل‬ ‫من‬ ‫بمزيد‬ ‫هلم‬ ‫سنتعرض‬ .‫الثالث‬ ‫الباب‬ ‫ال‬ ‫ماذذا‬ ‫ن‬‫ولك‬ Stack ‫؟‬ ‫أهنا‬ ‫يبدو‬ structure ‫باالحتفاظ‬ ‫يقوم‬ ‫التفصيلي‬ ‫بالبيانات‬ ‫ة‬ ‫بال‬ ‫اخلاصة‬ function calls ، ‫ال‬ ‫مبدأ‬ ‫وتعتمد‬ (FILO) ‫ويعني‬ “First In Last Out” ‫ب‬ ‫لليها‬ ‫البيانات‬ ‫لرسال‬ ‫عملية‬ ‫عىل‬ ‫ق‬‫ُطل‬‫ن‬ ،‫بالشكل‬ ‫يظهر‬ ‫كام‬ “Push” ‫ب‬ ‫منها‬ ‫البيانات‬ ‫استخراج‬ ‫وعملية‬ “Pop” . ‫عملية‬ ‫لك‬ ‫ح‬ ِّ ‫سأوض‬ function call ‫ال‬ ‫لىل‬ ‫يانات‬َ‫ب‬‫ال‬ ‫لرسال‬ ‫م‬‫ت‬َ‫ي‬ َ ‫َيف‬‫ك‬ ‫د‬‫ُشاذ‬‫ت‬‫ل‬ ‫باألسفل‬ Stack . ..‫عام‬ ‫وبوجه‬ ‫ال‬ ‫تقوم‬ Stack ‫بثالث‬ ‫ة‬ :‫ذي‬ ‫رئيسية‬ ‫أمور‬ Stores information about how a function is called, the parameters it takes, and how it should return after it is finished executing. ‫لجراء‬ ‫لية‬َ‫م‬َ‫ع‬‫ل‬ ‫ثال‬‫م‬ ‫ذذا‬ function call ، ‫ال‬ ‫ن‬‫م‬ ً‫ال‬ُ‫ك‬ ‫دور‬ ً‫ا‬‫ع‬َ‫م‬ ‫َرى‬‫ن‬‫س‬ (ESP and EBP) ، ‫م‬َ‫َخد‬‫ت‬‫س‬ُ‫مل‬‫ا‬ ‫الصيغة‬ ‫ذي‬ ‫ذذه‬ ‫ة‬ ‫لعمل‬ call ‫لل‬ function ‫سام‬ُ‫مل‬‫ا‬ ‫ة‬ my_pencils( ) ‫ال‬ ‫بلغة‬ C : int my_pencils (color_one, color_two, color_three);
  • 36. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [36] ‫ال‬ ‫عملية‬ ‫م‬‫َت‬‫ت‬ ‫وذكذا‬ Call ‫بال‬ x86 Assembly : push color_three push color_two push color_one call my_pencils ‫ال‬ ‫شكل‬ ‫ذو‬ ‫وذذا‬ Stack frame ‫ال‬ ‫أن‬ ‫(الحظ‬ ، Argument ‫الثالث‬ ‫ال‬ ‫أسفل‬ ‫يف‬ ً‫ال‬‫أو‬ ‫وضعه‬ ‫تم‬ Stack ،!) ‫كام‬ ً‫ام‬‫دائ‬ ‫أنه‬ ‫ال‬ ‫ُشري‬‫ت‬ ‫ما‬ ESP ‫ال‬ ‫لىل‬ (Top of Stack) . ‫ال‬ ‫ذذه‬ ‫لىل‬ ‫سطر‬ ‫بإضاقة‬ ‫سنقوم‬ ‫واآلن‬ function ‫ال‬ ‫يف‬ ‫ث‬ُ‫حد‬َ‫ي‬ َ ‫س‬ ‫ما‬ ‫د‬‫ُشاذ‬‫ن‬ ‫كي‬ Stack . int my_pencils (color_one, color_two, color_3); { [ 10 ] char uni_pen_color_one }
  • 37. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [37] ‫ال‬ ‫طانة‬ ‫قوق‬ ‫أطرى‬ ‫طانة‬ ‫ظهور‬ ‫ُالحظ‬‫ن‬‫س‬ Return address ‫ال‬ ‫يف‬ stack ، ‫تغري‬ُ‫مل‬‫ا‬ ‫ِبا‬ ‫سيكون‬ (uni_pen_color_one) ‫ال‬ ‫وسينتقل‬ Stack pointer ‫لال‬ ‫شار‬ ‫ة‬ ‫لليها‬ ، ‫ال‬ ‫لىل‬ ً‫ا‬‫دوم‬ ‫شري‬ُ‫ي‬ ُ‫ه‬‫ن‬‫أل‬ " Top of Stack " . ‫س‬ ً‫ا‬‫حالي‬ ‫القدر‬ ‫ِبذا‬ ‫نكتفي‬ . ‫ل‬ ‫ال‬ ‫لىل‬ ‫نعود‬ Registers :‫اآلطرى‬ ESI and EDI  (ESI) Source Index, holds the location of the input data stream.  (EDI) Destination Index, points to the location where the result of a data operation is stored. :‫ُّر‬‫ك‬‫َذ‬‫ت‬‫ال‬ ‫لية‬َ‫م‬َ‫ع‬ ‫َسهيل‬‫ت‬‫ول‬  ESI is used when we need to read data from something.  EDI is used when we want to write data in somewhere. EIP ‫ليها‬َ‫ع‬ ‫ق‬َ‫ل‬‫ط‬ُ‫ي‬ Instruction Pointer ‫ال‬ ‫لىل‬ ‫ُشري‬‫ت‬ ‫ألهنا‬ Instruction ‫يقوم‬ ‫التي‬ ‫احلالية‬ ‫ال‬ CPU ‫لها‬ُّ‫ي‬ َ ‫خت‬ َ ‫ُك‬‫ن‬‫مك‬ُ‫ي‬ .‫ها‬‫رائت‬‫ق‬‫ب‬ ‫قرائت‬ ‫أثناء‬ ‫أذا‬ َ‫قر‬َ‫ي‬ ‫ة‬َ‫م‬‫َل‬‫ك‬ ‫ُل‬‫ك‬ ‫عىل‬ ‫لصبعه‬ ‫ع‬ َ ‫ض‬َ‫ي‬ ‫خص‬ َ ‫ش‬‫ب‬ ‫ه‬ ‫ال‬ ‫كذلك‬ ،‫ما‬ ٍ‫ع‬‫موضو‬ ‫أو‬ ‫جلة‬‫مل‬ processor ‫لصبعه‬ ‫يستخدم‬ ‫ال‬ ‫وذو‬ ‫اخلاص‬ EIP ‫كل‬ ‫ليقرأ‬ Instruction ‫ري‬ َ ‫جي‬ .ُ‫ه‬‫فيذ‬‫َن‬‫ت‬ ‫ال‬ ‫من‬ ‫ذذه‬ registers ‫عمل‬ ‫أثناء‬ ‫اذتاممك‬ ‫ستوليها‬ ‫التي‬ ‫ال‬ ‫ية‬ Debugging . ُ‫ذ‬ ‫لىل‬ ..‫الفاصل‬ ‫ذذا‬ ‫أهنينا‬ ‫قد‬ ‫نكون‬ ‫نا‬ ‫َعود‬‫ن‬‫ل‬ ‫ذيا‬ ‫جديد‬ ‫من‬ ..‫ية‬ َ ‫جم‬ َ ‫الرب‬ ‫األساسيات‬ ‫ل‬‫َستكم‬‫ن‬‫ل‬
  • 38. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [38] Arrays ‫عددذا‬ ‫العنارص‬ ‫من‬ ‫جمموعة‬ ‫لهنا‬ n ‫ذات‬ data type ‫حمدد‬ ‫ة‬ ‫ال‬ ‫داطل‬ ‫تتموضع‬ Memory . “Is a list of n elements of a specific data type” ، َ‫ل‬‫ط‬ُ‫ي‬ ً‫ا‬‫أيض‬ ‫عليها‬ ‫ق‬ “Buffers” . ‫ماييل‬ ‫مثال‬ ‫يوضح‬ ‫لنا‬ ‫ال‬ character array : #include <stdio.h> int main() { char str_a[20]; str_a[0] = 'H'; str_a[1] = 'e'; str_a[2] = 'l'; str_a[3] = 'l'; str_a[4] = 'o'; str_a[5] = ','; str_a[6] = ' '; str_a[7] = 'w'; str_a[8] = 'o'; str_a[9] = 'r'; str_a[10] = 'l'; str_a[11] = 'd'; str_a[12] = '!'; str_a[13] = 'n'; str_a[14] = 0; printf (str_a); } ‫عمل‬ ‫عند‬ ‫الربنامج‬ ‫شكل‬ ‫وذذا‬ compile ‫باستخدام‬ ‫له‬ GCC :
  • 39. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [39] reader@hacking:~/booksrc $ gcc -o char_array char_array.c reader@hacking:~/booksrc $ ./char_array Hello, world! reader@hacking:~/booksrc $ ..!‫جيد‬ ‫بسيط‬ ‫مالحظة‬ ‫لدينا‬ ‫ة‬ ‫بحجز‬ ‫منا‬ُ‫ق‬ ‫لقد‬ .. buffer ‫ل‬ ‫تتسع‬ ‫مساحته‬ 20 ‫ختصيص‬ ‫تم‬ ‫أنه‬ ‫أي‬ ،‫حرف‬ 20 bytes ‫ننا‬‫لك‬ .‫لنا‬ ‫ققط‬ ‫مألنا‬ ( 12 bytes ) ،!‫منهم‬ ً‫ا‬‫أيض‬ ‫كان‬ ‫حرف‬ ‫آطر‬ ( 0 ) ‫عليه‬ ‫طلق‬ُ‫ي‬.. “null byte” ‫ال‬ ‫إلطبار‬ ‫م‬َ‫َخد‬‫ت‬‫س‬ُ‫ي‬‫و‬ functions ‫ال‬ ‫ذذه‬ ‫مع‬ ‫تتعامل‬ ‫التي‬ array ‫ال‬ ‫ذذا‬ ‫ظهور‬ ‫عند‬ ‫القراءة‬ ‫عن‬ ‫تتوقف‬ ‫بأن‬ null byte ‫ال‬ ‫باقي‬ ‫لمهال‬ ‫ويتم‬ buffer ‫وكأنه‬ .‫موجود‬ ‫غري‬ ‫الطريقة‬ ‫ِبذه‬ ‫حرف‬ ‫ُل‬‫ك‬ ‫أكتب‬ ‫أن‬ ‫يب‬ ‫ض‬َ َ ‫فرت‬ُ‫ي‬ ‫ذل‬ ‫ولكن‬ َ‫س‬‫البائ‬ ‫ة‬ ‫بإدطال‬ ‫تي‬َ‫ب‬‫غ‬َ‫ر‬ ‫ند‬‫ع‬ string ‫؟‬ ‫سنستخدم‬ ،!‫ال‬ ‫بالطبع‬ Library ‫ى‬‫ُسم‬‫ت‬ string.h :‫ثال‬‫م‬ ‫ب‬‫َرض‬‫ن‬ ‫عنا‬َ‫د‬ ،‫األعامل‬ ‫ه‬‫ذ‬َ‫ِب‬ ‫نا‬َ‫ل‬ ‫َقوم‬‫ت‬ َ ‫س‬ َ‫ي‬‫وذ‬ ‫ال‬ ‫أحد‬ ‫من‬ ‫نطلب‬ ‫ثم‬ ،‫ُريد‬‫ن‬ ‫التي‬ ‫ل‬َ‫م‬ُ‫جل‬‫ا‬ ‫ُب‬‫ت‬‫نك‬ ‫سوف‬ functions ‫ال‬ ‫مع‬ ‫للتعامل‬ ‫ت‬ َ ‫ص‬ ِّ ‫ص‬ ُ ‫ط‬ ‫التي‬ strings ‫ال‬ ‫أو‬ Arrays ‫ك‬ ‫ما‬ ‫بنسخ‬ ‫ال‬ ‫داطل‬ ‫ووضعه‬ ‫تبناه‬ buffer ‫ال‬ ‫ذذه‬ ‫ب‬ِّ‫ر‬َ‫ُج‬‫ن‬ ‫دعنا‬ ، function ‫الرائع‬ ‫ة‬ ً‫ا‬‫حالي‬ ‫أحد‬ ‫يستخدمها‬ ‫ال‬ ‫التي‬ ُ‫ه‬‫ألن‬ ، ُ‫ي‬ ‫بذلك‬ َ‫ع‬ ِّ‫ر‬ ‫ض‬ ‫برناجمه‬ ‫ال‬ ‫هلجوم‬ Buffer overflow ‫بساط‬ ‫بكل‬ ‫ة‬ !  .. ‫لهنا‬ strcpy( ) .. ‫بالنسخ‬ ‫تقوم‬ ‫أهنا‬ ‫ظ‬‫الح‬ :‫كالتايل‬ strcpy (destination, source) ‫التا‬ ‫الكود‬ ‫يقوم‬ ‫العبارة‬ ‫بنسخ‬ ‫يل‬ Hello, world! ‫ال‬ ‫لىل‬ buffer ‫ى‬‫سم‬ُ‫مل‬‫ا‬ str_a .‫طباعته‬ ‫م‬ُ‫ث‬ #include <stdio.h> #include <string.h> int main() { char str_a[20]; strcpy (str_a, "Hello, world!n"); printf (str_a); }
  • 40. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [40] Signed and Unsigned ‫ال‬ ‫عن‬ ‫نتحدث‬ ‫عندما‬ numerical values ‫ال‬ ‫يف‬ ‫ختزينها‬ ‫يتم‬ ‫التي‬ ‫األعداد‬ ‫نعني‬ ‫قنحن‬ memory ‫الثنائي‬ ‫بالنظام‬ ، ‫تكون‬ ‫أن‬ ‫لما‬ ‫وذي‬ Signed ‫(موجب‬ ‫أي‬ ‫ة‬ ‫أو‬ ،)‫سالبة‬ ‫أو‬ Unsigned ‫(موجب‬ ‫أي‬ ‫ة‬ .)‫ققط‬ :‫كالتايل‬ ‫تغري‬ُ‫مل‬‫ا‬ ‫ذذا‬ ‫بتعريف‬ ‫نقوم‬ “unsigned int” ‫ساح‬‫بامل‬ ‫ُّم‬‫ك‬َ‫َح‬‫ت‬‫ال‬ ‫مكننا‬ُ‫ي‬ ً‫ا‬‫أيض‬ ، ‫ة‬ َ ‫صص‬َ‫خ‬ُ‫مل‬‫ا‬ ‫ة‬ ‫ال‬ ‫ذا‬‫هل‬ Numerical variable ‫بالزياد‬ ً‫ء‬‫سوا‬ ‫ة‬ ‫ُقصان‬‫ن‬‫بال‬ ‫أو‬ ‫بإضاقة‬ ‫وذلك‬ short or long .‫بله‬َ‫ق‬ ‫توجد‬ function ‫ال‬ ‫لغة‬ ‫يف‬ C ‫تسمى‬ sizeof( ) .. ‫أي‬ ‫مساحة‬ ‫حتديد‬ ‫وظيفتها‬ data type .‫نريده‬ ‫ال‬ ‫ذذه‬ ‫ب‬ ِّ‫ُجر‬‫ن‬‫ل‬ function ‫هم‬ُ‫مل‬‫ا‬ ‫تغريات‬ُ‫مل‬‫ا‬ ‫بعض‬ ‫مساحة‬ ‫عىل‬ ‫ف‬‫نتعر‬ ‫كي‬ ‫ة‬ : #include <stdio.h> int main() { printf("The 'int' data type istt %d bytesn", sizeof(int)); printf("The 'unsigned int' data type ist %d bytesn", sizeof(unsigned int)); printf("The 'short int' data type ist %d bytesn", sizeof(short int)); printf("The 'long int' data type ist %d bytesn", sizeof(long int)); printf("The 'long long int' data type is %d bytesn", sizeof(long long int)); printf("The 'float' data type ist %d bytesn", sizeof(float)); printf("The 'char' data type istt %d bytesn", sizeof(char)); } ‫استخدمنا‬ ‫أننا‬ ‫معي‬ ‫الحظ‬ printf( ) ‫الشاش‬ ‫عىل‬ ‫ما‬ ‫يشء‬ ‫بطباعة‬ ‫لتقوم‬ ‫ة‬ :
  • 41. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [41] ‫بال‬ ‫يسمى‬ ‫ما‬ ‫استخدمنا‬ ‫لقد‬ format specifier ‫وذي‬ %d :‫ييل‬ ‫كام‬ ‫العرض‬ ‫بعملية‬ ‫لتقوم‬ ‫ال‬ ‫مساحة‬ ‫بعرض‬ ‫الكود‬ ‫ذذا‬ ‫سيقوم‬ data types ‫ال‬ ‫موضح‬ ‫ذو‬ ‫كام‬ ‫له‬ ‫بإدطاهلا‬ ‫قمنا‬ ‫تي‬ . reader@hacking:~/booksrc $ gcc datatype_sizes.c reader@hacking:~/booksrc $ ./a.out The 'int' data type is 4 bytes The 'unsigned int' data type is 4 bytes The 'short int' data type is 2 bytes The 'long int' data type is 4 bytes The 'long long int' data type is 8 bytes The 'float' data type is 4 bytes The 'char' data type is 1 bytes reader@hacking:~/booksrc $ Pointers ‫ال‬ ‫أن‬ ‫ر‬‫ك‬َ‫َذ‬‫ت‬ ( EIP register ) ‫ن‬َ‫ع‬ ‫بارة‬‫ع‬ َ‫ي‬‫ذ‬ pointer ‫ال‬ ‫لىل‬ ‫شري‬ُ‫ي‬ current instruction ‫وذلك‬ ‫الربنامج‬ ‫ل‬َ‫م‬َ‫ع‬ ‫أثناء‬ ‫ال‬ ‫عىل‬ ‫الحتوائها‬ memory address ‫ال‬ ‫ه‬‫ذ‬َ‫ِب‬ ‫اخلاص‬ instruction . ‫ال‬ َ‫ع‬َ‫م‬ ‫ل‬ُ‫م‬‫َعا‬‫ت‬‫ال‬ ‫أثناء‬ memory ‫التي‬ ‫للبيانات‬ ‫ّسخ‬‫ن‬‫ال‬ ‫ليات‬َ‫م‬َ‫ع‬‫ل‬ ‫باستمرار‬ ‫َحتاج‬‫ن‬ ‫ال‬ ‫بواسطة‬ ‫استخدامها‬ ‫م‬‫ت‬َ‫ي‬ functions ، ‫ال‬ ‫داطل‬ ‫البيانات‬ ‫نسخ‬ ‫تكرار‬ ‫ة‬َ‫م‬‫ك‬‫احل‬ َ‫ن‬‫م‬ ‫قليس‬ ‫وبالتايل‬ memory ‫لكل‬ function ‫حجز‬ ‫يتطلب‬ ‫ألنه‬ ،‫نستدعيها‬ ‫ال‬ ‫مساحة‬ destination ‫ال‬ ‫نسخ‬ ‫سيتم‬ ‫(التي‬ data ‫ال‬ ‫يف‬ )‫لليها‬ memory ‫األمر‬ ‫كون‬َ‫ي‬ َ ‫س‬ .!‫ّسخ‬‫ن‬‫ال‬ ‫لية‬َ‫م‬َ‫ع‬‫ب‬ ‫البدء‬ ‫قبل‬ ‫لل‬ ً‫ا‬‫ك‬‫هل‬ُ‫م‬ memory .!‫هلا‬ ً‫ا‬‫ومستهلك‬ ‫ال‬ ‫استخدام‬ ‫مكننا‬ُ‫ي‬ ‫ذلك‬ ‫من‬ ً‫ال‬‫بد‬ pointer ّ‫ر‬ ُ‫ح‬ ‫ُل‬‫ك‬‫ب‬ ‫به‬ ‫لنتحرك‬ ‫ي‬ ‫ة‬ ‫داطل‬ ‫ال‬ memory ‫اإلشار‬ ‫طريق‬ ‫عن‬ ‫ة‬ ‫لىل‬ ‫ال‬ ‫عناوين‬ blocks . We use pointers to point to the address of the beginning of that block of memory. Pointers are 32 bits in size (4 bytes), and is defining by putting (*) to the variable name.
  • 42. ‫اإللكتروني‬‫القرصنة‬ ‫ة‬ ‫وأ‬ ‫المعلومات‬‫من‬ Understanding Hacking and Information Security Programming [42] :‫مثال‬ ‫نأطذ‬ ‫دعنا‬ #include <stdio.h> #include <string.h> int main() { char str_a[20]; // A 20-element character array char *pointer; // A pointer, meant for a character array char *pointer2; // another one strcpy(str_a, "Hello, world!n"); pointer = str_a; // Set the first pointer to the start of the array. printf(pointer); pointer2 = pointer + 2; // Set the second one 2 bytes further in. printf(pointer2); // Print it. strcpy(pointer2, "y you guys!n"); // Copy into that spot. printf(pointer); // Print again. } ‫ماييل‬ :‫الكود‬ ‫ذذا‬ ‫نتائج‬ reader@hacking:~/booksrc $ gcc -o pointer pointer.c reader@hacking:~/booksrc $ ./pointer Hello, world! llo, world! Hey you guys! reader@hacking:~/booksrc $