Hướng dẫn dùng apktool để chỉnh sửa file apk, Hướng dẫn Decompiling và Recompiling file .apk với apktool trên máy tính

Blogs
Blogs công nghệ

APKtool – Phần mềm hỗ trợ cho các developer trên Android, Phần mềm giúp bạn việt hóa,chỉnh sửa,… ứng dụng Android ngay từ file apk mà không cần mã nguồn ứng dụng. Tức là bạn có thể dịch người file apk, chỉnh sửa rồi đóng gói lại mà không cần mã nguồn ban đầu của ứng dụng.

Đang xem: Apk studio

Dịch ngược(DECOMPILE) là gì?

Khi bạn viết một chương trình hay một đoạn mã, thì đoạn mã đó các trình xem văn bản bình thường có thể xem được hết. Nhưng để chạy được nó, bản phải chuyển nó thành ngôn ngữ máy còn gọi là BIÊN DỊCH ( COMPILE ).Nhưng khi biên dịch xong, chúng ta không thể chỉnh sửa lại phần mềm đó được do nó đã trở thành chương trình theo ngôn ngữ máy và các trình xem văn bản hình thường không thể xem được ( Bạn mở nó bằng trình xem văn bản bình thường thì sẽ thấy các kí tự lạ ). Chúng ta phải dịch ngược nó lại gọi là DECOMPILE, và sau khi xem/chỉnh sửa xong thì ta dịch lại nó thành ngôn ngữ máy gọi là RECOMPILE.

APK tool có phiên bản cho máy tính và bản cho điện thoại.

Với bản cho điện thoại: Có nhiều cách có thể làm trực tiếp trên điện thoại với APK EDITOR ở đây mình hướng dẫn các bạn mod trên PC.

Mình chỉ note qua một chút về cách làm trên điện thoại, bạn google thêm nhé.

Tải apk tool tại đây: https://code.google.com/archive/p/apktool/downloads

Giải nén và đưa thư mục apktool ra ngoài thẻ nhớ /sdcard. Sau đó vào apktool tìm apktool.apk và cài nó.

Cách sử dụng vài tính năng cơ bản:

– Decompile: Chọn file apk và nhấp DECOMPILE ALL. Đợi nó và sẽ xuất hiện (tên ứng dụng)_src.

– RECOMPILE: Tìm thư mục đã được xuất ra như trên -> Nhấp vào -> RECOMPILE.

Chi tiết:Phần mềm hỗ trợ Dich ngược(Decompile*),Biên dịch lại(Recomile),kí apk(signalign) và một số tính năng khác như thêm META-INF vào ứng dụng,tạo odex…Các bạn tự tìm hiểu nha.SIGN APK là gì?
Đó là khi bạn có dịch chương trình theo ngôn ngữ máy và cài nó vào. Máy sẽ duyệt chữ kí để nó có thể được cài hay không! Và một ứng dụng mới viết hay đã bị chỉnh sửa đều cần kí hay kí lại.Một số tính năng phụ khác các bạn tìm hiểu lấy nhé.

Dùng APK tool trên máy tính chạy Windows

1. Phần mềm chuẩn bị để tiến hành

+Cài đặt Java (JDK/JRE): chú ý chọn đúng phiên bản windows sử dụnghttp://www.oracle.com/technetwork/java/javase/downloads/index.html

+Cài đặt notepad++ để chỉnh sửa code (nếu sử dụng editor khác như sublime text thì khỏi cài)https://notepad-plus-plus.org/download+7zip (nếu đã có winrar thì thôi không cần):http://www.7-zip.org/download.html

+Apktool (cái quan trọng nhất ) down bản mới nhất là 1.5.2apktool-install-windows-r05-ibot.tar.bz2https://connortumbleson.com/apktool/googlecode/

Note: Down cả 2 file trên về.Sau khi tải ta thiết lập apktool trên phân vùng C của PC hay Laptop theo đường dẫn C:apktoolGiản nén 2 file đã down ở trên về ta có 3 file: aapt.exe; apktool.bat; apktool.jar chép hết 3 file này vào đường dẫn C:apktool như trong hình.

2. Decompile file .apk của 1 rom

Chuẩn bị: File .apk cần decompile (ở đây mình decompiler 2 file là System
UI.apk với framework-res.apk).

Mở của sổ Command Prompt (cmd )và chọn Run as Administrator.

Tại dấu nhắc trong cửa sở cmd các bạn gõ: cd C:apktool Nhấn Enter.

Lời bài hát người yêu tôi không có gì để mặc, người yêu tôi không có gì để mặc

Chúc bạn thực hiện thành công với những file bạn cần chỉnh sửa!

Có thể bạn quan tâm:

Hướng dẫn dùng Advanced Apk Tool để chỉnh sửa file apk, Hướng dẫn Decompiling và Recompiling file .apk với Advanced Apk Tool trên máy tính

Hướng dẫn sử dụng và cách chỉnh sửa file APK trên máy tính bằng phần mềm có giao diện đơn giản, dễ thao tác APK Icon Editor và APK Editor Studio

DVMS chuyên: – Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,… – Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,… – Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,… – Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,… – Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,…

Vì sao chọn DVMS? – DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, i
OS, Android, Blackberry, Windows Phone, cloud computing,… – DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,… – DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,… Quý khách xem Hồ sơ năng lực của DVMS tại đây >> Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>

Reverse Engineering (hay gọi tắt là RE) là một mảng mà hầu hết các giải CTF Jeopardy đều có. Trong các bài RE chúng ta thường thấy 1 số loại file như exe, elf, các file code,… và cả file apk.

Do việc làm hẳn 1 app android, lại cần để lại trong đó những thiếu sót về bảo mật để người chơi khai thác, tìm flag cần tốn nhiều thời gian và công sức hơn, nên dạng file apk không xuất hiện nhiều trong các cuộc thi CTF. Tuy nhiên, xét về độ khó và sự thú vị thì dạng bài reverse file apk cũng không hề kém gì các dạng file khác.

Trong bài này, chúng ta sẽ cùng tìm hiểu về dạng bài RE Android qua 1 bài CTF đơn giản: bài Droids3 trong pico
CTF 2019
.

Link tải: Droids3

Tools

Các công cụ cơ bản mà chúng ta cần để làm 1 bài CTF reverse apk gồm:

ADB: công cụ giúp kết nối với máy ảo Android, có sẵn trong thư mục tools của genymotion, đường dẫn mặc định trên windows là C:/Program Files/Genymobile/Genymotion/tools.

Cài đặt

Sau khi cài đặt đầy đủ các tools, chúng ta khởi động Genymotion, tạo 1 thiết bị Android bất kỳ. Mình thường tạo các thiết bị Google Pixel, các thiết bị này chạy khá mượt.

Khi mọi thứ đã có đủ và giả lập android đã bật, chúng ta sẽ tiến hành cài đặt file apk vào giả lập để chạy:

Copy file three.apk vào cùng thư mục với adb để tiến hành cài đặt.Chạy lệnh cài đặt ứng dụng vào máy ảo: adb install three.apk

Sau khi cài đặt thành công, trong thiết bị giả lập đã có thêm app Pico
CTF

*

Tìm hiểu ứng dụng

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

Khi click vào button sẽ hiện text “don”t wanna”, và hint là “make this app your own”.

Tìm flag

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

Tất nhiên cũng không thể tìm mà không có hướng gì cả. Các file code chính của ứng dụng thường nằm trong đường dẫn dạng com/abc/xyz/. Với bài này thì chúng ta thấy 1 file có cái tên đáng ngờ nằm tại com/hellocmu/picoctf/Flagstaff
Hill.class

*

Ở đây chúng ta để ý thấy có 2 hàm nope() và yep(). Hàm get
Flag() lại trả về kết quả của hàm nope – “don”t wanna”. Vậy thì cái chúng ta cần ở đây là get
Flag phải return yep. Để làm được điều đó chúng ta cần sử dụng kỹ thuật patch file apk.

Trước khi giới thiệu về kỹ thuật patch thì mình sẽ nói qua về cấu trúc của file apk. File apk thực chất là một dạng file nén như zip, rar, v..v.. Chúng ta hoàn toàn có thể rename three.apk thành three.zip và giải nén ra bình thường. Tất nhiên các file sau khi giải nén ra chưa thể xem trực tiếp được luôn

*

Trong các file giải nén ra có 1 file class.dex, file này chứa các class trong code java. Các lập trình viên sẽ thường code app Android bằng java/kotlin. Khi compile thì các file class sẽ được nén lại thành 1 file dex.

*

Khi thực hiện reverse file apk thì chúng ta sẽ không nhận được các file code bằng java đâu, thay 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 để chúng ta đọc, nhưng sẽ không chính xác hoàn toàn, và sẽ có sự khác biệt khi sử dụng các decompiler khác nhau. Thứ có độ tin cậy cao nhất khi thực hiện reverse app là smali code (smali code trong reverse android có vai trò như assembly code trong reverse exe, elf vậy).

Mình chỉ giới thiệu sơ qua như vậy thôi. Giờ thì chúng ta sẽ bắt tay vào việc path lại app.

Đầu tiên chúng ta sẽ decompile file apk bằng apktool

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

Kết quả sẽ được folder three với các sub folder, file

*

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

Mở file three/smali/com/hellocmu/picoctf/Flagstaff
Hill.smali

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

*

Chúng ta sẽ chú ý vào hàm get
Flag, chỗ mình gạch chân ->nope tương ứng với return nope trong code java. Bây giờ cùng xem lại code java:

Thứ nhất: chúng ta cần hàm get
Flag phải return yep thay vì return nope
Thứ hai: cả hai hàm yep và nope đều có cùng argument

=> Vậy, để get
Flag return yep thì chúng ta chỉ cần đổi ->nope thành ->yep, sau đó save lại file.

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

Khi đã sửa được code theo ý muốn, chúng ta cần từ các file đó build ra file apk mới. apktool cũng có chức năng cho phép build ra file apk sau khi sửa code, chỉ cần chạy lệnh: java -jar apktool_2.4.1.jar b three

*

File apk mới nằm tại thư mục three/dist. Xóa app cũ trong giả lập đi và cài lại app mới thôi chứ còn gì nữa đúng không?

*

File three.apk mới này không cài được ngay đâu, chúng ta cần làm tiếp bước cuối cùng.

Sign apk

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

keytool -genkeypair -v -keystore key.keystore -alias publishingdoc -keyalg RSA -keysize 2048 -validity 10000jarsigner -verbose -sigalg SHA1with
RSA -digestalg SHA1 -keystore ./key.keystore %1 publishingdoc
Đổi tên file thành sign-apk.bat sau đó 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 để “123123” hết. Lệnh đầu tiên sẽ tạo key.keystore, lệnh thứ 2 sẽ sign apk bằng key vừa tạo.

*

*

Như vậy là chúng ta đã sign thành công file apk patched. Giờ chỉ cần xóa ứng dụng cũ trong giả lập, cài ứng dụng mới đã patch vào và bấm nút để nhận flag.

Xem thêm: Sinh năm 1998 tuổi mậu dần hợp hướng bàn làm việc hợp tuổi mậu dần

*

Flag: pico
CTF{tis.but.a.scratch}

Qua bài viết thì chắc hẳn các bạn đều nắm được những kiến thức cơ bản để làm các bài CTF reverse apk rồi đúng không? Nếu có bất cứ thắc mắc gì, hãy comment ở phía dưới bài viết để chúng ta có thể cùng thảo luận nhé.

Leave a Reply

Your email address will not be published. Required fields are marked *