2025年第三届盘古石杯决赛(鸿蒙程序分析)
程序分析
1、分析鸿蒙手机检材中“笔记.hap”文件,该软件应用名称是?【标准格式:ABCD】
PGSDBW
软件应用名称在 module.json 文件中通过 label
和 labelId
进行标识。label
的值为 $string:app_name
,这表明应用名称是一个字符串资源引用,实际的名称存储在字符串资源文件中,labelId
为 16777216
也用于标识该字符串资源。
2、分析hap检材,软件的包名是?【标准格式:com.pgs.main】
com.example.pgsdsj
在 app
配置部分有关于包名的信息,具体如下:
3、分析hap检材,软件图标md5的后六位是?【标准格式:a48b31】
448b23
在笔记/module.json 文件里,能看到软件图标的引用信息:
{ \"app\": { // ... \"iconId\": 16777218, \"icon\": \"$media:foreground\", // ... } // ...}
找到\\笔记\\resources\\base\\media
另外,笔记/resources/base/media/layered_image.json 文件中也进一步关联了媒体资源,找到对应名字的图片
{ \"layered-image\":{ \"background\":\"$media:16777217\",\"foreground\":\"$media:16777218\"}}
文件名称: foreground.pngMD5: 7fb165b876a11c792bd38b1830448b23
4、分析hap检材,软件代码保存的文件名称是?【标准格式:class.dex】
modules.abc
通常是 ArkTS(HarmonyOS 应用开发的编程语言)编译后生成的字节码文件,分析这种文件可以从多个角度进行
5、分析hap检材,软件的入口类是?【标准格式:MainActivity】
EntryAbility
根据提供的 笔记/module.json
文件内容,软件的入口类可以通过 module
部分的 mainElement
字段以及 abilities
数组来确定。
分析 mainElement
字段
在 module
部分有如下配置:
\"mainElement\": \"EntryAbility\",
表明 EntryAbility
被指定为软件的主要元素,通常意味着它在应用启动时起到关键作用。
查看 abilities
数组中的 EntryAbility
在 abilities
数组中,有一个名为 EntryAbility
的能力项,其相关配置如下:
{ \"exported\": true, \"iconId\": 16777218, \"startWindowIconId\": 16777225, \"icon\": \"$media:foreground\", \"startWindowIcon\": \"$media:startIcon\", \"startWindowBackgroundId\": 16777223, \"description\": \"$string:EntryAbility_desc\", \"label\": \"$string:EntryAbility_label\", \"skills\": [ { \"entities\": [ \"entity.system.home\" ], \"actions\": [ \"action.system.home\" ] } ], \"srcEntry\": \"./ets/entryability/EntryAbility.ets\", \"descriptionId\": 16777220, \"labelId\": 16777221, \"startWindowBackground\": \"$color:start_window_background\", \"name\": \"EntryAbility\"}
这里明确了 EntryAbility
的源代码入口文件为 ./ets/entryability/EntryAbility.ets
,并且其技能(skills
)包含了与系统主界面相关的实体和动作,进一步说明它是应用启动时的入口。
所以软件的入口类是 EntryAbility
,对应的源代码文件是 ./ets/entryability/EntryAbility.ets
。
6、分析hap检材,软件的入口密码是?【标准格式:abc-134】
pgsdbw-2025
要先进行反编译
ark_disasm.exe modules.abc modules.txt
在关于LoginPage
的代码中,有一个固定密码的定义:
lda.str \"pgsdbw-2025\"stobjbyname 0x14, \"FIXED_PASSWORD\", v10
7、分析hap检材,软件存储笔记的数据库名称是?【标准格式:tmp.db】
notepad.db
从文档中关于DatabaseHelper
的定义部分可以找到数据库名称的相关信息:
在func_main_0
函数中,明确定义了数据库名称为:
lda.str \"notepad.db\"sta v11lda v11stlexvar 0x0, 0x1
因此,软件存储笔记的数据库名称是 notepad.db。
8、分析hap检材,数据库的打开密码是?【标准格式:Abc123】
HuaweiNotePad123
关键代码
.function any &entry.src.main.ets.utils.DatabaseHelper&.func_main_0(any a0, any a1, any a2) {newlexenvwithname 0x4, { 9 [ i32:4, string:\"DOMAIN_DB\", i32:0, string:\"DB_NAME\", i32:1, string:\"SQL_CREATE_NOTES_TABLE\", i32:2, string:\"SQL_CREATE_NOTES_UPDATE_TRIGGER\", i32:3, ]}mov