当前位置:网站首页>[Android reverse] function interception (CPU cache mechanism | CPU cache mechanism causes function interception failure)
[Android reverse] function interception (CPU cache mechanism | CPU cache mechanism causes function interception failure)
2022-07-04 06:21:00 【Programmer community】
List of articles
- One 、CPU Cache mechanism
- Two 、CPU Cache mechanism Lead to Function interception failed
One 、CPU Cache mechanism
CPU In the architecture model , Instructions At the beginning , Store in memory , Such as : /proc/pid/maps Each of the .so Dynamic libraries have an address in memory , Instructions are stored in the dynamic library ;
CPU And The access rate between memories is relatively low , The low here is with CPU Access register comparison , CPU The speed at which registers are accessed > CPU Speed of accessing memory > CPU The speed at which the disk is accessed ;
In order to improve CPU visit Memory The speed of , stay CPU A piece is prepared inside Cache , Instructions in memory are not put directly into CPU , Instead, put it in the cache first , Then read from the cache to the register for instruction operation ;
If CPU The instruction to be accessed is just in the cache , Then you can execute at high speed Code instructions , At the same time of execution , The subsequent instructions are continuously loaded into the cache , So that's a guarantee CPU Efficient execution of instructions ;
Two 、CPU Cache mechanism Lead to Function interception failed
In the last blog 【Android reverse 】 Function interception principle ( By modifying the GOT Global offset table interception function | Function interception is realized by adding jump code to the actually called function ) Reliable function interception scheme in , Recommended " Add jump code to the actually called function to realize function interception " The scheme implements function interception ;
The above scheme needs to be implemented in The function actually called in , Write a jump instruction , The function of the write instruction is stored in memory , It can only be written in memory , CPU The cache of is entirely composed of CPU Internal hardware call , External code cannot access the cache ;
Here is a question , stay Insert jump code into the intercepted function , If the function has been loaded into CPU In the cache of , that Modify memory , Can't make CPU Execute the modified code instruction ;
CPU Medium The cache is Sort by command rate , The more frequently used functions , The higher the priority , The less likely it is to be removed ;
If the function to be intercepted , Call frequency is very high , Maybe the modified function will always reside in CPU In cache , Just The function has been unable to be intercepted ;
And that leads to this Function interception , unable 100% success ;
边栏推荐
- Arcpy uses the updatelayer function to change the symbol system of the layer
- 17-18. Dependency scope and life cycle plug-ins
- Reading notes of Clickhouse principle analysis and Application Practice (4)
- QT get random color value and set label background color code
- 云原生——上云必读之SSH篇(常用于远程登录云服务器)
- Sleep quality today 78 points
- Which water in the environment needs water quality monitoring
- Leakage detection relay jy82-2p
- 复合非线性反馈控制(二)
- Detectron:训练自己的数据集——将自己的数据格式转换成COCO格式
猜你喜欢
Design and implementation of redis 7.0 multi part AOF
Inputstream/outputstream (input and output of file)
C实现贪吃蛇小游戏
gslb(global server load balance)技术的一点理解
Layoutmanager layout manager: flowlayout, borderlayout, GridLayout, gridbaglayout, CardLayout, BoxLayout
Kubernets first meeting
JS execution mechanism
双色球案例
Error CVC complex type 2.4. a: Invalid content beginning with element 'base extension' was found. Should start with one of '{layoutlib}'.
Sword finger offer II 038 Daily temperature
随机推荐
Leetcode question brushing record | 206_ Reverse linked list
How to choose the middle-aged crisis of the testing post? Stick to it or find another way out? See below
How to expand all collapse panels
配置交叉编译工具链和环境变量
Configure cross compilation tool chain and environment variables
740. Delete and get points
2022.7.2-----leetcode.871
Experience weekly report no. 102 (July 4, 2022)
Design and implementation of redis 7.0 multi part AOF
C实现贪吃蛇小游戏
Learning multi-level structural information for small organ segmentation
px em rem的区别
Compound nonlinear feedback control (2)
Weekly summary (*63): about positive energy
微信小程序使用rich-text中图片宽度超出问题
The difference between PX EM rem
C语言练习题(递归)
QT releases multilingual International Translation
Fast power (template)
27-31. Dependency transitivity, principle