[深入分析BREW机制]:Mod相关概念解析

iaito逆向分析工具:Rizin的现代化GUI界面与十大核心技巧 逆向工程是分析二进制文件、理解程序内部逻辑的关键技术领域,广泛应用于软件安全分析、漏洞挖掘和恶意代码研究。其核心原理是通过静态和动态分析技术,解析可执行文件的机器码、数据结构与控制流程,从而还原程序的设计意图与实现细节。这项技术的价值在于能够深入闭源软件内部,发现潜在的安全风险、进行漏洞验证或实现软件兼容性开发。在安全研究、CTF竞赛、软件调试与兼容性开发等场景中,逆向分析工具是研究人员的必备利器。本文聚焦于iaito这一工具,它作为Rizin逆向框架的现代化图形界面,通过可视化分析、交互式调试和自动化脚本 阅读详情

 BREW MOD相关概念解析
 目录
 1、Mod与Applet、接口的关系
 2、Mod的唯一标识
 3、Applet、接口的唯一标识
 4、Mod的实体组成
 5、Mod的加载和启动
  5.1 加载Mod
  5.2 启动Mod
 6、在simulator中运行动态Mod

1、Mod与Applet、接口的关系
本文之前谈到的都是Applet和接口,实际上BREW的运行单元是Mod,而Applet、接口只是Mod内部的概念,你也可以简单地理解成:Mod是容器,而Applet、接口是容器里的元素。一个Mod里可以放置任意个applet和接口。或者说Mod是Applet和接口的载体。
在启动一个applet或接口时,BREW只启动到Mod为止,接下来启动哪个applet或接口由Mod来决定。

2、Mod的唯一标识
Mod的唯一标识是mif文件,mif全名为mod information file,即mod信息文件,里面记录了mod的所有可描述性信息,如这个mod里有几个applet,有几个brew扩展接口,每个applet、brew扩展接口的clisid和名字,applet的图标等等。
mif文件的文件名就是这个mod的名字,没有任何可选余地,如,a.mif代表了一个mod,mod的名字便是a,又如,一个mod的名字叫b,那么它的唯一标识就是b.mif。

3、Applet、接口的唯一标识
Applet、接口的唯一标识就是ClsID,每一个applet、BREW扩展接口在商业运作之前都必须申请一个合法的ClsID,在使用模拟器进行开发时,可以使用临时的ClsID,由于applet、BREW接口的载体是mod,所以要将applet、接口的最重要的信息记录在它所在的mod里,也就是mod的mif文件里。如果不在mif文件里记录,BREW就无法找到这个ClsID所在的Mod,Mod就无法启动,当然这个ClsID代表的applet或接口也就无法启动。

4、Mod的实体组成
Mod主要由两个文件组成:一个mif文件,一个mod文件。在模拟器环境下,mod文件的后缀是.dll,而在手机里,则要转成.mod后缀。
除了这两个主要部分外,根据具体的Mod,还会有资源文件(.bar)和其它mod需要的各种文件。
除此之外,为了能让Mod在真实手机里运行,还必须在qualcomm官方网站注册生成Mod签名文件(.sig),如果没有有效的签名文件,Mod在手机里是无法运行的。签名文件的文件名必须与mif文件名同,与mod文件在同一目录中。签名文件有两种:测试签名和正式签名,分别针对不同的目的。

5、Mod的加载和启动
启动一个applet一般使用如下语句:
ISHELL_StartApplet(..., clsid);
创建一个BREW接口的实例一般使用如下语句:
ISHELL_CreateInstance(..., clsid);
可以看到,都要传入ClsID,在第一节已经说了,BREW只启动到Mod为止,看完下文你便会明白。

5.1 加载Mod
BREW看到clsid后,会查询所有它能找到的.mif文件,目的是要知道这个clsid是属于哪个mod的,如果a.mif里有这个clsid,那么BREW就会调用Mod a的ModLoad函数加载这个Mod,对于动态应用,就是将动态mod的执行程序从文件系统搬进内存,并创建Mod的实例。对于静态应用,则只是创建Mod的实例。
所谓创建Mod的实例,其实就是创建IModule接口的实例。也就是说所有mod被加载后都会以一个IModule接口实例的形式存在。读者会问,不同的Mod对应的IModule实例有什么不同?为了不致于偏题太多,此问题将在idle的其它文章里讲述。

5.2 启动Mod
 加载Mod只是创建了一个Mod实例,而启动Mod则是要让Mod动起来。 BREW的工作只有一步:调用IModule接口的接口函数IModule_CreateInstance,此函数有一个参数用来接收Clsid.
到此BREW的任务完成,正如第一节所述,那么接下来Mod是如何决定启哪个应用或接口的呢?
对于动态Mod来说,IModule_CreateInstance会触发一个固定的函数AEEClsCreateInstance,并将clsid继续传给AEEClsCreateInstance,在BREW里只有对此函数的声明,所以每一个动态Mod都要实现此函数,并且函数名固定,否则这个Mod是无法启动的。如果开发者打算将多个Applet打包成一个动态Mod,则在AEEClsCreateInstance的实现里就要对入参clsid作判断,对于接收到不同的clsid,则启动不同的applet。如果打算一个动态Mod里只放一个applet,那么就可以省去对clsid的判断,而直接启动这个applet即可。
所以说,与其说是mod来决定启动哪个应用或接口,还不如说是开发者自已决定的。
看过002篇的读者一定知道,在002篇里对AEECLSCREATEINSTANCE作了讲述,并将其称为扩展接口的入口函数,在002篇的例子里,扩展接口IStringParse自成一个mod,所以AEEClsCreateInstance里没有对clsid做判断,而是直接调用了IStringParse的new函数创建IStringParse的实例。
下面这段代码说明了当一个Mod里有多个applet或(和)接口时是如何处理的。
int AEECLSCREATEINSTANCE(...., clsid)
{
 if(AEECLSID_INTERA == clsid) //如果clsid等于AEECLSID_INTERA,启动接口A
 {
  return newA(); //接口A的new函数
 }
 else if(AEECLSID_APPB == clsid) //如果clsid等于AEECLSID_APPB,则启动applet B
 {
  return IApplet_New(..., ); //所有applet的实例创建函数,由IApplet接口统一提供
 }
 else if(AEECLSID_APPC == clsid) //如果clsid等于AEECLSID_APPC,则启动appletC
 {
  return newC(); //也可以不直接调用IApplet_New, 而放在newC函数里调用。
 }
 else
 {
  return EFAILED;
 }
}

6、在simulator中运行动态Mod
将Mod的mif文件放入simulator的MIF directory下;在simulator的Applet Dir下新建一个目录,目录名与mif文件名同,将Mod的其它文件放入此目录下即可。运行simulator,在applet列表中就能看见Mod里的所有Applet。

本篇到此完。

基于Java17、SpringBoot、vue3、antdv-next、uniapp等主流技术构建的全场景极速开发平台 MDP内置3个web端、1个移动端 重点解决用户中心、开发者平台、管理后台3个应 MDP-主数据平台,后端项目。专注于单点登录解决方案。内置用户中心、开发者平台、管理后台3个应用。包含:单点登录、Oauth2 登录、用户身份管理、应用申请、应用接入、主数据维护、主数据订阅、主数据广播、应用接口调用、接口管理管理和查看、系统配置等功能。 立即下载

相关推荐

Win7时间修复(时间错误修复文件)

运行方法:解压后运行reg文件即可。 支持的Win7版本: 1. Windows 7 Starter(入门版 / 初级版) 2. Windows 7 Home Basic(家庭普通版) 3. Windows 7 Home Premium(家庭高级版) 4. Windows 7 Professional(专业版) 5. Windows 7 Enterprise(企业版) 6. Windows 7 Ultimate(旗舰版) 7. Windows 7 Professional for Embedded Systems(嵌入式专业版) 8. Windows 7 Ultimate for Embedded Systems(嵌入式旗舰版)

对接接口流程

查看接口文档 主要看路径及参数 写API //删除课堂房间 @url('/live/room/delete')//路径 @get getDelete(){}//get获取 写方法 getDelete(item) { this.$confirm('删除课程将不能恢复', '删除课程', { confirmButtonText: '确认', ...

AYIMOD的博客 1万+

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?.docx

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?

在BREW程序中调用另一个mod的分析

   近日读到这样一段程序。可以在程序运行时调用另一个mod文件并执行。这样可以做到应用自升级,压缩程序文件等实用的功能。  要想理解这点,先看一下正常的BREW程序加载过程。 BREW程序的入口,即相当于c程序的main,是位于AEEModGen.c中的AEEMod_Load函数。这可以从mak文件的连接选项中看出来。  LINK_ORDER = -first AEEMo

wtyqm的专栏 1895

usb 扩容盘检测修复工具源码,编译产物

usb 扩容盘检测修复工具源码,编译产物

融合UWB和IMU割草机定位EKF研究(Matlab代码实现)

内容概要:本文主要介绍了一个名为“Plecs全桥LLC谐振变换器仿真模型”的技术资源,该资源聚焦于电力电子领域中的LLC谐振变换器建模与仿真,涵盖开环、闭环控制、软启动设计及参数优化等核心内容。文档不仅提供了LLC变换器的详细建模方法与仿真案例,还系统梳理了其在高效电源转换系统中的应用,包括隔离型全桥拓扑结构的设计与性能分析。此外,资源汇总了大量Matlab/Simulink仿真模型及相关科研方向,涉及新能源并网、储能控制、电机驱动等多个前沿领域,全面展示LLC谐振变换器在现代电力系统中的关键技术实现路径。同时,文档附带多种学习资料获取途径,如网盘链接和公众号资源,便于研究人员深入实践与拓展研究。; 适合人群:具备扎实的电力电子、自动控制理论基础,从事新能源发电、开关电源设计、电力系统仿真等相关领域的研究生、工程师及科研人员。; 使用场景及目标:①深入理解LLC谐振变换器的工作原理、建模方法与控制策略;②开展电力电子变换器的仿真验证与参数优化设计;③支撑科研项目、学位论文或工程项目的系统仿真与方案验证; 阅读建议:建议结合所提供的仿真模型与参考文献,使用Plecs或Simulink软件进行动手实践,重点掌握LLC谐振变换器的建模流程、闭环控制设计、软启动机制及参数调试技巧,以全面提升在实际工程中的应用与创新能力。

MAC 通过brew安装软件

1.安装brew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2.安装homebrew-cask brew tap phinze/homebrew-cask && brew install brew-cask

without0815的专栏 1378

基于变频控制的多相交错LLC谐振变换器闭环仿真(Simulink仿真实现)

基于变频控制的多相交错LLC谐振变换器闭环仿真(Simulink仿真实现)内容概要:本文主要介绍了基于Plecs的全桥LLC谐振变换器仿真模型,涵盖变频控制下的多相交错LLC谐振变换器闭环仿真、V2G电动汽车ACDC整流与双向CLLC谐振变换器充放电仿真、LLC谐振变换器的开环与闭环软启动设计,以及储能系统中双向Buck-Boost变换器结合模型预测电流控制和电压下垂控制的仿真研究。同时,文档列举了多种电力电子系统与控制策略的Simulink/Plecs仿真案例,涉及三相交错并联Buck变换器、三电平Buck直流变换器、单相Boost PFC电路等,展示了丰富的电力变换器建模与控制技术。此外,还包括参数设计报告、计算书及相关参考文献,适用于从事电力电子、新能源发电、电动汽车充放电系统等领域的研究人员和技术开发人员。; 适合人群:具备电力电子、自动控制理论基础,从事新能源、电动汽车、电力系统等相关领域研究的研发人员、高校研究生及高年级本科生。; 使用场景及目标:① 学习和掌握LLC谐振变换器及其他典型电力电子变换器的工作原理与建模方法;② 实现闭环控制策略如变频控制、软启动、模型预测控制、下垂控制等的仿真验证;③ 支持科研项目、毕业设计或工程开发中的系统仿真与优化设计。; 阅读建议:建议结合文中提供的仿真模型、设计报告与参考文献,逐步搭建并调试相应系统,重点关注控制策略的实现细节与参数整定过程,以深入理解系统动态响应特性与控制性能。

Notepad--文件关联修复完整指南:3种高效解决方案

Notepad--是一款支持Windows、Linux和macOS三大操作系统的国产文本编辑器,以其轻量高效、跨平台兼容的特性受到广大开发者和技术用户的喜爱。然而在实际使用过程中,用户可能会遇到**文件关联异常**的问题,即双击文本文件无法自动使用Notepad--打开。本文将深入分析文件关联问题的根本原因,并提供3种实用的修复方案,帮助您快速恢复Notepad--的文件关联功能。 ## 问题现

gitblog_01014的博客 385

独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)

内容概要:本文标题为“Plecs全桥LLC谐振变换器仿真模型”,但实际内容严重偏离主题,文档中混杂了大量来自优快云博客平台的无关信息,涵盖多个不同领域的Matlab/Simulink仿真项目,如电力系统优化、无人机路径规划、机器学习预测、微电网调度、卡尔曼滤波、无线能量传输等,导致核心内容缺失。文档未能提供关于Plecs平台下全桥LLC谐振变换器的建模方法、电路结构、参数设计、控制策略或仿真结果等关键技术细节,实质信息与标题完全不符,不具备作为该主题参考资料的有效性。; 适合人群:从事电力电子变换器研究、电源系统设计及相关领域的工程师、高校研究生与科研人员,尤其是希望掌握LLC谐振变换器建模与仿真的专业技术人员。; 使用场景及目标:① 学习并掌握全桥LLC谐振变换器的工作原理与Plecs仿真建模技术;② 开展高效电源转换器的研发与性能优化;③ 作为教学或科研项目中电力电子电路仿真的参考资料。; 阅读建议:鉴于文档内容与标题严重不符,建议读者谨慎甄别,优先选择专业书籍、学术论文或官方仿真软件教程等权威资源进行学习,避免被无效信息误导。

2.2.1.3-移动平均线(python画k线、均线、5日线、买卖点图、python均线策略)

* 绘制一个k线图,也就是蜡烛图 * 计算5日均线值、10日均线值 * 在k线图上,绘制5日线和10日线图 * 在5日线上,绘制与10日线的交叉点(上穿、下穿时) python画k线、均线、5日线、买卖点图、python均线策略

KelvinLiu 3413

Docker镜像体积优化:从docker commit膨胀到Dockerfile瘦身实践

Docker镜像作为容器化技术的核心,其体积大小直接影响部署效率和资源消耗。镜像由多层只读文件系统堆叠而成,通过联合文件系统实现高效存储。在工程实践中,镜像体积优化是提升容器性能的关键环节,涉及构建流程、层缓存管理和依赖清理等多方面技术。本文将聚焦于常见的镜像体积膨胀问题,特别是使用docker commit命令时容易产生的缓存残留、冗余依赖和层合并等问题,这些都会导致镜像虚胖。通过分析镜像层原理,结合dive工具进行可视化诊断,可以精准定位大文件来源。解决方案涵盖从即时清理缓存、使用多阶段构建到选择Alp

weixin_33912246的博客 394

小华半导体HC32芯片开发使用说明

HC32F/L系列MCU在Keil MDK和IAR Workbench环境下通过工程样例进行软件开发。

小布的芯视角 5631

[深入分析BREW机制]:动手写BREW扩展接口

动手写BREW扩展接口 ——目录—— 引言 1、写扩展接口最好要熟悉的几个宏 2、示例接口IStringParse 3、接口解析  3.1 头文件解析  3.2 .c文件解析  3.3接口实例的创建  3.4接口的实现函数  3.5接口的释放 结语引言 扩展接口在BREW开发中很重要,使你的程序更健壮,维护工作更高效。一个程序应尽力将业务处理分离成功能类接口,这使得业务的实现和维护,与对业务的

chinesecoolman的专栏 1918

Python离线断网情况下安装numpy、pandas和matplotlib等常用第三方包

联网情况下在命令终端CMD中输入“pip install numpy”即可自动安装,pandas和matplotlib同理一样方法进行自动安装。 工作的电脑不能上外网,所以不能通过直接输入pip命令来安装。 环境:电脑上已经安装了Python(没有安装的请参考其他教程)。 Python离线断网情况下安装numpy、pandas和matplotlib等常用第三方包的步骤如下: ...

dayou7738的博客 4943

深入解析DDR5 RFM机制:从JESD79-5标准到硬件实现

本文深入解析了DDR5内存标准中的关键机制——RFM(Refresh Management)。文章从JESD79-5标准出发,详细阐述了RFM如何通过RAA计数器实现从被动定时到主动响应的智能刷新管理,并探讨了其硬件实现细节、命令调度挑战及系统级设计考量,为芯片设计工程师优化DDR5内存子系统性能与可靠性提供了实践指导。

fff88的博客 491

[深入分析BREW机制]:BREW的类机制

 BREW的类机制 ——目录—— 引言 1、BREW类声明透析 2、BREW类实现透析 3、BREW类的创建过程 结语引言 Brew开发包由两部分组成:标准接口、助手函数。我们可以利用brew sdk开发第三方应用,也可以开发新的接口,第三方接口称为扩展接口(extension interface). 所有的标准接口、扩展接口以及brew应用的实现机制都是一样的,我称之为Brew类机制,所有的

chinesecoolman的专栏 1494

[AHK] 自动化获取通达信股票代码:从消息钩子到数据提取

本文详细介绍了如何使用AHK(AutoHotkey)通过Windows消息钩子技术自动化获取通达信股票代码,实现高效数据提取和交易自动化。文章涵盖消息机制原理、AHK脚本开发、性能优化及安全注意事项,为股票交易者提供了一套完整的解决方案。

weixin_42614269的博客 617

[深入分析BREW机制]:BREW接口的引用计数机制

 BREW接口的引用计数机制 ——目录—— 引言 1、new函数规则一 2、new函数规则二 3、AddRef函数规则 4、Release函数规则 5、接口指针作为函数入参规则一 6、接口指针作为函数入参规则二 7、接口指针获取规则 结语引言所有BREW接口的实现结构体里都有一个成员uint32 m_nRef,这就是常说的引用计数值,而引用计数机制就是通过管理m_nRef来管理接口的生命期,接

chinesecoolman的专栏 1385

基于Simulink的超级电容快速响应特性建模与仿真

本文介绍了基于Simulink的超级电容快速响应特性建模与仿真方法。主要内容包括:超级电容的工作原理、一阶RC等效电路模型及其动态电压方程;通过Simulink搭建超级电容模型的两种方法(Simscape Electrical推荐方案和基础模块透明教学方案);仿真100A×100ms放电脉冲下的电压响应特性,并与锂电池进行动态对比;分析超级电容在混合储能系统中的功率分配优势。文章还提供了工程实践要点和扩展方向,如电压均衡、温度影响评估以及与DC-DC变换器集成等。通过建模实践,验证了超级电容在毫秒级响应、高

xiaoheshang_123的博客 98

YOLO26改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头

本文记录的是基于移动倒置瓶颈 MBConv 的 YOLO26 的检测头轻量化改进方法研究。采用了独特的倒置瓶颈结构,通过的操作以及,在高效提取特征的同时极大地降低了计算量。本文将的设计优势融入j检测头中,使其在目标检测任务中不仅能够更精准地识别各类目标,还能在计算资源有限的情况下快速响应,展现出更为卓越的实时检测能力。EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks的实现代码如下: 首先在代码中加入如下代码: 其

Limiiiing的博客 287

[深入分析BREW机制]:BREW接口的继承特性应用

 BREW接口的继承特性应用 ——目录—— 引言 1、接口继承 2、实现继承 结语引言 这里所说的BREW接口的继承特性,也就是BREW类的继承特性。一个BREW接口包括两部分,第一部分是接口的定义和接口函数宏的定义;第二部分是接口函数的实现。我往往把第一部分直接称为接口,所以“接口”二字有时表示的是一个独立完整的接口,有时指的是完整接口的第一部分。 从BREWapi里提供的接口来看,用到了两

chinesecoolman的专栏 1107

手把手教你学PCIE(11.3)--pcie的认证和合规性测试

PCIe 设备的认证和合规性测试是确保设备正常工作和达到预期性能的关键步骤。通过使用 PCI-SIG 提供的测试工具和第三方测试工具,可以全面评估 PCIe 设备的物理层、链路层、事务层和互操作性,确保设备符合行业标准和规范。

MHD0815的博客 1360

[深入分析BREW机制]:applet的类特征

BREW applet的类特征 ——目录—— 引言 1、appgun创建过程简述 2、appgun为什么是一个类 3、appgun的类实例结构体解析 结语引言本篇创建一个applet,applet的名字叫gun,简称appgun。通过分析appgun的创建过程来揭示appgun的类本质。1、appgun创建过程简述1)首先定义一个Cappgun结构体,里面定义appgun的所有数据成员:t

chinesecoolman的专栏 973

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: [深入分析BREW机制]:BREW接口的引用计数机制
下一篇: 基本功练习:12月10日认识的弱点
chinesecoolman
博客等级 码龄18年 6粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值