当前位置:网站首页>[Android reverse] function interception (use cache_flush system function to refresh CPU cache | refresh CPU cache disadvantages | recommended time for function interception)

[Android reverse] function interception (use cache_flush system function to refresh CPU cache | refresh CPU cache disadvantages | recommended time for function interception)

2022-07-04 07:09:00 Programmer community

List of articles

  • One 、 Use cache_flush System function refresh CPU Cache
  • Two 、 Use cache_flush System function refresh CPU The disadvantages of cache
  • 3、 ... and 、 Function intercept recommended timing

One 、 Use cache_flush System function refresh CPU Cache


Use " Add jump code to the actually called function to realize function interception " programme Function interception , Due to the existence CPU Cache mechanism , No guarantee 100% success ;

Here you need to refresh CPU The cache of , call cache_flush System function , Will be CPU All data related to the process in the cache are cleared , Then reload the cache information from memory , At this point, you can put After modification Added jump function Intercepted function , Reload into memory , here CPU You can execute The modified Intercepted function ; Interception effective ;

Two 、 Use cache_flush System function refresh CPU The disadvantages of cache


Use cache_flush System function refresh CPU The disadvantages of cache :

① Performance loss : CPU Rebuild cache , Resulting in reduced execution efficiency , Could cause Caton , Flashback, etc ;

② Affect other processes : Multicore CPU If you refresh Cache , May cause other processes Cache Also refreshed , Affect the execution of other processes ;

③ Affect multithreaded code logic : Multiple threads compete CPU Executive authority , It's empty CPU In cache ,

Multithreaded execution logic Reference resources 【Java Concurrent programming 】 Thread Introduction ( Concurrency type | Thread state | CPU Data caching ) Blog , Java Threads Runtime , Every Java Threads are equipped with a The working memory , Then the working memory starts from Main memory Get data in , Main memory is shared by all working memory ;

  • The working memory Namely Thread Local memory , Which is stored in the main memory Copies of variables , Before using variables in main memory , First copy the variable to the working memory ;
  • When in a thread Modified the data in working memory , At the same time Synchronize the changes of variables to main memory ;

there The worker thread / Local thread amount to CPU Medium L1 / L2 cache , Main memory amount to CPU Medium L3 cache ;

If the cache is cleared , There must be problems with multithreading execution ;

 Insert picture description here

3、 ... and 、 Function intercept recommended timing


Whereas Function interception need Empty CPU Cache There are the above disadvantages , Therefore, it is suggested that Function interception during program initialization , Do not do this while the program is running Function interception ;

If you have to intercept after the program starts , Can only risk Empty CPU Cache , However, it is recommended to intercept all functions at one time , Don't do it frequently Function interception + Empty CPU Cache operation , The more times , The more likely it is to go wrong ;

原网站

版权声明
本文为[Programmer community]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202141545128237.html