How to Get the detail info about the MIF on Run-Time using DBG mode(Max, Oscean help) | developer.brewmp.com How to Get the detail info about the MIF on Run-Time using DBG mode(Max, Oscean help) | developer.brewmp.com

Developer

How to Get the detail info about the MIF on Run-Time using DBG mode(Max, Oscean help)

Forums:

After Turn On below Log items in Debug App in BREW3.1.5

MOD DBGPRINTF,
FASTLOAD DBGPRINTF,
PRELOAD DBGPRINTF,
MIF DBGPRINTF,
MIFPROP DBGPRINTF

Then, when BREW init, I catch below-like logs:

MSG Legacy/Error 03:05:11.831 *AEEShell.c 00792 #*gBI
MSG Legacy/Error 03:05:11.839 *AEEShell.c 06736 #*g*C=101402c:3
MSG Legacy/Error 03:05:11.840 *AEEShell.c 06736 #*g*C=101402d:3
MSG Legacy/Error 03:05:11.841 *AEEShell.c 06736 #*g*C=101402e:3

MSG Legacy/Error 03:05:11.935 *AEEModule.c 02868 Mod: Read MIF fs:/mif/unimusic.mif
MSG Legacy/Error 03:05:11.943 *AEEModule.c 02908 MIF: version = 0x00001002 dwID = 0x00000000 wPrivLevel = 0
MSG Legacy/Error 03:05:11.944 *AEEModule.c 02909 wClasses = 0 wApplets = 1 wExtClasses = 1
MSG Legacy/Error 03:05:11.944 *AEEModule.c 02910 wNotify = 0, wMIMETypes = 0
MSG Legacy/Error 03:05:11.946 *AEEModule.c 00692 Mod New (70)
MSG Legacy/Error 03:05:11.952 *AEEModule.c 03180 Mod: Read MIF (OK)
MSG Legacy/Error 03:05:11.953 *AEEModule.c 02868 Mod: Read MIF fs:/mif/aeecoreapp.mif
MSG Legacy/Error 03:05:11.957 *AEEModule.c 02908 MIF: version = 0x00001002 dwID = 0x00000000 wPrivLevel = 65535
MSG Legacy/Error 03:05:11.957 *AEEModule.c 02909 wClasses = 1 wApplets = 1 wExtClasses = 0
MSG Legacy/Error 03:05:11.958 *AEEModule.c 02910 wNotify = 1, wMIMETypes = 0
MSG Legacy/Error 03:05:11.960 *AEEModule.c 00692 Mod New (74)
MSG Legacy/Error 03:05:11.963 *AEEModule.c 03180 Mod: Read MIF (OK)

It is about the MIF info.

The MIF info is important for us sometime on run-time.

But, from the log, You can see,

Read MIF fs:/mif/unimusic.mif
MIF: version = 0x00001002 dwID = 0x00000000 wPrivLevel = 0
wClasses = 0 wApplets = 1 wExtClasses = 1
wNotify = 0, wMIMETypes = 0

The Privlevel is printed, It is OK, But, Other Infos is not printed detail. But they are also important for us sometime. especially:

wExtClasses = 1 ---> this is the dependency info, We'd like to know the detail Interface(CLSID) it used, not only the number of interface it used. How to got this info?

wMIMETypes = 0-----> We'd like to know the detail mime type. how to got this info?

Hope you can help me

Thx a lot

What is that you are trying to accomplish?
MIF file format is not open, it is possible to reverse enigneer MIF file format to get the information.
There are certain information from MIF you are retieve using ISHELL_QueryClass

What is that you are trying to accomplish?
MIF file format is not open, it is possible to reverse enigneer MIF file format to get the information.
There are certain information from MIF you are retieve using ISHELL_QueryClass

Have you tried using the Dump Module Info debug sequence? It prints all this information.
https://brewx.qualcomm.com/bws/websites/dx/en/brew31/ad/kb/running_apps/...

Have you tried using the Dump Module Info debug sequence? It prints all this information.
https://brewx.qualcomm.com/bws/websites/dx/en/brew31/ad/kb/running_apps/...

Already used.
It only print the exported Classes. But not print the Used Classes.

Already used.
It only print the exported Classes. But not print the Used Classes.

Actually, Now, We meet a problem, And I must know the used Classes of the MIF on run-time, Detail as below:
As you know, normally Any downloaded Apps should All not be run with another RUIM card(different from the card which be used to download the App) If DIF_SID_VALIDATE_ALL be turn on.
But, in TATA 's Network, our FT tester found one un-limited app downloaded from TATA ADS Server can be runned with any RUIM card. And Customer think this is a critical issue.
After We analyse, We think our handset software has nothing problem. We think this app's Mif selected some special privilege: PL_System or AEEGROUPID_ANY_SID.
With our experience, If the MIF selected PL_System Privilege Or Set AEEGROUPID_ANY_SID as dependency. Then the App can be run over any RUIM card.
BUT, As you know, as long as the mif file be written to the handset's file system. It seems be encoded with handset's ID. Then, Even we use APP Loader or EFS Explorer tool to upload the mif file to PC, it can not be opened by MIF editor tool.
So, I can only use DBG mode to get the mif info.
But, I can only got the Privilege info, but no dependency info.
Then, If the App not select PL_System, but select AEEGROUPID_ANY_SID as dependency, I have no enough info to verify this.
Hope you can help me.
We should verify it urgently
Thx a lot

Actually, Now, We meet a problem, And I must know the used Classes of the MIF on run-time, Detail as below:
As you know, normally Any downloaded Apps should All not be run with another RUIM card(different from the card which be used to download the App) If DIF_SID_VALIDATE_ALL be turn on.
But, in TATA 's Network, our FT tester found one un-limited app downloaded from TATA ADS Server can be runned with any RUIM card. And Customer think this is a critical issue.
After We analyse, We think our handset software has nothing problem. We think this app's Mif selected some special privilege: PL_System or AEEGROUPID_ANY_SID.
With our experience, If the MIF selected PL_System Privilege Or Set AEEGROUPID_ANY_SID as dependency. Then the App can be run over any RUIM card.
BUT, As you know, as long as the mif file be written to the handset's file system. It seems be encoded with handset's ID. Then, Even we use APP Loader or EFS Explorer tool to upload the mif file to PC, it can not be opened by MIF editor tool.
So, I can only use DBG mode to get the mif info.
But, I can only got the Privilege info, but no dependency info.
Then, If the App not select PL_System, but select AEEGROUPID_ANY_SID as dependency, I have no enough info to verify this.
Hope you can help me.
We should verify it urgently
Thx a lot

I'm confused -- if the MIF name is unimusic.mif, then it wasn't downloaded OTA. It must have been cable loaded. I'm going to assume that you're just using that as an example, and the actual mif has a different name.
It's not easy to get the dependency information at runtime. One hack that I can think of is to just write your own test app that calls ISHELL_CheckPrivLevel() for AEEGROUPID_ANY_SID and prints the info via DBGPRINTF(). Compile the app, then take the mod and rename it to have the same mod name as that in your suspect application. Drop it into the app's dir and replace the existing sig with a test sig. When you launch the app, your mod will be executed instead, and it will tell you whether the app is in the AEEGROUPID_ANY_SID group.
You could also try asking the carrier to check the app package.

I'm confused -- if the MIF name is unimusic.mif, then it wasn't downloaded OTA. It must have been cable loaded. I'm going to assume that you're just using that as an example, and the actual mif has a different name.
It's not easy to get the dependency information at runtime. One hack that I can think of is to just write your own test app that calls ISHELL_CheckPrivLevel() for AEEGROUPID_ANY_SID and prints the info via DBGPRINTF(). Compile the app, then take the mod and rename it to have the same mod name as that in your suspect application. Drop it into the app's dir and replace the existing sig with a test sig. When you launch the app, your mod will be executed instead, and it will tell you whether the app is in the AEEGROUPID_ANY_SID group.
You could also try asking the carrier to check the app package.

Thx a lot.
It seems so complexity:-(
And as you know, Asking carrier for the package is a more difficlut thing:-(
Any BREW API can be used to checkPrivilege for any CLSID app, not just the current running app??

Thx a lot.
It seems so complexity:-(
And as you know, Asking carrier for the package is a more difficlut thing:-(
Any BREW API can be used to checkPrivilege for any CLSID app, not just the current running app??

I got it.
ISHELL_AppIsInGroup() can be used to check Privilege and Dependency info for any App, Coz it can accept AEECLSID idApp as input parameter.
We can develop a hidden app, which can used to check every app's privilege and dependency info
Thx a lot

I got it.
ISHELL_AppIsInGroup() can be used to check Privilege and Dependency info for any App, Coz it can accept AEECLSID idApp as input parameter.
We can develop a hidden app, which can used to check every app's privilege and dependency info
Thx a lot

Hadn't used that API before. Good catch. :o

Hadn't used that API before. Good catch. :o