@@ -468,6 +468,18 @@ <h1>Source code for libdebug.architectures.amd64.amd64_ptrace_register_holder</h
468
468
< span class ="s2 "> "rip"</ span > < span class ="p "> ,</ span >
469
469
< span class ="p "> ]</ span >
470
470
471
+ < span class ="n "> AMD64_SPECIAL_REGS</ span > < span class ="o "> =</ span > < span class ="p "> [</ span >
472
+ < span class ="s2 "> "eflags"</ span > < span class ="p "> ,</ span >
473
+ < span class ="s2 "> "cs"</ span > < span class ="p "> ,</ span >
474
+ < span class ="s2 "> "ss"</ span > < span class ="p "> ,</ span >
475
+ < span class ="s2 "> "ds"</ span > < span class ="p "> ,</ span >
476
+ < span class ="s2 "> "es"</ span > < span class ="p "> ,</ span >
477
+ < span class ="s2 "> "fs"</ span > < span class ="p "> ,</ span >
478
+ < span class ="s2 "> "gs"</ span > < span class ="p "> ,</ span >
479
+ < span class ="s2 "> "fs_base"</ span > < span class ="p "> ,</ span >
480
+ < span class ="s2 "> "gs_base"</ span > < span class ="p "> ,</ span >
481
+ < span class ="p "> ]</ span >
482
+
471
483
472
484
< span class ="k "> def</ span > < span class ="nf "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="n "> name</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> property</ span > < span class ="p "> :</ span >
473
485
< span class ="k "> def</ span > < span class ="nf "> getter</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> Amd64Registers</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> int</ span > < span class ="p "> :</ span >
@@ -722,6 +734,13 @@ <h1>Source code for libdebug.architectures.amd64.amd64_ptrace_register_holder</h
722
734
< span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _vector_fp_registers</ span > </ div >
723
735
724
736
737
+ < div class ="viewcode-block " id ="Amd64PtraceRegisterHolder.provide_special_regs ">
738
+ < a class ="viewcode-back " href ="../../../../libdebug.architectures.amd64.html#libdebug.architectures.amd64.amd64_ptrace_register_holder.Amd64PtraceRegisterHolder.provide_special_regs "> [docs]</ a >
739
+ < span class ="k "> def</ span > < span class ="nf "> provide_special_regs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> Amd64PtraceRegisterHolder</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> list</ span > < span class ="p "> [</ span > < span class ="nb "> str</ span > < span class ="p "> ]:</ span >
740
+ < span class ="w "> </ span > < span class ="sd "> """Provide the list of special registers, which are not intended for general-purpose use."""</ span >
741
+ < span class ="k "> return</ span > < span class ="n "> AMD64_SPECIAL_REGS</ span > </ div >
742
+
743
+
725
744
< div class ="viewcode-block " id ="Amd64PtraceRegisterHolder.apply_on_regs ">
726
745
< a class ="viewcode-back " href ="../../../../libdebug.architectures.amd64.html#libdebug.architectures.amd64.amd64_ptrace_register_holder.Amd64PtraceRegisterHolder.apply_on_regs "> [docs]</ a >
727
746
< span class ="k "> def</ span > < span class ="nf "> apply_on_regs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> Amd64PtraceRegisterHolder</ span > < span class ="p "> ,</ span > < span class ="n "> target</ span > < span class ="p "> :</ span > < span class ="n "> Amd64Registers</ span > < span class ="p "> ,</ span > < span class ="n "> target_class</ span > < span class ="p "> :</ span > < span class ="nb "> type</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
@@ -771,6 +790,9 @@ <h1>Source code for libdebug.architectures.amd64.amd64_ptrace_register_holder</h
771
790
< span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="n "> name_16</ span > < span class ="p "> ,</ span > < span class ="n "> _get_property_16</ span > < span class ="p "> (</ span > < span class ="n "> name_64</ span > < span class ="p "> ))</ span >
772
791
< span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="n "> name_8l</ span > < span class ="p "> ,</ span > < span class ="n "> _get_property_8l</ span > < span class ="p "> (</ span > < span class ="n "> name_64</ span > < span class ="p "> ))</ span >
773
792
793
+ < span class ="k "> for</ span > < span class ="n "> name</ span > < span class ="ow "> in</ span > < span class ="n "> AMD64_SPECIAL_REGS</ span > < span class ="p "> :</ span >
794
+ < span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> target_class</ span > < span class ="p "> ,</ span > < span class ="n "> name</ span > < span class ="p "> ,</ span > < span class ="n "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="n "> name</ span > < span class ="p "> ))</ span >
795
+
774
796
< span class ="c1 "> # setup special registers</ span >
775
797
< span class ="n "> target_class</ span > < span class ="o "> .</ span > < span class ="n "> rip</ span > < span class ="o "> =</ span > < span class ="n "> _get_property_64</ span > < span class ="p "> (</ span > < span class ="s2 "> "rip"</ span > < span class ="p "> )</ span >
776
798
0 commit comments