Hướng dẫn chèn code vào đoạn mã smali của file apk.

Malware

Wh------
08/01/2015
41
56 bài viết
Hướng dẫn chèn code vào đoạn mã smali của file apk.
Hướng dẫn chèn code vào đoạn mã smali của file apk.


I. Mở đầu
_ Ứng dụng Android thường được viết bằng Java và thực thi trên Virtual Machine, byte code chạy trên Dalvik Virtual Machine (DVM) được chuyển đổi từ JVM byte code truyền thống sang dex-format(.dex file) bởi convertion tool dx (lưu trữ tại android-sdk/platforms/android-X/tools/lib/ với các phiên bản trước đây, ở phiên bản Android SDK mới nhất được lưu tại android-sdk/platform-tools/lib/).
_ Mã code thực thi trên DVM được gọi là mã Smali, có tập lệnh phức tạp giống như Assembly trên Windows. Để đọc và hiểu mã Smali là một việc không hề dễ dàng.
_ Việc chèn code java vào một ứng dụng Android có sẵn khá phức tạp do cấu trúc ngôn ngữ java khi decompile sẽ không được bảo toàn nguyên vẹn, khó có thể re-build lại ứng dụng để hoạt động bình thường.
_ Tuy nhiên, chèn code smali vào ứng dụng là một việc khả thi, ta hoàn toàn có thể re-build lại ứng dụng để chạy bình thường. Đây là cách thông dụng khi cần mod ứng dụng, ROM, …
_ Các hacker hoặc những người có ý đồ xấu hoàn toàn có thể chèn code smali vào ứng dụng nào đó nhằm thực hiện một hành vi độc hại nào đó.
II. Yêu cầu:
· Android SDK, virtual emulator hoặc 1 device thật
· JAVA SDK
· NotePad ++
· Nắm được kiến thức cơ bản về Android, cấu trúc file apk, tập lệnh smali
· Apktool & baksmali/smali + Signer for all GB/ICS/JB/KK ROM v3 (4.4 Kitkat support/optimized) (
)

III. Các bước thực hiện

1. Dùng apktool hoặc công cụ baksmali disassemble file apk thành các file smali.
14899399431.png

2. Phân tích code smali để biết cách hoạt động của ứng dụng
14899399432.png


3.
Chèn code vào file smali.
14899399433.png


4. Thực hiện Reassemble file apk và zip/ sign apk.
1.jpg



IV.
Minh họa

_ Chèn code vào ứng dụng Mobile Defender – một ứng dụng antivirus giả mạo, điều hướng người sử dụng đến trang web http://pdblprotect.com
_ Mình sử dụng apktool thay cho công cụ smali/ backsmali đơn thuần vì nó decompile file apk thành các file smali, resource, AndroidManifest nên rất thuận tiện cho việc phân tích code smali.

1. Decompile file apk

_ Download bộ công cụ Recompile & Decompile ở trên, giải nén, copy file apk vào thư mục apktool.
_ Mở cmd tại thư mục apktool, chạy dòng lệnh :

14899399434.png


Code:
apktool d [apk_name].apk

_Thu được thư mục:

14899399435.png


_Cấu trúc thư mục:


14899399436.png


2. Phân tích ứng dụng
_Phân tích AndroidManifest.xml để nắm được các permission, receiver, MainActivity .. của ứng dụng.
_Các file smali cần phân tích nằm trong thư mục smali:

14899399437.png



_ Dựa vào AndroidManifest ta xác định được MainActivity :
" smalicomexampleandroiddefender2MainActivity.smali"
_Phân tích AndroidManifest ta chú ý đến permission :
"android.permission.INTERNET"
_Qua khảo sát một số activity của ứng dụng, phát hiện trong PayFormActivity.smali có sử dụng đối tượng lớp WebView dẫn người sử dụng truy cập đến một trang web nào đó

2.jpg



_Ta sẽ chèn code vào trong file smali này để ‘bắt’ được đoạn link mà ứng dụng sử dụng.
3. Chèn code

Ta sẽ chèn đoạn một code vào trong đoạn code smali ở trên nhằm hiện một AlertDialog thông báo đường link mà ứng dụng truy cập.

Code:
.const/4 v6, 0x0
.local v4, "link":Ljava/lang/String;
new-instance v5, Landroid/app/AlertDialog$Builder;

invoke-direct {v5, p0},Landroid/app/AlertDialog$Builder;>(Landroid/content/Context; )V

.local v5, "buidler":Landroid/app/AlertDialog$Builder;

const-string v7, "Cu1ea3nh bu00e1o"

invoke-virtual {v5, v7}, Landroid/app/AlertDialog$Builder;>setTitle(Ljava/lang/CharSequence; )Landroid/app/AlertDialog$Builder;

invoke-virtual {v5, v4}, Landroid/app/AlertDialog$Builder;>setMessage(Ljava/lang/CharSequence;) Landroid/app/AlertDialog$Builder;

invoke-virtual {v5, v6}, Landroid/app/AlertDialog$Builder;>setCancelable(Z)Landroid/app/AlertDialog$Builder;

move-result-object v5

const-string v7, "ok"

invoke-virtual {v5, v7, v6}, Landroid/app/AlertDialog$Builder;>setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;

invoke-virtual {v5},Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;

move-result-object v5
invoke-virtual {v5}, Landroid/app/AlertDialog;->show()V


_vị trí cần chèn

3.jpg



++Chú ý:
_Để tránh việc khi rebuild lại ứng dụng không chạy được, cần đọc qua từng lệnh smali trong code gốc để có cách sử dụng hợp lý các biến cục bộ (số biến cục bộ được khai báo trong thân từng hàm).
_Để tạo code smali, cách đơn giản nhất bạn hãy dùng một IDE như Eclipse hoặc Android Studio, build một đoạn code với nội dung mong muốn, rồi decompile file apk để lấy code smali tương ứng!

4. Recompile file apk
_Sau khi chèn code vào file smali, chạy apktool để rebuild file apk:
Code:
apktool b -f -d [folder_decompiled_name]


148993994310.png



_ File apk thu được nằm trong đường dẫn :
" fake_avdistfake_av.apk"

5. Sign apk
Sign apk để đảm bảo mỗi ứng dụng Android có một chữ kí riêng biệt, trước khi có thể cài đặt vào thiết bị.
Code:

java -jar SignApk.jar testkey.x509.pem testkey.pk8 [apk_name].apk [apk_name_signed].apk

_ Copy file apk thu được từ bước 4 để vào folder Sign & Zipalign tool đã giải nén ở trên

148993994311.png


_Ta thu được file fake_av_s.apk


6. Zipalign file apk
Zipalign nhằm nén và tối ưu hóa cấu trúc file apk.
Code:
zipalign -fv 4 [apk_name_signed].apk [apk_name_zip].apk



148993994312.png



_ Đưa file apk fake_av_z.apk thu được vào smartphone hoặc emulator để xem kết quả. :D

Kết quả


_Ứng dụng Mobile Defender khi chưa chèn code smali

148993994313.png


_ Ứng dụng đã được chèn một đoạn AlertDialog cảnh báo url link mà ứng dụng đang truy cập.

148993994314.png


Cám ơn các bạn đã theo dõi bài viết.
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Capture.PNG

mình cần giúp đỡ mình gõ lệnh apktool d không có như này đây là zalo của mình 01649669380 giúp mình vớ thanks nhiều
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Hướng dẫn chèn code vào đoạn mã smali của file apk.


I. Mở đầu
_ Ứng dụng Android thường được viết bằng Java và thực thi trên Virtual Machine, byte code chạy trên Dalvik Virtual Machine (DVM) được chuyển đổi từ JVM byte code truyền thống sang dex-format(.dex file) bởi convertion tool dx (lưu trữ tại android-sdk/platforms/android-X/tools/lib/ với các phiên bản trước đây, ở phiên bản Android SDK mới nhất được lưu tại android-sdk/platform-tools/lib/).
_ Mã code thực thi trên DVM được gọi là mã Smali, có tập lệnh phức tạp giống như Assembly trên Windows. Để đọc và hiểu mã Smali là một việc không hề dễ dàng.
_ Việc chèn code java vào một ứng dụng Android có sẵn khá phức tạp do cấu trúc ngôn ngữ java khi decompile sẽ không được bảo toàn nguyên vẹn, khó có thể re-build lại ứng dụng để hoạt động bình thường.
_ Tuy nhiên, chèn code smali vào ứng dụng là một việc khả thi, ta hoàn toàn có thể re-build lại ứng dụng để chạy bình thường. Đây là cách thông dụng khi cần mod ứng dụng, ROM, …
_ Các hacker hoặc những người có ý đồ xấu hoàn toàn có thể chèn code smali vào ứng dụng nào đó nhằm thực hiện một hành vi độc hại nào đó.

II. Yêu cầu:
· Android SDK, virtual emulator hoặc 1 device thật
· JAVA SDK
· NotePad ++
· Nắm được kiến thức cơ bản về Android, cấu trúc file apk, tập lệnh smali
· Apktool & baksmali/smali + Signer for all GB/ICS/JB/KK ROM v3 (4.4 Kitkat support/optimized) ()

III. Các bước thực hiện

1. Dùng apktool hoặc công cụ baksmali disassemble file apk thành các file smali.
14899399431.png

2. Phân tích code smali để biết cách hoạt động của ứng dụng
14899399432.png


3. Chèn code vào file smali.

14899399433.png


4. Thực hiện Reassemble file apk và zip/ sign apk.
14899399433.jpg



IV. Minh họa


_ Chèn code vào ứng dụng Mobile Defender – một ứng dụng antivirus giả mạo, điều hướng người sử dụng đến trang web http://pdblprotect.com
_ Mình sử dụng apktool thay cho công cụ smali/ backsmali đơn thuần vì nó decompile file apk thành các file smali, resource, AndroidManifest nên rất thuận tiện cho việc phân tích code smali.

1. Decompile file apk

_ Download bộ công cụ Recompile & Decompile ở trên, giải nén, copy file apk vào thư mục apktool.
_ Mở cmd tại thư mục apktool, chạy dòng lệnh :

14899399434.png


Code:


_Thu được thư mục:

14899399435.png


_Cấu trúc thư mục:


14899399436.png


2. Phân tích ứng dụng
_Phân tích AndroidManifest.xml để nắm được các permission, receiver, MainActivity .. của ứng dụng.
_Các file smali cần phân tích nằm trong thư mục smali:

14899399437.png



_ Dựa vào AndroidManifest ta xác định được MainActivity :

_Phân tích AndroidManifest ta chú ý đến permission :

_Qua khảo sát một số activity của ứng dụng, phát hiện trong PayFormActivity.smali có sử dụng đối tượng lớp WebView dẫn người sử dụng truy cập đến một trang web nào đó

14899399438.jpg



_Ta sẽ chèn code vào trong file smali này để ‘bắt’ được đoạn link mà ứng dụng sử dụng.
3. Chèn code

Ta sẽ chèn đoạn một code vào trong đoạn code smali ở trên nhằm hiện một AlertDialog thông báo đường link mà ứng dụng truy cập.

Code:



_vị trí cần chèn

14899399439.jpg



++Chú ý:
_Để tránh việc khi rebuild lại ứng dụng không chạy được, cần đọc qua từng lệnh smali trong code gốc để có cách sử dụng hợp lý các biến cục bộ (số biến cục bộ được khai báo trong thân từng hàm).
_Để tạo code smali, cách đơn giản nhất bạn hãy dùng một IDE như Eclipse hoặc Android Studio, build một đoạn code với nội dung mong muốn, rồi decompile file apk để lấy code smali tương ứng!


4. Recompile file apk
_Sau khi chèn code vào file smali, chạy apktool để rebuild file apk:
Code:



148993994310.png



_ File apk thu được nằm trong đường dẫn :

5. Sign apk
Sign apk để đảm bảo mỗi ứng dụng Android có một chữ kí riêng biệt, trước khi có thể cài đặt vào thiết bị.
Code:



_ Copy file apk thu được từ bước 4 để vào folder Sign & Zipalign tool đã giải nén ở trên

148993994311.png


_Ta thu được file fake_av_s.apk


6. Zipalign file apk
Zipalign nhằm nén và tối ưu hóa cấu trúc file apk.
Code:




148993994312.png



_ Đưa file apk fake_av_z.apk thu được vào smartphone hoặc emulator để xem kết quả. :D

Kết quả


_Ứng dụng Mobile Defender khi chưa chèn code smali

148993994313.png


_ Ứng dụng đã được chèn một đoạn AlertDialog cảnh báo url link mà ứng dụng đang truy cập.

148993994314.png


Cám ơn các bạn đã theo dõi bài viết.


cho mình xin zalo với mình cần giúp đỡ
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Cho mình hỏi là mấy cái hình vmware có liên quan gì tới bài viết không?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Ảnh bị lỗi trong quá trình nâng cấp forum đã được sửa các bạn nhé :)
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: whf
Comment
Bên trên