2009-10-04 34 views
5

Để tìm hiểu thêm một chút về các hệ thống FreeBSD và * nix nói chung, tôi bắt đầu xem xét các tập tin nhị phân từ trò chơi DEFCON 17 Capture The Flag. Ngay bây giờ, tôi đang đảo ngược nhị phân tucod. Dưới đây là một số thông tin có thể hữu ích về tucod:gdb không nhấn breakpoint

tucod: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 7.2, dynamically linked (uses shared libs), FreeBSD-style, stripped 

Một số thông tin có thể hữu ích khác thu được từ một số phân tích tĩnh ngắn gọn là tucod gắn kết trên cổng 0xDEAD (dễ thương, eh?) Và nếu bạn cung cấp cho nó một mật khẩu cụ thể ("HANGEMHIGH ! ") nó sẽ chơi trò chơi treo cổ với bạn.

Sự cố mà tôi đang gặp phải là tôi không đạt điểm ngắt trong gdb. Cụ thể, điểm ngắt mà tôi đang cố truy cập nằm trong mã xử lý kết nối máy khách. Không có điểm ngắt, mã thực thi như mong đợi. Khi tôi đặt một điểm ngắt trên mã đó, đứa trẻ thoát (thay vì đột nhập vào gdb, như mong đợi). Nếu tôi thiết lập điểm ngắt trước khi máy chủ tắt con, tôi có thể đánh số tiền phạt nhưng sau khi nhấn "tiếp tục", con không tiếp tục xử lý kết nối của tôi (nghĩa là, nó sẽ không hỏi mật khẩu hoặc chơi hang-man).

Kể từ khi dĩa daemon khi nó nhận được một kết nối mới, tôi cố gắng nói với gdb đi theo con bằng lệnh này:

(gdb) set follow-fork-mode child 

Nhưng sau khi đơn bước hướng dẫn sau khi ngã ba, dường như này không hoạt động.

Tôi đã cố gắng tìm kiếm các cuộc gọi đến signal, nghĩ rằng họ đã triển khai trình xử lý SIGINT tùy chỉnh (hoặc tương tự), nhưng chỉ gọi signal mà tôi có thể thấy xử lý SIGCHLD.

breakpoint của tôi trong gdb hiện trông như thế này:

(gdb) info breakpoints 
Num Type   Disp Enb Address What 
1 breakpoint  keep y 0x080497d0 

0x080497d0 là địa chỉ tôi muốn phá vỡ vào trong mã xử lý khách hàng.

Tôi sắp xếp mới để phân tích phần mềm trên hệ thống * nix và có thể sử dụng một số gợi ý. Tôi nên làm cách nào khác để khắc phục sự cố vì sao GDB sẽ không đạt đến điểm ngắt của tôi? Hoặc có điều gì đó quan trọng tôi chỉ nhìn?

Có một torrent có sẵn với tất cả các tệp nhị phân trò chơi cho những ai quan tâm đến việc xem trực tiếp nhị phân.

Trả lời

2

Nhìn here để tìm câu trả lời. Tóm lại, có vẻ như GDB chỉ hỗ trợ chế độ gỡ lỗi con trên HP-UX và Linux.

+0

Cảm ơn! Các công việc xung quanh tôi làm việc cho điều này là chỉ cần vá các nhị phân và có cha mẹ thực hiện phần của đứa trẻ. Đối với tôi, điều này đơn giản hơn là cố gắng thêm một cuộc gọi vào giấc ngủ, vì tôi không có nguồn. Nhưng một lời giải thích về những gì đã xảy ra là những gì tôi đã thực sự tìm kiếm. Cảm ơn một lần nữa. – mrduclaw

+0

@Nikolai liên kết bị hỏng – nouveau

Các vấn đề liên quan