Học bảo mật nên học ngôn ngữ nào?

Ai có tài liệu về lập trình(Game, Đặc biệt là bảo mật) cho e xin vs ạ với lại để học tốt nhất mấy cái trên nên học ngôn ngữ nào ạ

Game và bảo mật thì liên quan gì đến nhau :thinking: ? Hack game tất nhiên là khác hoàn toàn so với hack tài khoản ngân hàng, facebook,…

Đối với ngành bảo mật thì học càng nhiều ngôn ngữ lập trình càng tốt, mà học mỗi lập trình thôi chưa đủ, muốn theo ngành bảo mật cũng phải học nhiều thứ khác. Về khoản ngôn ngữ lập trình thì nên ưu tiên học C, C++, Python và hợp ngữ (hơi khó) trước.

Ngoài ra cũng có anh Fabian Faessler, một chuyên gia nghiên cứu bảo mật nổi tiếng, anh này có một kênh Youtube nửa triệu người đăng kí chuyên đăng về những thứ liên quan đến bảo mật tên LiveOverflow. Link:

7 Likes

thật ra thích cả 2 nên học thôi

Để minh họa cho độ khó của hợp ngữ thì bần tăng xin tặng thí chủ đoạn code sau:

global _start

section .data
    msg db "Hello, world!", 0x0a
    len equ $ - msg

section .text
_start:
    mov eax, 4
    mov ebx, 1
    mov ecx, msg
    mov edx, len
    int 0x80
    mov eax, 1
    mov ebx, 0
    int 0x80
3 Likes

ông ơi, tui nói thật ông đọc cái bài kia r đúng ko, tui có đăng bài xin lỗi r, ko cần phải quá nghiêm túc vs một thằng trẻ trâu như tui nếu ông cảm thấy thế. chứ đây cx bt trình độ mình thì chỉ dừng lại ở Pascal lớp 8 thôi. Tuổi trẻ chưa trải sự đời. :cold_face: :cold_face: :cold_face: :cold_face:

Mình xin được phân tích code của @HR16 như sau:

  1. global _start: Khai báo 1 hàm toàn cục (global) có tên là _start, hàm này giống như hàm main() trong C/C++.

  2. section .data: Section này là nơi để bạn define các biến. Bạn có thể thay thế phần section sang segment và nó sẽ làm công việc y chang section vậy(chả bt vì sao mấy ông tạo ra Asm lại thêm cái này làm gì)

  3. msg db "Hello, world!", 0x0a: Khai báo biến msg chứa string có nội dung là "Hello, world!", còn phần 0x0a thì hình như có liên quan đến số Hex thì phải.

  4. len equ $ - msg: Khai báo biến len chứa chiều dài của string trong biến msg, equ=, còn $ thì mình không biết nó là gì nữa.

  5. section .text: Tương tự như phần code thứ 2, nhưng khác hơn 1 chút là Section này là nơi để bạn viết code để chạy.

  6. _start:: Cái này dùng để đặt các câu lệnh bên trong hàm _start, bạn cũng làm điều này tương tự khi bạn muốn đặt các câu lệnh vào trong 1 hàm nào đó.
    VD:

; Hàm _start chạy chính
_start:
        jmp func ; Gọi hàm "func"
func:
        ; Code của hàm ở đây
  1. 4 đoạn code đầu này trong hàm _start là dùng để in ra biến msg, tức là in ra dòng chữ "Hello, world!" trên Console:
    mov eax, 4
    mov ebx, 1
    mov ecx, msg
    mov edx, len
  1. Dòng code sau phần int 0x80 đầu tiên là dùng để shutdown chương trình sau khi nó chạy xong 4 code trước đó:
    mov eax, 1
    mov ebx, 0
  1. int 0x80: Cái này theo mình tìm hiểu là dùng để gọi Kernel(hạt nhân của HĐH) ra xử lý các code mà chúng ta viết ra trước khi ta viết câu lệnh này. Cứ sau mỗi lần gọi Kernel xong thì đoạn code mà ta viết sau đó nếu muốn được xử lý thì phải gọi Kernel thêm lần nữa.

Mình đã cố gắng giải thích các code của bạn này theo cách của mình, tuy nhiên do đã không học và áp dụng Asm trong 1 thời gian kể từ ki mình bắt đầu học nó để build 1 OS nên cách giải của mình có thể không thực sự đúng và cụ thể cho lắm, mình vẫn khuyến khích ai muốn học Asm thì có thể lên các trang web hướng dẫn code Asm bằng từ search: Assembly tutorial hay Asm tutorial nếu bạn hiểu Tiếng Anh.

8 Likes

Mình nghĩ bạn cứ học lập trình đã, rồi sau một thời gian đủ để tự tạo ra phần mềm có ích thì đánh giá lại bản thân xem liệu mình có phù hợp với game hay bảo mật không, lúc đó hãy chọn hướng.

4 Likes

thanks :kissing_heart: :kissing_heart: :kissing_heart: :kissing_heart: :kissing_heart:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?