@@ -469,13 +469,13 @@ <h1>Source code for libdebug.architectures.amd64.amd64_stack_unwinder</h1><div c
469
469
< span class ="k "> while</ span > < span class ="n "> current_rbp</ span > < span class ="p "> :</ span >
470
470
< span class ="k "> try</ span > < span class ="p "> :</ span >
471
471
< span class ="c1 "> # Read the return address</ span >
472
- < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="nb "> int</ span > < span class ="o "> .</ span > < span class ="n "> from_bytes</ span > < span class ="p "> (</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> current_rbp</ span > < span class ="o "> +</ span > < span class ="mi "> 8</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> ],</ span > < span class ="n "> byteorder</ span > < span class ="o "> =</ span > < span class ="s2 "> "little"</ span > < span class ="p "> )</ span >
472
+ < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="nb "> int</ span > < span class ="o "> .</ span > < span class ="n "> from_bytes</ span > < span class ="p "> (</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> current_rbp</ span > < span class ="o "> +</ span > < span class ="mi "> 8</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> , </ span > < span class =" s2 " > "absolute" </ span > < span class =" p " > ],</ span > < span class ="n "> byteorder</ span > < span class ="o "> =</ span > < span class ="s2 "> "little"</ span > < span class ="p "> )</ span >
473
473
474
474
< span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="nb "> any</ span > < span class ="p "> (</ span > < span class ="n "> vmap</ span > < span class ="o "> .</ span > < span class ="n "> start</ span > < span class ="o "> <=</ span > < span class ="n "> return_address</ span > < span class ="o "> <</ span > < span class ="n "> vmap</ span > < span class ="o "> .</ span > < span class ="n "> end</ span > < span class ="k "> for</ span > < span class ="n "> vmap</ span > < span class ="ow "> in</ span > < span class ="n "> vmaps</ span > < span class ="p "> ):</ span >
475
475
< span class ="k "> break</ span >
476
476
477
477
< span class ="c1 "> # Read the previous rbp and set it as the current one</ span >
478
- < span class ="n "> current_rbp</ span > < span class ="o "> =</ span > < span class ="nb "> int</ span > < span class ="o "> .</ span > < span class ="n "> from_bytes</ span > < span class ="p "> (</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> current_rbp</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> ],</ span > < span class ="n "> byteorder</ span > < span class ="o "> =</ span > < span class ="s2 "> "little"</ span > < span class ="p "> )</ span >
478
+ < span class ="n "> current_rbp</ span > < span class ="o "> =</ span > < span class ="nb "> int</ span > < span class ="o "> .</ span > < span class ="n "> from_bytes</ span > < span class ="p "> (</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> current_rbp</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> , </ span > < span class =" s2 " > "absolute" </ span > < span class =" p " > ],</ span > < span class ="n "> byteorder</ span > < span class ="o "> =</ span > < span class ="s2 "> "little"</ span > < span class ="p "> )</ span >
479
479
480
480
< span class ="n "> stack_trace</ span > < span class ="o "> .</ span > < span class ="n "> append</ span > < span class ="p "> (</ span > < span class ="n "> return_address</ span > < span class ="p "> )</ span >
481
481
< span class ="k "> except</ span > < span class ="p "> (</ span > < span class ="ne "> OSError</ span > < span class ="p "> ,</ span > < span class ="ne "> ValueError</ span > < span class ="p "> ):</ span >
@@ -507,17 +507,17 @@ <h1>Source code for libdebug.architectures.amd64.amd64_stack_unwinder</h1><div c
507
507
< span class ="sd "> Returns:</ span >
508
508
< span class ="sd "> int: The return address.</ span >
509
509
< span class ="sd "> """</ span >
510
- < span class ="n "> instruction_window</ span > < span class ="o "> =</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> regs</ span > < span class ="o "> .</ span > < span class ="n "> rip</ span > < span class ="p "> ,</ span > < span class ="mi "> 4</ span > < span class ="p "> ]</ span >
510
+ < span class ="n "> instruction_window</ span > < span class ="o "> =</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> regs</ span > < span class ="o "> .</ span > < span class ="n "> rip</ span > < span class ="p "> ,</ span > < span class ="mi "> 4</ span > < span class ="p "> , </ span > < span class =" s2 " > "absolute" </ span > < span class =" p " > ]</ span >
511
511
512
512
< span class ="c1 "> # Check if the instruction window is a function preamble and handle each case</ span >
513
513
< span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
514
514
515
515
< span class ="k "> if</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _preamble_state</ span > < span class ="p "> (</ span > < span class ="n "> instruction_window</ span > < span class ="p "> )</ span > < span class ="o "> ==</ span > < span class ="mi "> 0</ span > < span class ="p "> :</ span >
516
- < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> regs</ span > < span class ="o "> .</ span > < span class ="n "> rbp</ span > < span class ="o "> +</ span > < span class ="mi "> 8</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> ]</ span >
516
+ < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> regs</ span > < span class ="o "> .</ span > < span class ="n "> rbp</ span > < span class ="o "> +</ span > < span class ="mi "> 8</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> , </ span > < span class =" s2 " > "absolute" </ span > < span class =" p " > ]</ span >
517
517
< span class ="k "> elif</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _preamble_state</ span > < span class ="p "> (</ span > < span class ="n "> instruction_window</ span > < span class ="p "> )</ span > < span class ="o "> ==</ span > < span class ="mi "> 1</ span > < span class ="p "> :</ span >
518
- < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> regs</ span > < span class ="o "> .</ span > < span class ="n "> rsp</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> ]</ span >
518
+ < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> regs</ span > < span class ="o "> .</ span > < span class ="n "> rsp</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> , </ span > < span class =" s2 " > "absolute" </ span > < span class =" p " > ]</ span >
519
519
< span class ="k "> else</ span > < span class ="p "> :</ span >
520
- < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> regs</ span > < span class ="o "> .</ span > < span class ="n "> rsp</ span > < span class ="o "> +</ span > < span class ="mi "> 8</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> ]</ span >
520
+ < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> memory</ span > < span class ="p "> [</ span > < span class ="n "> target</ span > < span class ="o "> .</ span > < span class ="n "> regs</ span > < span class ="o "> .</ span > < span class ="n "> rsp</ span > < span class ="o "> +</ span > < span class ="mi "> 8</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> , </ span > < span class =" s2 " > "absolute" </ span > < span class =" p " > ]</ span >
521
521
522
522
< span class ="k "> return</ span > < span class ="nb "> int</ span > < span class ="o "> .</ span > < span class ="n "> from_bytes</ span > < span class ="p "> (</ span > < span class ="n "> return_address</ span > < span class ="p "> ,</ span > < span class ="n "> byteorder</ span > < span class ="o "> =</ span > < span class ="s2 "> "little"</ span > < span class ="p "> )</ span > </ div >
523
523
0 commit comments