Bài viết này chủ yếu hướng dẫn fix lỗi Failed to attach: unexpected early end-of-stream hoặc Failed to attach: need Gadget to attach on jailed iOS; its default location is: /Users/<username>/.cache/frida/gadget-ios.dylib
Lỗi này mình chỉ gặp trên rootless jailbreak
Đầu tiên là cài frida trên Mac
1 |
pip install frida frida-tools |
Trên iPhone mở Sileo, vào phần “Nguồn” rồi thêm địa chỉ https://build.frida.re
Sau đó vào mục tìm kiếm tìm Frida và tiến hành cài đặt. Khi cài xong thì frida-server sẽ tự động chạy, tại máy Mac có thể chạy lệnh trên terminal để chạy app, ví dụ:
1 |
frida -U -f com.highaltitudehacks.DVIAswiftv2.X9KR8YYZ4B -l read-plist-file.js |
Lúc setup theo các bước như “sách giáo khoa” mà gặp lỗi Failed to attach: unexpected early end-of-stream thì mình hơi ??? bởi vì nhìn thông báo lỗi cũng không hiểu lắm, trên android cũng không bị bao giờ 🙁
Và sau mội thời gian mày mò tìm hiểu thì giải pháp mà mình tìm được là set listen address cho frida-server
Theo mặc đinh, khi cài frida bằng sileo thì frida-server sẽ được đặt tại /var/jb/usr/sbin/frida-server (trong trường hợp rootless), kill process của nó để set lại host không kill được vì nó sẽ tự chạy lại, nếu chạy file đó kèm theo các tham số set host sẽ gặp lỗi vì port mặc định đã được sử dụng…
Giải pháp là copy file đó đến thư mục /var/jb/usr/ sau đó xoá file /var/jb/usr/sbin/frida-server đi, tiếp đó là chạy frida-server vừa copy và set host cho nó, cụ thể như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# ssh vào máy iPhone, mật khẩu mặc định là alpine ssh root@<ip iPhone> # Copy frida-server cp /var/jb/usr/sbin/frida-server /var/jb/usr # Xóa frida-server cũ rm /var/jb/usr/sbin/frida-server # Tìm process của frida-server cũ và kill nó ps aux | grep frida # kết quả có dạng # root 6464 0.0 0.6 407930208 12048 ?? Ss 11:10PM 0:00.03 /var/jb/usr/sbin/frida-server # kill frida-server cũ bằng lệnh kill -9 6464 # Chạy frida server mới cd /var/jb/usr/ ./frida-server -l <ip máy iPhone> & |
Sau đó thì lệnh frida -U -f <package> -l <script> sẽ hoạt động.
Nếu gặp lỗi Failed to attach: need Gadget to attach on jailed iOS; its default location is: /Users/<username>/.cache/frida/gadget-ios.dylib
thì vào https://github.com/frida/frida/releases tìm file frida-gadget-<frida-version>-ios-universal.dylib.gz down về giải nén ra, đổi tên thành gadget-ios.dylib rồi chuyển vào thư mục ~/.cache/frida là xong
Đừng tải file frida-gadget-<frida-version>-mac-universal.dylib.gz nhé 😀