对绝对地址的操作

article/2025/9/10 13:16:20


嵌入式系統中往往需要讓程序跳到內存的某個地址去執行,比如想讓程序跳轉到絕對地址是0x100000去執行,應該怎麼做?

這樣:

* (( void  ( * )( void )) 0x100000 )();

即可。

解釋一下,想讓程序跳到某個絕對地址去執行得用函數指針,這或許也是函數指針的一個妙用吧!

語句void(*)(void)聲明了一個返回值是void、無參數的函數的函數指針,這個指針沒有名字但有指向的地址。就是說地址0x100000是一個返回值是void、無參數的函數的起始點,其實就是函數名,這里也印證了函數名就是函數地址。拆開看看:

void  ( * )( void ) 0x100000

這個家伙是個指針,函數的實際地址在它指向的地方,所以需要取內容,于是就*(void (*)(void)0x100000)。這樣一來這個表達式就是這個“函數的地址了”,也就是函數名,函數名後面打個括號加上參數就行了,于是最後就是*(void (*)(void)0x100000)()。

也可以這樣理解:

首先要將0x100000強制轉換成函數指針,即:

( void  ( * )( void )) 0x100000

然後再調用它:

(( void  ( * )( void )) 0x100000 )();

用typedef可以看得更直觀些:

typedef  void ( * )() voidFuncPtr;
* ((voidFuncPtr) 0x100000 )();

 

寫到這里我想到了另外一個問題:想要讀寫絕對地址0x00001234處的數據(4個字節)咋辦?

你可能很快就會這樣做:

unsigned  long   * =   0x00001234 ;
//
int  var1  =   * p;
//
* =   0x1111 ;

這樣不錯,不過你為了讀寫這四個字節的區域聲明了一個指針變量,指針變量本身占4個字節,如果p以後還有很多工作也就罷了,如果它從此就不再使用了,那么這樣做就純屬沒必要,還高的變量多看花了眼,可以這樣:

( * ((unsigned  long   * ) 0x00001234 ))

 

//
int  var  =  ( int )( * (( volatile  unsigned  long   * ) 0x00001234 ));
//
* (( volatile  unsigned  long   * ) 0x00001234 =   0x1111 ;

嵌入式系統中常用的讀寫寄存器的方法就是這樣,比如:

#define  REG_1 (*((volatile unsigned long *)0x00001234))

那么就可以隨意的操作寄存器REG_1了。


http://chatgpt.dhexx.cn/article/bF4v65iN.shtml

相关文章

相对地址和绝对地址的理解

相对地址和绝对地址 个人对地址的理解 第一## 标题 第二,全部的地址

手机中geetest是什么文件_手机中的英文文件夹都表示什么意思?哪些是可以删除的?...

现在我们使用手机会积攒下大量的垃圾文件,所占的内存就会越来越多,长此以久手机就会开始卡顿。但当我们打开手机内存想要清理一下的时候又会发现文件夹全是英文名,一个也看不懂,生怕删错了重要文件搞坏手机。其实因为我们手机使用…

软件ETest

ETest简介 ETest是一款软件开发环境IDE,基于该IDE可以完成嵌入式系统测试软件的开发与部署。该产品是由凯云科技率先在行业内推出的国产自主可控半实物仿真测试开发平台,有效打破了国内该领域长期由进口软件LabView、DSpace等产品垄断的格局。ETest可广…

Geetest极验验证码的使用

后端部署 1.首先从Github: gt3-python-sdk下载.zip文件 ,用于后台搭建 gt3-java-sdk-master\src\sdk\GeetestLib.java 这个文件相当java中的实体类 gt3-java-sdk-master\src\demo\demo1\GeetestConfig.java ,是geetest的配置文件,用来放我们在…

GEE scale

以下从gee 官网翻译 gee中scale 表示像素分辨率,与其他GIS和图像处理平台不同,分析的规模由输出决定,而不是由输入决定。比如,当你从服务器请求返回一个图像或者统计结果时,您可以指定输入数据的scale到分析过…

gtest 单元测试工具的基本使用

gtest 单元测试 gtest 简介gtest 优点安装 gtest测试 demo总结 gtest 简介 gtest是Google的一套用于编写C测试的框架,可以运行在很多平台上(包括Linux、Mac OS X、Windows、Cygwin等等)。基于xUnit架构。支持很多好用的特性,包括…

Python Selenium破解滑块验证码最新版(GEETEST 95%以上通过率)

一、滑块验证码简述 有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页…

Python Selenium 破解极验(GeeTest)滑动验证

A r m o u r G e e T e s t ArmourGeeTest ArmourGeeTest [TOS] 本项目仅供交流学习,有疑问请在issue中提出;本项目不提供面向任何商业需求的版本迭代;关于本项目源码的使用请遵循Apache-2.0 License;禁止任何人使用本项目及其分支…

基于行为式验证的GeeTest验证码研究

什么是行为式验证 行为式验证的核心思想是利用用户的“行为特征”来做验证安全判别。整个验证框架采用高效的“行为沙盒”主动框架, 这个框架会引导用户在“行为沙盒”内产生特定的行为数据,利用“多重复合行为判别”算法从特指、视觉、思考等多重行为信息中辨识出生…

reactNative集成极验(GeeTest)

考虑到网上还没有rn极验的集成文章,前俩天公司业务正好集成了一下android和ios的sdk,平时时间少没时间写,今天简单介绍一下集成方案,要是时间允许的话,我搞一个极验的rn版sdk,给大家分享一下😄 …

项目gtest测试框架 - GoogleTest(十)

精简版本的C单元测试框架 ,通过编写这个简单的测试框架,将有助于我们理解gtest。 1. 目录 类型文件说明文件./CMakeLists.txt整体项目工程文件目录./debiandeb包打包脚本目录,未实现目录./rpmrpm打包目录,rpm打包的详细内容可以…

Geetest极验+VUE把验证码绑定到自己的按钮(例如获取验证码)

极验流程 客户端gt.js里调用initGeetest发起初始化,会向后端获取gt等参数(后端会跟极验通信),然后前端会根据传回的数据去决定用什么做验证,然后验证通过之后会有三个参数提供给后端进行二次校验的。具体接入看极验官…

【日常】Geetest滑动验证码(三代canvas版)处理小结(以B站登录验证为例)

问题描述 这个问题确实让我困扰了太长时间,今天花了半天时间,并没有找到非常完满的解决方案,只是在解决问题的过程中学会了一些其他知识,我最后还是要通过人工来判断大致的移动距离,然后根据误差做微调。大致做个总结…

geetest极验空间推理验证码破解与研究

看了很多的破解滑动验证码,决定破解一下空间推理验证码。破解思路,通过分析接口请求,对图片物体进行定位分类,通过模拟请求破解验证码。 研究的网站为 https://www.geetest.com/show 一、极验请求分析 请求详细 一、register-s…

googletest简介

googletest是由谷歌的测试技术团队开发的测试框架,使用c实现,具有跨平台等特性。 好的测试框架 引用谷歌给出的文档,好的测试应当具备以下特征: 测试应该是独立的和可重复的。调试一个由于其他测试而成功或失败的测试是一件痛苦…

破解极验(geetest)验证码

最近在搞爬虫的时候在好几个网站都碰到了一种叫做geetest的滑动条验证码,一直没有太好的办法只能在触发这个验证码后发个报警去手动处理一下。http://www.geetest.com/exp_embed是他们官网的样例。 后来研究了下觉得要破解这个验证码有这么几个问题: 无法直接通过发送…

破解滑块验证码最新版(GEETEST 95%以上通过率)

一、滑块验证码简述 有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页…

极验GeeTest简单demo

概述 人机验证 3.0 解决方案(基于生物行为与人工智能) 2012 年极验将人机验证从1.0时代推动到了 2.0 时代。在 5 年时间中,超过千亿次数据学习与优化,极验利用三角防护理论和 AI 智能决策引擎,全面更新安全架构。2017 年,正式推出…

极验geetest的使用

项目中会遇到 滑块验证的需求: 前端vue里 1.新建/utils/gt3.js "v0.4.8 Geetest Inc.";(function (window) {"use strict";if (typeof window undefined) {throw new Error(Geetest requires browser environment);}var document window.do…

爬虫进阶教程:极验(GEETEST)验证码破解教程

摘要: 爬虫最大的敌人之一是什么?没错,验证码!Geetest作为提供验证码服务的行家,市场占有率还是蛮高的。遇到Geetest提供的滑动验证码怎么破?授人予鱼不如授人予渔,接下来就为大家呈现本教程的精彩内容。 一…