Có thể dịch ngược tệp android

Reverse Engineering (tuyệt call tắt là RE) là một trong mảng mà đa số các giải CTF Jeopardy đều sở hữu. Trong các bài xích RE họ thường bắt gặp một số ít các loại tệp tin như exe, elf, các tệp tin code,... và cả file android.

Bạn đang xem: Có thể dịch ngược tệp android

Do câu hỏi làm cho hẳn 1 app app android, lại đề nghị giữ lại trong đó những thiếu hụt sót về bảo mật thông tin để người đùa khai quật, search flag cần tốn các thời gian với công sức của con người hơn, cần dạng tệp tin game android ko lộ diện nhiều trong những cuộc thi CTF. Tuy nhiên, xét về độ cực nhọc với sự độc đáo thì dạng bài reverse tệp tin android cũng không hề kém gì những dạng file không giống.

Trong bài bác này, bọn họ đã cùng tò mò về dạng bài bác RE Android qua một bài bác CTF đối chọi giản: bài Droids3 trong picoCTF 2019.

Link tải: Droids3

Tools

Các vẻ ngoài cơ phiên bản cơ mà bọn họ buộc phải để triển khai 1 bài CTF reverse app android gồm:

ADB: luật pháp góp kết nối cùng với thứ ảo Android, tất cả sẵn trong tlỗi mục tools của genymotion, đường truyền mặc định bên trên windows là C:/Program Files/Genymobile/Genymotion/tools.

Cài đặt

Sau khi cài đặt không thiếu thốn những tools, chúng ta khởi hễ Genymotion, tạo nên 1 máy Android bất kỳ. Mình thường tạo nên các thiết bị Google Pixel, những máy này chạy tương đối mượt.

khi những vật dụng đã gồm đầy đủ và trả lập app android sẽ bật, chúng ta sẽ thực hiện thiết đặt tệp tin app android vào mang lập nhằm chạy:

Copy file three.apk vào cùng thỏng mục với adb để triển khai setup.Chạy lệnh setup áp dụng vào đồ vật ảo: adb install three.apk

Sau Khi thiết đặt thành công xuất sắc, vào máy giả lập sẽ bao gồm thêm tiện ích PicoCTF

*

Tìm gọi ứng dụng

Giao diện áp dụng gồm các tính năng cơ bản: 1 trường đầu vào, 1 button cùng 2 đoạn text.

khi cliông xã vào button đã hiện tại text "don"t wanna", và hint là "make this ứng dụng your own".

Tìm flag

Mngơi nghỉ tệp tin three.app android bằng Bytecode Viewer bạn có thể thấy tương đối nhiều tệp tin và folder. Làm sao tự vào đụn tệp tin này tìm kiếm được file gồm tính năng giúp chúng ta rước được flag thì đa số phụ thuộc vào kinh nghiệm. Cách của mình là thử coi không còn những tệp tin xem tất cả khai quật được gì ko.

Tất nhiên cũng tất yêu tìm kiếm mà không có phía gì cả. Các tệp tin code chủ yếu của vận dụng hay phía bên trong đường dẫn dạng com/abc/xyz/. Với bài xích này thì chúng ta thấy 1 file tất cả cái tên xứng đáng ngờ nằm ở vị trí com/hellocmu/picoctf/FlagstaffHill.class

*

Ở đây bọn họ lưu ý thấy gồm 2 hàm nope() với yep(). Hàm getFlag() lại trả về công dụng của hàm nope - "don"t wanna". Vậy thì mẫu bọn họ bắt buộc sinh sống đó là getFlag cần return yep. Để làm cho được điều ấy họ bắt buộc áp dụng kỹ thuật patch file android.

Xem thêm: Hướng Bàn Làm Việc Tuổi Bính Dần, Hướng Bàn Làm Việc Hợp Tuổi Bính Dần

Trước khi trình làng về nghệ thuật patch thì bản thân vẫn chia sẻ về kết cấu của tệp tin game android. File apk thực tế là một trong dạng file đã được nén nhỏng zip, rar, v..v.. Chúng ta hoàn toàn có thể rename three.game android thành three.zip cùng bung file ra bình thường. Tất nhiên các file sau khi giải nén ra không thể xem trực tiếp được luôn

*

Trong các file giải nén ra có 1 file class.dex, tệp tin này chứa các class vào code java. Các thiết kế viên đã thường xuyên code app Android bằng java/kotlin. Lúc compile thì các file class sẽ được nén lại thành 1 file dex.

*

Lúc tiến hành reverse tệp tin apk thì chúng ta sẽ không nhận ra những tệp tin code bằng java đâu, nuốm vào đó họ sẽ nhận được những file smali code. Từ các tệp tin smali này, decompiler đang đưa thanh lịch code java để bọn họ gọi, tuy nhiên sẽ không đúng mực trọn vẹn, với sẽ có được sự khác biệt lúc sử dụng các decompiler khác biệt. Thứ tất cả độ tin yêu cao nhất lúc tiến hành reverse phầm mềm là smali code (smali code trong reverse app android có phương châm như assembly code trong reverse exe pháo, elf vậy).

Mình chỉ ra mắt sơ qua những điều đó thôi. Giờ thì chúng ta vẫn bắt tay vào bài toán path lại app.

Đầu tiên họ đang decompile file apk bởi apktool

Để tệp tin app android với apktool thuộc thỏng mục và chạy lệnh: java -jar apktool_2.4.1.jar d three.apk

Kết trái sẽ tiến hành folder three với những sub folder, file

*

Tiếp theo bọn họ đang triển khai sửa code

Msinh sống tệp tin three/smali/com/hellocmu/picoctf/FlagstaffHill.smali

Mình sử dụng VScode cài đặt thêm extension smali để dễ dàng nhìn hơn, luôn tiện cho Việc sửa code.

*

Chúng ta đang chú ý vào hàm getFlag, khu vực bản thân gạch men chân ->nope tương xứng cùng với return nope trong code java. Bây giờ đồng hồ cùng xem xét lại code java:

Thứ nhất: bọn họ phải hàm getFlag cần return yep nắm vì chưng return nopeThứ hai: cả hai hàm yep cùng nope đều có cùng argument

=> Vậy, để getFlag return yep thì chúng ta chỉ việc thay đổi ->nope thành ->yep, tiếp nối save sầu lại tệp tin.

Cách 3: build lại thành file game android mới

Lúc sẽ sửa được code theo nhu cầu, bọn họ nên từ những file đó build ra file app android new. apktool cũng đều có tính năng chất nhận được build ra file android sau khoản thời gian sửa code, chỉ cần chạy lệnh: java -jar apktool_2.4.1.jar b three

*

File android mới nằm ở vị trí thư mục three/dist. Xóa ứng dụng cũ vào giả lập đi và cài lại ứng dụng bắt đầu thôi chứ đọng còn gì nữa đúng không?

*

File three.app android new này sẽ không thiết lập được ngay đâu, bọn họ phải kéo dài bước ở đầu cuối.

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 -keykích thước 2048 -validity 10000jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ./key.keystore %1 publishingdocĐổi thương hiệu file thành sign-apk.bat tiếp đến chạy lệnh cmd: sign-android.bat .apk

Lần lượt điền keystore với các biết tin, những bạn muốn điền gì cũng được, bản thân để "123123" không còn. Lệnh đầu tiên sẽ khởi tạo key.keystore, lệnh thứ 2 đang sign apk bằng key vừa chế tạo.

*

*

vì thế là bọn họ đang sign thành công tệp tin android patched. Giờ chỉ việc xóa áp dụng cũ vào giả lập, sở hữu vận dụng bắt đầu sẽ patch vào và bấm nút ít để thừa nhận flag.

Xem thêm: 8 Cách Làm Đẹp Da Mặt Tự Nhiên Tại Nhà Đơn Giản Nhất Tại Nhà

*

Flag: picoCTFtis.but.a.scratch

Qua bài viết thì chắc rằng các bạn gần như vắt được phần đông kiến thức và kỹ năng cơ bạn dạng để làm các bài xích CTF reverse game android rồi đúng không? Nếu gồm bất kể vướng mắc gì, hãy bình luận sinh sống phía dưới nội dung bài viết nhằm bạn cũng có thể thuộc thảo luận nhé.


Chuyên mục: Kiến Thức