如何获取CRepository设置项的RepUID和key(转)

如何获取CRepository设置项的RepUID和key

如何获取CRepository设置项的RepUID和key

注:本文原创思路来自chenziteng大神,本人只是对其流程进行了详细阐述和部分改进。

以3rd MR模拟器为例。
假如我们想知道“设置”程序中的某个选项对应的RepUID和key的话,我们可以使用如下方法获取:
1.运行MR模拟器,打开“设置”程序,修改你欲获取的设置项。
2.打开\Symbian\9.1\S60_3rd_MR\Epoc32\winscw\c\private\10202be9\persists,按修改日期排序,找到最新修改的cre文件,比如0×101f8873.cre。此时我们已经知道了RepUID,就是0×101f8873。
3.打开\Symbian\9.1\S60_3rd_MR\Epoc32\release\winscw\udeb\z\private\10202be9\101f8873.txt
其内容中包含如下section:
[Main]
0×1 string “” 0 cap_rd=alwayspass cap_wr=WriteDeviceData
0×2 string “” 0 cap_rd=alwayspass cap_wr=WriteDeviceData
0×3 string “” 0 cap_rd=alwayspass cap_wr=WriteDeviceData
0×4 string “” 0 cap_rd=alwayspass cap_wr=WriteDeviceData
0×5 int 0 0 cap_rd=alwayspass cap_wr=WriteDeviceData
0×6 int 0 0 cap_rd=alwayspass cap_wr=WriteDeviceData
0×7 int 0 0 cap_rd=alwayspass cap_wr=WriteDeviceData
0×8 int 0 0 cap_rd=alwayspass cap_wr=WriteDeviceData
表示0×101f8873这个UID下拥有8个key,从0×1一直到0×8,而且也知道各自的类型、默认值、CRepository::Get权限和CRepository::Set权限分别为None和WriteDeviceData。
知道这些信息之后就好办了,我们可以很方便地知道我们要的是哪个key。
如果key的默认value比较明显的话,你完全可以一眼看出是哪个key,如果一下子看不出的话,笨办法一个一个试也不要多大工作量。当然,最科学和保险的办法就是写个循环对这些key依次进行Get,然后打log记录一下。接着改动我们需要的那个设置项,再次log。对两个log文件merge一下,就能精确定位到那个key了。感觉和以前金山游侠改游戏一样啊,呵呵。
4.RepUID和key都拿到了,类型也知道,下面怎么改value总不用说了吧,Set一下即可。不要忘了加WriteDeviceData能力。

再次感谢chenziteng大神提供这个思路!!

原文地址:https://www.cnblogs.com/yaoliang11/p/2087441.html