Ndk là gì

  -  

Sin88, King Tips, Supper Club – top 3 vô cùng phẩm làm cộng đồng game thủ điên đảo trên mạng buôn bản hội

*

Tổng hợp

Thoải mái vui chơi giải trí tại nhà mẫu có quality tốt độc nhất vô nhị trên thị trường – T88, TA88, win2888

*

Game

Blog Số Đề chia sẻ đề về 77 bữa sau đánh nhỏ gì? 


Mở đầu

Gần trên đây ở công ty tôi đạt được giao một task hơi hay. Công ty tôi gồm một trò chơi viết trên căn nguyên android.Game đó viết bằng anđroid, mặc dù lại đa số dùng web view nhằm hiển thị.Mặc dù vậy, một số trong những logic như là set session mang đến user, authenticate mang đến user thì lại nằm tại android.

Bạn đang xem: Ndk là gì

Đang xem: apk ndk là gì

Chắc các bạn cũng sẽ biết, android app được viết bởi java, dịch ra tệp tin dex, kế tiếp được phân phối trên google playstore bên dưới dạng tệp tin apk. Bởi đó, game android app bao gồm một điểm yếu cố hữu mà phần lớn java ứng dụng đều mắc phải, chính là bảo mật. Điểm yếu bảo mật ở đây là gì? Đó là việc mà phần đông java tiện ích đều rất có thể được so sánh ngược (reverse engineer) rất giản đơn dàng.

Việc này bắt nguồn từ bản chất java được dịch ra bytecode ngơi nghỉ dạng khá “gần” với ngữ điệu lập trình thông thường, cùng bytecode chứa vừa đủ các thông tin cần thiết để chúng ta có thể dịch lại cục bộ lại công tác gốc.

Vậy cái điểm yếu bảo mật này liên quan đến cái ứng dụng tôi vẫn phụ trách thay nào? Như tôi vừa nói sống trên, trong cái game mà tôi đang phụ trách, ngắn gọn xúc tích authenticate mang lại user đang nằm bên trên phía android. Điều này có nghĩa là trên android app đang phụ trách:

Mã hoá uuid của người dùng, trình lên serverServer vẫn nhận uuid đó, và gửi session key về mang lại user nhằm user phối vào cookie.

Chắc hẳn sẽ có được bạn thắc mắc là qui trình xác xắn này quá đơn giản. Đúng vậy, quá trình này quá đơn giản, dẫn đến là việc chỉ việc user A (người xấu) biết uuid của user B (người bị hại) thì A sẽ hàng fake được bất cứ hành động của B như thể gửi đồ gia dụng từ B mang đến A.

Vậy lý do không có tác dụng một qui trình xác thực xuất sắc hơn, như cần sử dụng thêm một token y hệt như onetime password nhưng mà chỉ user đó mới biết được, giỏi là làm giải pháp nào để “giấu” uuid đi khiến cho user khác không biết. Đúng là phải như thế! mặc dù vì một số vì sao “lịch sử” của legacy code, mà chúng ta không thể thay đổi qui trình đúng đắn một cách dễ dàng như cố gắng được.

Như vậy thì với flow code bây giờ thì với điểm yếu kém của app android tôi đã nhắc tới ở bên trên thì một người có chút kiến thức và kỹ năng lập trình có thể dễ dàng dịch ngược đoạn logic dùng để làm xác thực nhưng tôi đang nói sinh hoạt trên. Mà trong những số ấy có câu hỏi mã hoá uuid người tiêu dùng mà khi chúng ta nhìn được logic code thì mã hoá cũng bằng thừa. Lý do tại sao lại bằng thừa do code bây giờ đang thực hiện “Symmetric Cryptography Algorithm”. Symmetric ngơi nghỉ đây tức là thuật toán mã hoá đối xứng, mà điển hình gồm có những thuật toán như blowfish, AES, DES.

Nói một cách đơn giản thì những loại thuật toán symmetric thì bên gửi và mặt nhận sẽ dùng cùng một key, cùng một intitialize vector (Các tư tưởng này tôi sẽ trình bày kĩ hơn ở phần sau) , bởi đó chỉ cần dịch ngược được code thì user A (người xấu) sẽ sở hữu được được key cùng initialize vector để tạo thành một request thích hợp lệ sử dụng uuid của user B.

Vậy thì họ phải xử lý vấn đề này nạm nào? sau một hồi đàm đạo với doanh nghiệp thì tôi nghĩ về ra một chiến thuật “chữa cháy” tạm bợ thời, đấy là chuyển lô ghích vào native code sử dụng ndk cùng C, mục đích để giành được là:

“Giấu” đi logic mã hoá uuid fan dùng, giấu cả những tham số ban sơ như key với initialize vector. Do đó mà user A sẽ không còn biết làm cách nào để tạo thành một request hợp lệ cùng với uuid của user B.

Xem thêm: Due Process Là Gì : Định Nghĩa, Ví Dụ Trong Tiếng Anh, Từ Điển Anh Việt Due Process (Of Law) Là Gì

Cách xử lý này tại sao tôi nói là trợ thời thời, cũng chính vì user A nếu gồm thêm một chút ít hiểu biết về ndk thì sẽ biết được interface cung ứng ở ndk code sẽ được public ra ngoài, cho nên vì thế thì vẫn rất có thể tận dụng được đặc điểm đó để tạo ra một request thích hợp lệ. Tuy nhiên do không nghĩ là ra phương án khác nên tạm thời dùng cách này sẽ tiêu giảm được những hacker “gà mờ”.

Vậy nhằm đi theo hướng đi này bọn họ cần phải tò mò về 2 thứ chính là : Android NDK và phương pháp để sử dụng các thuật toán mã hoá bên trên ndk (ở đó là sử dụng ngôn từ C), sẽ là openssl.Phần reviews hơi dài dòng, nhưng mang lại đây chúng ta đã chũm được nguyên nhân tiêu đề nội dung bài viết lại là app android NDK và mở cửa SSL.

Dưới đây họ sẽ đi thứu tự về 2 vụ việc cần giải quyết và xử lý : apk NDK và OpenSSL

Android NDK

Android NDK là 1 trong kit phát triển giúp bạn có thể phát triển các ứng dụng android mà lại dựa 1 phần trên những đoạn code viết trên C hoặc C++. Bạn sẽ cần mang đến NDK trong những sản phầm yêu cầu đến tính năng cao, nhưng mà khi đó những đoạn code được build ra binary đã phát huy hiệu năng tối đa. Những logic code được tiến hành trên ndk sinh sống dứoi đây tôi vẫn gọi phổ biến là native code.

Về cơ chế hoạt động của ndk, bạn cũng có thể hiểu một cách dễ dàng và đơn giản như vào hình vẽ dưới đây, ứng dụng của các bạn sẽ tiến hành giao tiếp với native code thông qua một interface gọi là JNI.

Một cách đối kháng giản, JNI là 1 trong những bộ giao thức giao tiếp chuẩn chỉnh của java, giúp cho java code hoàn toàn có thể nói chuyện được cùng với C/C++ code, có thể truyền dữ liệu giữa 2 bên.

*

Để xem thêm về app android ndk, các bạn có thể vào home của apk tại home của android. Tiếp sau đây tôi vẫn tóm tắt công việc cần thiết để áp dụng được ndk.

Xem thêm: Côn Lôn Đao Võ Lâm Miễn Phí, Côn Lôn Đao Thời Nay Không Còn Xe Để Chém Sẽ Ntn

Cài đặt

Cách cài đặt android ndk khá tương đương với sdk, có nghĩa là chỉ 1-1 thuần là bạn tải cỗ ndk về, để vào đâu đó. Trong cỗ NDK đó sẽ chứa đầy đủ các tool để hoàn toàn có thể build được ndk native code từ C/C++ source (bao gồm build script và những file header bắt buộc thiết). Thừa trình cài đặt có thể hiểu tóm gọn gàng qua đoạn script tiếp sau đây (chạy trên môi trường thiên nhiên unix):

wget http://dl.google.com/android/ndk/android-ndk64-r10-darwin-x86.tar.bz2tar yxvf android-ndk64-r10-darwin-x86.tar.bz2mv android-ndk64-r10-darwin-x86 ~/echo “export PATH=$PATH:/~/android-ndk64-r10-darwin-x86” >> ~/.bash_profileecho “export ANDROID_NDK_ROOT=/Users/huydo/android-ndk64-r10-darwin-x86” >> ~/.bash_profilesource ~/.bash_profileSau lúc chạy đoạn script bên trên thì game android ndk sẽ được tiếp tế path của hệ thống, giúp chúng ta cũng có thể gõ các lệnh như ndk-build từ bất kể đâu

Sử dụng

Trong cỗ ndk các bạn down về có chứa sẵn không ít ví dụ về cách sử dụng ndk, từ đơn giản và dễ dàng (như hello world) cho tới các lấy ví dụ phức tạp hơn hẳn như là xử lý hình ảnh (mà phải thao tác gửi tài liệu giữa game android app với ndk ứng dụng khá phức tạp). Các bạn cũng có thể tham khảo những ví dụ đó để sở hữu cái nhìn thực tế về ndk program. Tiếp sau đây tôi sẽ trình diễn ngắn gọn gàng về quy trình sử dụng của tôi.