2016-12-29 18 views
6

Khi radare2 phân tích một hàm, nó cung cấp các tên biến cục bộ như local_4h cho ebp - 0x4. Nó cũng cung cấp khả năng cung cấp cho các biến này những tên có ý nghĩa hơn khi mục đích của chúng trở nên rõ ràng. Tuy nhiên, sau khi các biến được đổi tên thành nó sẽ trở nên khó khăn hơn để in chúng. Khi tôi nhìn thấy một lệnh như mov eax, dword [ebp - i] tôi phảiCó thể radare2 in biến cục bộ theo tên không?

  1. Nhìn ở đầu tháo gỡ để tìm dòng var int i @ ebp-0xc
  2. Loại pxw @ ebp-0xc
  3. đã đọc hết giá trị của i từ đầu tiên 16 (!) dòng đầu ra
  4. Tìm vị trí của tôi một lần nữa trong tháo dỡ sau khi nó được chuyển từ câu lệnh cuối cùng

nó không phải là một nhiều công việc, nhưng khi tôi nhìn qua rất nhiều hội đồng với nhiều biến nó trở nên tẻ nhạt khá nhanh.

Là câu hỏi tiếp theo, có thể in biến/vị trí mỗi lần thực hiện dừng tại điểm dừng, giống như lệnh "hiển thị" của GDB không?

+0

Điều này có thể làm tốt hơn trong wiki kỹ thuật đảo ngược. – Kupiakos

Trả lời

0

Thay vì pxw @ local_4h, có afvd (một nalyze f bôi v ariables d Hiển thị timeout), trong đó liệt kê tất cả hoặc một biến cụ thể:

[0x00400526]> afvd 
var local_14h = 0x7fff2eab16ac 0x2eab17a000000001 ........ 
var local_20h = 0x7fff2eab16a0 0x00007fff2eab17a8 ........ @rsp rsi stack R W 0x7fff2eab21ec --> stack R W 0x74756f2e612f2e (./a.out) --> ascii 
var local_8h = 0x7fff2eab16b8 0x0000000000000041 A....... ascii 
var local_4h = 0x7fff2eab16bc 0x0040057000000000 [email protected] 

[0x00400526]> .afvd local_14h # note the dot 
var local_14h = 0x7fff2eab16ac 0x2eab17a000000001 ........ 

afvd name lợi nhuận lệnh r2 để hiển thị biến 'tên'. Dấu chấm ở đầu thực hiện lệnh.
Hãy nhớ rằng bạn luôn có thể sử dụng lệnh ? để được giúp đỡ:

[0x00400526]> afv? 
|Usage: afv[rbs] 
| afvr[?]      manipulate register based arguments 
| afvb[?]      manipulate bp based arguments/locals 
| afvs[?]      manipulate sp based arguments/locals 
| afvR [varname]    list addresses where vars are accessed 
| afvW [varname]    list addresses where vars are accessed 
| afva      analyze function arguments/locals 
| afvd name     output r2 command for displaying the value of args/locals in the debugger 
| afvn [old_name] [new_name] rename argument/local 
| afvt [name] [new_type]  change type for given argument/local 
| afv-([name])    remove all or given var 

Trên thực tế vẫn còn có khả năng sử dụng (hầu như) cú pháp tương tự như trong câu hỏi của bạn. Tuy nhiên, các tên biến phải được thêm vào như cờ trước và điều này phải được thực hiện mỗi khi bạn nhập một hàm.

[0x00400526]> .afv* 
[0x00400526]> pxw @ fcnvar.local_14h 
0x7fff2eab16ac 0x00000001 0x2eab17a0 [omitted] 
Các vấn đề liên quan