Dịch ngược file cài đặt apk của android

Reverse Engineering (hay điện thoại tư vấn tắt là RE) là một trong những mảng mà đa số các giải CTF Jeopardy phần đa có. Trong những bài RE họ thường thấy 1 số ít loại tệp tin như exe, elf, các file code,... Cùng cả file apk.Bạn đang xem: hoàn toàn có thể dịch ngược tệp android

Do việc làm hẳn 1 phầm mềm android, lại đề xuất để lại trong các số ấy những thiếu hụt sót về bảo mật thông tin để fan chơi khai thác, tìm flag buộc phải tốn nhiều thời gian và công sức hơn, nên dạng file app android không lộ diện nhiều trong các cuộc thi CTF. Mặc dù nhiên, xem về độ khó khăn và sự thú vị thì dạng bài xích reverse file game android cũng không thể kém gì các dạng file khác.

Bạn đang xem: Dịch ngược file cài đặt apk của android

Trong bài bác này, chúng ta sẽ cùng tìm hiểu về dạng bài RE Android qua 1 bài CTF solo giản: bài xích Droids3 vào picoCTF 2019.

Link tải: Droids3

Tools

Các phép tắc cơ phiên bản mà chúng ta cần để gia công 1 bài bác CTF reverse android gồm:

ADB: cách thức giúp kết nối với trang bị ảo Android, bao gồm sẵn trong folder tools của genymotion, băng thông mặc định trên windows là C:/Program Files/Genymobile/Genymotion/tools.

Cài đặt

Sau khi thiết lập đầy đủ những tools, chúng ta khởi cồn Genymotion, tạo ra 1 thiết bị android bất kỳ. Mình hay tạo những thiết bị Google Pixel, các thiết bị này chạy khá mượt.

Khi đa số thứ đã gồm đủ cùng giả lập apk đã bật, bọn họ sẽ tiến hành thiết lập file apk vào mang lập nhằm chạy:

Copy file three.apk vào cùng thư mục với adb để triển khai cài đặt.Chạy lệnh thiết đặt ứng dụng vào sản phẩm ảo: adb install three.apk

Sau khi thiết lập thành công, trong sản phẩm công nghệ giả lập đã có thêm phầm mềm PicoCTF


*

Tìm phát âm ứng dụng

Giao diện ứng dụng có các tác dụng cơ bản: 1 trường input, 1 button và 2 đoạn text.

Khi click vào button đã hiện text "don"t wanna", và hint là "make this tiện ích your own".

Tìm flag

Mở file three.apk bằng Bytecode Viewer bạn có thể thấy rất nhiều file cùng folder. Làm sao từ trong đống file này kiếm được file có tính năng giúp chúng ta lấy được flag thì nhà yếu dựa vào kinh nghiệm. Cách của chính mình là demo xem hết những file coi có khai thác được gì không.

Xem thêm: Xem Phim Điều Tuyệt Vời Nhất Của Chúng Ta Tập 12 Vietsub, Điều Tuyệt Nhất Của Chúng Ta Tập 12

Tất nhiên cũng tất yêu tìm mà không có hướng gì cả. Những file code thiết yếu của vận dụng thường nằm trong đường truyền dạng com/abc/xyz/. Với bài xích này thì bọn họ thấy 1 tệp tin có cái tên đáng ngờ nằm ở vị trí com/hellocmu/picoctf/FlagstaffHill.class


*

Trước khi trình làng về nghệ thuật patch thì bản thân sẽ tóm tắt về kết cấu của tệp tin apk. File apk thực chất là một dạng file đã được nén như zip, rar, v..v.. Bọn họ hoàn toàn rất có thể rename three.apk thành three.zip với giải nén ra bình thường. Tất nhiên những file sau khi giải nén ra chưa thể xem trực tiếp được luôn


*

Trong các file bung file ra có 1 file class.dex, file này chứa các class vào code java. Các lập trình viên vẫn thường code app app android bằng java/kotlin. Lúc compile thì các file class sẽ tiến hành nén lại thành 1 file dex.


*

Khi triển khai reverse file android thì chúng ta sẽ không nhận được các file code bằng java đâu, cố gắng vào đó chúng ta sẽ nhấn được các file smali code. Từ các file smali này, decompiler sẽ chuyển sang code java để bọn họ đọc, tuy nhiên sẽ không đúng chuẩn hoàn toàn, và sẽ có sự biệt lập khi sử dụng các decompiler không giống nhau. Thứ tất cả độ tin cậy cao nhất khi tiến hành reverse phầm mềm là smali code (smali code vào reverse android có phương châm như assembly code vào reverse exe, elf vậy).

Mình chỉ trình làng sơ qua bởi vậy thôi. Giờ thì chúng ta sẽ hợp tác vào việc path lại app.

Đầu tiên bọn họ sẽ decompile file android bằng apktool

Để file apk và apktool thuộc thư mục với chạy lệnh: java -jar apktool_2.4.1.jar d three.apk

Kết quả đang được thư mục three với những sub folder, file


*

Tiếp theo chúng ta sẽ tiến hành sửa code

Mở tệp tin three/smali/com/hellocmu/picoctf/FlagstaffHill.smali

Mình sử dụng VScode mua thêm extension smali nhằm dễ quan sát hơn, luôn tiện cho vấn đề sửa code.


Chúng ta sẽ chăm chú vào hàm getFlag, địa điểm mình gạch men chân ->nope khớp ứng với return nope trong code java. Hiện giờ cùng xem lại code java:

Thứ nhất: bọn họ cần hàm getFlag yêu cầu return yep thay bởi return nopeThứ hai: cả hai hàm yep và nope đều có cùng argument

=> Vậy, nhằm getFlag return yep thì chúng ta chỉ phải đổi ->nope thành ->yep, sau đó save lại file.

Bước 3: build lại thành file android mới

Khi đã sửa được code theo ý muốn, chúng ta cần từ các file kia build ra file game android mới. Apktool cũng có thể có chức năng chất nhận được build ra file apk sau khi sửa code, chỉ việc chạy lệnh: java -jar apktool_2.4.1.jar b three


File android mới nằm ở thư mục three/dist. Xóa phầm mềm cũ trong giả lập đi và thiết lập lại phầm mềm mới thôi chứ liệu có còn gì khác nữa đúng không?


File three.apk mới này sẽ không cài được ngay đâu, họ cần có tác dụng tiếp cách cuối cùng.

Sign apk

Các các bạn hãy copy 2 câu lệnh sau vào tệp tin text:

keytool -genkeypair -v -keystore key.keystore -alias publishingdoc -keyalg RSA -keysize 2048 -validity 10000jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ./key.keystore %1 publishingdocĐổi tên tệp tin thành sign-apk.bat kế tiếp chạy lệnh cmd: sign-apk.bat .apk

Lần lượt điền keystore và các thông tin, các bạn thích điền gì cũng được, mình nhằm "123123" hết. Lệnh đầu tiên sẽ sản xuất key.keystore, lệnh thứ hai sẽ sign android bằng key vừa tạo.