Tools for Logging processes, like WinComm, Portmon, QXDM... - Bada Software and Hacking General

Nice and easy Tool:
http://www.softsea.com/review/Portmon.html
Maybe someone saw/know the yellow Message "UPLOAD data to pc"...
How to catch Data if "Bluescreen" comes and "UPLOAD data to pc" message appears?
It seems this nuke my Portmon...
Any suggestions please?
Maybe I'm blind or these are not stored in Debug folder...
Best Regards
Edit 1.
Changed title.

If you have a Windows XP machine left, try this to watch the serial port:
ups, i can't post links here. Google for serialmon dot com .....
It's output is a little easier to use than portmons. In general, using a serial port monitor to watch the communication between wave and pc, seems to be very unstable business.

Now I'm closer...
Taken info from Samsung GT-S8500L Wave Training Manual SW.ppt...
If someone needs the Settings to attach handset correct, ask me... in this Thread.
Best Regards

Could you post the settings, found this earlier, but couldn't do anything with it.
Thanks

I'll try to describe "short" steps.
1.
You have to be sure that Debug Level Middle is on. Please read here:
http://forum.xda-developers.com/showpost.php?p=10616930&postcount=3
Level Mode High shows more events...
2.
If you have access to Internal menu:
*#7092463*#
Maybe set to High or go to Debug Settings... described in ...Manual SW.ppt...
site 15
3.
Start WinComm and now check site 16 on *.ppt manual. All settings are on Picture.
4.
On handset I have choose Debug Mode instead Kies... this thingie if you plug cable into Wave... maybe go to Settings and set to ask by connection instead Kies
5.
Be sure you choose the "second" Port. Now Wave have 2 COM Ports activated.
Second one is for incoming Data.
Hope this helps an little bit.
If problems ask again.
Then I'll try to make some Screenshots or maybe some other hints...
Best Regards

Ehm have you found that Wincomm2010.exe
Click to expand...
Click to collapse
2010 no, but 2009 like in this Picture is attached.
WinComm2009.zip
Best Regards

Handset
Under Settings->Connectivity->USB->Ask on connection
To have chance to set USB Debugging
Wincomm
I will try later maybe Open or Close for connect to the port.
Important is to choose second COM Port...
Also important to activate UE Awake in settings like on Picture.
As it seems initial AT command is mandatory AT+WINCOMM...
Best Regards
P.S.:
I'm using XP 32 Bit... no other OS tested by me.

so now you can upload fw files from the phone or what???

so now you can upload fw files from the phone or what???
Click to expand...
Click to collapse
Now you could see internal process like Key press, which files involved... etc...
Many high technical stuff. But this could help to understand more.
For me it is very usefull.
I will soon attach few Log examples... maybe then more clear.
Best Regards

i don't suppose that anything can be done if *#7092463*#
doesn't get me a menu?

http://forum.xda-developers.com/showpost.php?p=12798896&postcount=5
Please read deeper this post and follow Links.
As Internal menu is disabled if you flashed ever Rsrc2_S8500_xxx(Low).rc2
Or if you not use Multiloader, then Kies did for you.
This is internal stuff, you have to "unlock" few things before... so read my instruction prior posted.
Please. This is more for advanced users. This is NO must have for all users.
At your own risk.
Best Regards

It seems also good idea to set Trace Level to High... in Internal Menu.
Best Regards
Edit 1:
Seems difference between Firmwareversions...
On JE7 I can see logging if handset is "off" if battery charge Animation is on.
Then if you press ON you can see parts of Booting sequence...
On JL2 I see first something, if Wave is fully on...
Maybe in higher Build some things disabled/removed...

Code:
3539 2255.054 [B]KEY_EVENT_SIG[/B]: [B]Keycode[/B] = 0x8f, STATUS = 0x0.
3540 2255.054 [LCD C]: INFO - FIMD_Drv_Resume()
3541 2255.054 S6E63M0 : LDI_Pentile_Set_Change Pentile_Value =6c
3542 2255.054 S6E63M0 : LDI_PortInit +
6217 2255.055 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0014 2263.372 -1: BOOTMGR > _BmPacketReceiveCallback: Boot command is [0x6]
6218 2255.055 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0015 2263.372 -1: EXCEPTION > OemTapiNetworkRadioInfoInd: RSSI refresh as AP's awaken
6219 2255.056 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0016 2263.372 -1: EXCEPTION > OemTapiNetworkCellInfoInd: Refresh cell Info as AP's awaken
6220 2255.063 P00.T10.D103.G22.E054:B25B EXCEPTION > SmsSvcRegGetSellOutToBeSent: bToBeSent = [0].
6221 2255.069 P00.T10.D103.G22.E054:B269 EXCEPTION > SmsTapiEventHandler: unknown tapi event type.
[B]3543 2255.085 S6E63M0 : LDI_PortInit -
3544 2255.085 S6E63M0 : LDI_S6E63M0_Power_On +
3545 2255.095 S6E63M0 : LDI_S6E63M0_Power_On [hwrev > [COLOR="Red"]S8200[/COLOR]_UNIV_B7]
3546 2255.095 S6E63M0 : LDI_Pentile_Set_Change Pentile_Value =6c
3547 2255.219 S6E63M0 : LDI_S6E63M0_Power_On -
3548 2255.219 Display_LSI : disp_Main_Wakeup [/B]
3549 2255.219 [TSP] reset acq atchcalst=0, atchcalsthr=0
3550 2255.220 [TSP] clear garbage data : Success!! [read 0 times]
3551 2255.220 [TSP] TSP Wakeup...........!
I was wondering why S8200... but now its more clear.
http://forum.xda-developers.com/showpost.php?p=12797112&postcount=249
What we can do...
Collect Key Events...
Monitoring processes like start JAVA Midlets...
Then we can see infos about Heap size...
Code:
9301 433.174 P00.T10.D094.G52.E103:2D83 EXCEPTION > KJxMemoryAvailable: [B]available memory heap[/B] size is 131268608
9302 433.178 P00.T10.D300.G52.E103:2D83 EXCEPTION > KJxSvcIsFileSystemValid: return TRUE!
9303 433.178 P00.T10.D300.G52.E103:2D83 EXCEPTION > KJavaGetMidletAttributeBySuiteID suiteID = 5 is not found
9304 433.179 P00.T10.D094.G52.E103:2D83 EXCEPTION > KJxSvcIsMemoryFull fmQuotaStat.availableSize(943128576), APP_MEMORY_STATUS_MX_MEMORY_FULL_LIMIT(0)
9305 433.180 P00.T10.D094.G52.E103:2D83 EXCEPTION > KJxSvcIsMemoryFull KJx execute limit size = 16384
9306 433.180 P00.T10.D300.G52.E103:2D83 EXCEPTION > KJxSvcIsFileSystemValid: return TRUE!
Many more things...
Best Regards

adfree said:
Code:
3539 2255.054 [B]KEY_EVENT_SIG[/B]: [B]Keycode[/B] = 0x8f, STATUS = 0x0.
3540 2255.054 [LCD C]: INFO - FIMD_Drv_Resume()
3541 2255.054 S6E63M0 : LDI_Pentile_Set_Change Pentile_Value =6c
3542 2255.054 S6E63M0 : LDI_PortInit +
6217 2255.055 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0014 2263.372 -1: BOOTMGR > _BmPacketReceiveCallback: Boot command is [0x6]
6218 2255.055 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0015 2263.372 -1: EXCEPTION > OemTapiNetworkRadioInfoInd: RSSI refresh as AP's awaken
6219 2255.056 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0016 2263.372 -1: EXCEPTION > OemTapiNetworkCellInfoInd: Refresh cell Info as AP's awaken
6220 2255.063 P00.T10.D103.G22.E054:B25B EXCEPTION > SmsSvcRegGetSellOutToBeSent: bToBeSent = [0].
6221 2255.069 P00.T10.D103.G22.E054:B269 EXCEPTION > SmsTapiEventHandler: unknown tapi event type.
[B]3543 2255.085 S6E63M0 : LDI_PortInit -
3544 2255.085 S6E63M0 : LDI_S6E63M0_Power_On +
3545 2255.095 S6E63M0 : LDI_S6E63M0_Power_On [hwrev > [COLOR="Red"]S8200[/COLOR]_UNIV_B7]
3546 2255.095 S6E63M0 : LDI_Pentile_Set_Change Pentile_Value =6c
3547 2255.219 S6E63M0 : LDI_S6E63M0_Power_On -
3548 2255.219 Display_LSI : disp_Main_Wakeup [/B]
3549 2255.219 [TSP] reset acq atchcalst=0, atchcalsthr=0
3550 2255.220 [TSP] clear garbage data : Success!! [read 0 times]
3551 2255.220 [TSP] TSP Wakeup...........!
I was wondering why S8200... but now its more clear.
http://forum.xda-developers.com/showpost.php?p=12797112&postcount=249
What we can do...
Collect Key Events...
Monitoring processes like start JAVA Midlets...
Then we can see infos about Heap size...
Code:
9301 433.174 P00.T10.D094.G52.E103:2D83 EXCEPTION > KJxMemoryAvailable: [B]available memory heap[/B] size is 131268608
9302 433.178 P00.T10.D300.G52.E103:2D83 EXCEPTION > KJxSvcIsFileSystemValid: return TRUE!
9303 433.178 P00.T10.D300.G52.E103:2D83 EXCEPTION > KJavaGetMidletAttributeBySuiteID suiteID = 5 is not found
9304 433.179 P00.T10.D094.G52.E103:2D83 EXCEPTION > KJxSvcIsMemoryFull fmQuotaStat.availableSize(943128576), APP_MEMORY_STATUS_MX_MEMORY_FULL_LIMIT(0)
9305 433.180 P00.T10.D094.G52.E103:2D83 EXCEPTION > KJxSvcIsMemoryFull KJx execute limit size = 16384
9306 433.180 P00.T10.D300.G52.E103:2D83 EXCEPTION > KJxSvcIsFileSystemValid: return TRUE!
Many more things...
Best Regards
Click to expand...
Click to collapse
Heap size can already be changed by accesing the jwc_properties.ini in the AppEx and the User>Exe folder.

astrotom said:
Heap size can already be changed by accesing the jwc_properties.ini in the AppEx and the User>Exe folder.
Click to expand...
Click to collapse
can you recommend a value for it??
give an example for the change??
thanks in advance

mylove90 said:
can you recommend a value for it??
give an example for the change??
thanks in advance
Click to expand...
Click to collapse
There are three jwc_properties.ini files. 1st one in Appex>SysDefault>Java>jwc_properties.ini, 2nd one in Exe>Java>jwc_properties.ini and 3rd one in SystemFS>User>Exe>Java>jwc_properties.ini. Use trix, TkFile explorer or Stune. Personally, I think the first ini file is fore the default java apps on the phone. I think the 2nd one is useless since I didnt see any java apps in that folder using stune. I think the 3rd file is for user installed java apps. I dont know since I am still in the process of modifying the whole bada firmware as far as possible and then I will later flash my phone with my custom firmware. Maybe you could help me tell which files are used for what? Ok, enough talk. Now here are settings for heap sizes that I used: (You can find heap settings at the end of each file)
## Limited MVM configuration
MAIN_MEMORY_CHUNK_SIZE = 82313216 # (78 * 1024 * 1024) + (500 * 1024), 78.5MB
JAVA_MAX_HEAP_SIZE = 65011712 # (62 * 1024 * 1024) + (0 * 1024), 62MB
JAVA_MIN_HEAP_SIZE = 10485760 # (10 * 1024 * 1024) + (0 * 1024), 10MB
MAX_ISOLATES = 4 # AMS Isolate + One application
The last setting, MAX_ISOLATES is the max number of java apps you can run simultaneously while paused. My setting allows 5 apps to run simultaneously. (Remember, Max_ISOLATES value should be one less than the desired value.) Earlier it wave could run only 3 apps.
I am surprised the Samsung provided low java heap sizes for such a good phone! Anyways enjoy!

Thanx astrotom
I'll try next days.
About WinComm... now I understand what this setting means...
I'll try to find combination to work with both, Qualcomm and WinComm.
To log also via QXDM...
Maybe BT is helpfull...
Best Regards

Uuupsi.
Not realized before. But now I have Modem Port connected with:
Upload data to pc
Hmm. But no idea how to catch Data now...
I've changed Port in WinComm...
Hmmmmmm, mabye 1 day in future.
Best Regards

I've played little bit with old SGH-U700...
It has also few similar things like Upload data to pc...
Via known code *#197328blabla... I can find Upload Funct.:
Enable Upload Funct
Disable Upload Funct
Enable Debug Mode in Low
If I try to enable... Can't enable as Dbg Lvl Low...
This U700 is damaged... (damn Touch keys)... maybe I can repair... maybe I can find out what Upload ... can do.
Best Regards
Edit.
I've set Debug Level to high, then also Enable Upload Funct is available...
But still no idea how to start Upload...

how to send AT commands to the phone? i have the first port of my phone as COM9 and the second one as COM10

Related

SQL CE is driving me crazy !

Hi !
I'm trying to create an application based on location aware concept.
And I'm trying to do a simple query to update some records in my database but it isn't working..
I'm trying to do a simple query like "UPDATE markers set status = 0 WHERE id = 10"
This is giving me an error like this "[1,8,markers]". BUT WHAT THE HELL DOES THIS MEAN ?
If I try to run que query manually it does work ! So what i'm I doing wrong ? How can I activate a (MUCH) more verbose error information ?
This is my function :
Code:
Public Sub turnMarker(ByVal id As String, ByVal status As String)
cOpen()
Dim query As SqlCeCommand = myCon.CreateCommand
query.CommandText = "UPTADE markers set status = " + status + " WHERE id = " + id + ""
Try
'MsgBox(query.CommandText)
query.ExecuteNonQuery()
Catch ex As Exception
MsgBox("Error updating markers !" + query.CommandText + ex.Message)
End Try
cClose()
End Sub
thanks !
EDIT: Nevermind ... found out the problem.
Nevertheless, does anyone know how to make errors more verbose ?
Use SqlCeException as opposed to Exception, and then run through the errors collection....
strX = strX & ex.NativeError
For I = 0 To ex.Errors.Count - 1
strX = strX & "Index #" & I & vbCrLf & "Error:" & ex.Errors(I).ToString() & vbCrLf
Next
do a search for sr.dll. you need to deploy this as part of your app to be able to see exception data when debugging .net ce apps.
or go here -> http://forum.xda-developers.com/showpost.php?p=4862355&postcount=87 .That sample project has got a copy. you'll need to add it as part of whatever project you're making.

Key press events and Screenshot(s)... via PC

Now we could try to catch Key Commands and more... with WinComm, see here:
http://forum.xda-developers.com/showthread.php?t=928170
First idea, collect Commands for Key pressing Commands like this:
Code:
OemKeyPressInd:pre[VK_HP_HOLD(s:0x495)] , now[VK_HP_HOLD(s:0x495)]
2811 0509.625 KEY_EVENT_SIG: Keycode = 0x53, STATUS = 0x0.
2812 0509.625 KEY_EVENT_SIG: Keycode = 0x8f, STATUS = 0x0.
I think we have only 7 Hardware Keys... so this should not take years.
Touchscreennavigation is little bit harder...
Second idea... Screencapture... if we find command to send to handset, then maybe possible to capture Video sequencies.
Attached short Logfile from Screenshot taking on S8500 JE7...
Best Regards
P.S.:
Also AT commands or Qualcomm commands exists also for such feature.
Yes. I saw this on QuB but also failed. Answer was something to patch Loader...
Also Key Simulator is in QuB...
Not work yet with S8500. But I think we should investigate in such things.
Because "Basic" features.
Long time ago for my other handsets I have all these Tools.
Video Capture Tool...
But NOT for S8500.
Time to change this.
Best Regards
P.S.:
Not sure AT+SUBLCD or something else with LCD is used by Kies... found via Portmon...
I've tried to log with WinComm to see more or better understnad AT commands.
4161 1018.432 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0022 1026.696 -1: EXCEPTION > __RbmCHGetUserMemory : do u need me? really? sure? huh?
Click to expand...
Click to collapse
This is shown if i try:
AT+USERMEM
About AT+SUBLCD or AT+SUBLCD? nothing... maybe wrong... maybe additional parameter needed.
Kies used this I thought... AT+LCDINFO=MAIN
Also AT+MAINLCD or AT+MAINLCD leads to nothing...
I think parameter missing...
Best Regards
Edit 1.
Maybe this is from Kies sniffed...
AT+GETDPIMG=0
WinComm shows also something...
Code:
1863 2691.134 OBEX_Report : 304[BPS], ratio=100, request=190, send=190
4414 2694.194 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0047 2702.537 -1: AGENT > __AgRbSendPacket: before send fifo, dataLen(7596), apiID(0x1000002f)
4415 2694.196 P00.T11.D001.G-1.E-01:0000 AGENT > __AgRbFifoCallback: Rcvd 7596 bytes(Type:268435503 Len:7580).
4416 2694.196 P00.T11.D001.G-1.E-01:0000 AGENT > __AgRbPacketReceiveCallback: packet id 0x1000002f
4417 2694.196 P00.T11.D001.G-1.E-01:0000 AGENT > __AgRbPacketReceiveCallback: Req Packet id is [1280], len is [11], cmd is [GetDpImg 0 ]
4418 2694.196 P00.T11.D001.G-1.E-01:0000 AGENT > *> cmd="GetDpImg 0 "
4419 2694.227 P00.T11.D001.G-1.E-01:0000 AGENT > __RbmCHSaveDisplayImg : Time to get Screen Buffer is [30ms]
4420 2694.227 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Size is 768000, TotalPage is 8, LastPageSize is 79872
4421 2694.228 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Packet Page is [0]
4422 2694.232 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Packet Page is [1]
4423 2694.234 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Packet Page is [2]
4424 2694.237 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Packet Page is [3]
4425 2694.239 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Packet Page is [4]
4426 2694.241 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Packet Page is [5]
4427 2694.244 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Packet Page is [6]
4428 2694.246 P00.T11.D001.G-1.E-01:0000 AGENT > __RBUSBWrite : Sending Packet Page is [7]
4429 2694.248 P00.T11.D001.G-1.E-01:0000 AGENT > __RbmCHSaveDisplayImg : Time to Write through USB is [21ms]
[COLOR="Red"]4430 2694.248 P00.T11.D001.G-1.E-01:0000 AGENT [/COLOR] > __RbmCHSaveDisplayImg: [B]Compressed Scrn Img Buf was sent to PC successfully[/B]
4431 2694.248 P00.T11.D001.G-1.E-01:0000 AGENT > __RbmCHSaveDisplayImg : Elapsed Time is [51ms]
4432 2694.248 P00.T11.D001.G-1.E-01:0000 AGENT > __RbmCHGetDisplayImg: GetDisplayImg Success. Return is 1
4433 2694.248 P00.T11.D001.G-1.E-01:0000 AGENT > *> return value = 1 (0x00000001)
4434 2694.248 P00.T11.D001.G-1.E-01:0000 AGENT > __AgRbPacketReceiveCallback: Res Packet result is [1], len is [7588], rsp buf is []
4435 2694.258 P00.T11.D001.G-1.E-01:0000 AGENT > __AgRbFifoCallback: Send 7604 bytes(Type:268435503 Len:7588).
4436 2694.258 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0048 2702.539 -1: AGENT > __AgRbSendPacket: write message, written data len(7596)
4437 2694.263 P00.T11.D001.G-1.E-01:0000 EXCEPTION > [CPLog]: Sub 0049 2702.606 -1: AGENT > __RbmCHReadDevConItemInfo:Success
Maybe this is our Power ON OFF Format... or QMG ...
I have problems to recieve full Data from handset...
Searching for working Tool with HEX...
AT+GETDPIMG=0
Yes, this is Screencapture... 0 seems for RAW, uncompressed...
You can use WinComm itself to catch the incoming Data... around 700 KB.
You can send AT commands also...
With other Tools I failed... maybe my fault.
I will try if I can use other compress settings...
Best Regards
Eagerly waiting for your developments! By the way that message in wincomm was funny!
waiting for you adfree to get out from all of this with something useful for ordinary users with little brain like me
@ Dokugogagoji
Very good Tool. Tested short on JE7 Firmware...
NOT your Tool, I mean before.
During my experiments I've noticed also Buffer overflow with 0... as I had problems to catch whole data. But your Tool is really great.
My Wishlist. If you have time. Please.
1.
"Video Capture"... maybe we could start with send command every 1 second?
Maybe every 2 seconds... I don't know how fast buffer can handle this...
2.
Maybe please set Standard folder for capture. Example:
c:\screencap...
Nice would be, we had access to Config XML or other Text file to edit this.
Thank you very much.
Best Regards
Thanx for fast progress.
After press stop, I see only waiting... nothing happens.
XP 32 Bit
But maybe my fault.
Maybe someone else can try and confirm.
Sometimes I'm not smart enough to manage task.
Best Regards
adfree said:
After press stop, I see only waiting...
Click to expand...
Click to collapse
I have the same WinXP SP3 32 bit
Another picture is reflected(mirrored). BMP is scanned from bottom to top
Yes! Works fine
1000 thanx. Yes success.
Other folder would be very nice...
C:\Dokumente und Einstellungen\topsecret\Desktop
Maybe something like set working Directory. Then add 2 folders:
...\PictureScreenshot
...\Videocapture
Or something similar.
My Desktop is full.
Thanx.
Best Regards
Strange. Not sure...
tested on JE7 and JL2. If I try to capture Video on Apps like Games or something like that.
No success.
JAVA Midlets yes...
Screencapture also possible.
So generally Command should work...
Any idea?
Best Regards
Edit 1.
Captured from JAVA Midlet...
Now the Question is also. How to get more Frames per second.
@ Dokugogagoji
How often is AT Command sent? Every second?
Thanx.
Hi Dokugogagoji,
i had stability problems with the serial port class in .NET Framework too when i started with WaveBackup, but it seems to be working quite good now. If you want, we could compare our codes and see what it needs for a good and fast connection ....
Patrick
Upgrading from .NET 2.0 to 3.5 seemed to help a little with stability for me. Funny enough, i never tried a other baudrate as 115200 so far ..... i see you're using a much higher value there .... will do some test with it.
Tested it with WaveBackup ... speed remains the same, wether you use my value or your value .... it's always round abound 120 Kb/s ....
Lock key
3602 0547.460 KEY_EVENT_SIG: Keycode = 0x8f, STATUS = 0x1.
3852 0741.977 KEY_EVENT_SIG: Keycode = 0x8f, STATUS = 0x1.
End call
4934 1102.926 KEY_EVENT_SIG: Keycode = 0x51, STATUS = 0x1.
6260 1597.151 KEY_EVENT_SIG: Keycode = 0x51, STATUS = 0x1.
Start call
6351 1646.721 KEY_EVENT_SIG: Keycode = 0x50, STATUS = 0x1.
6351 1646.721 KEY_EVENT_SIG: Keycode = 0x50, STATUS = 0x1.
Volume Up
7653 2056.734 KEY_EVENT_SIG: Keycode = 0x54, STATUS = 0x1.
7847 2160.000 KEY_EVENT_SIG: Keycode = 0x54, STATUS = 0x1.
Volume down
8096 2222.667 KEY_EVENT_SIG: Keycode = 0x55, STATUS = 0x1.
8200 2267.922 KEY_EVENT_SIG: Keycode = 0x55, STATUS = 0x1.
Menu
8424 2320.139 KEY_EVENT_SIG: Keycode = 0x53, STATUS = 0x1.
8593 2447.716 KEY_EVENT_SIG: Keycode = 0x53, STATUS = 0x1.
Camera mid
8636 2472.871 KEY_EVENT_SIG: Keycode = 0x8e, STATUS = 0x1.
8664 2508.513 KEY_EVENT_SIG: Keycode = 0x8e, STATUS = 0x1.
Camera full
8810 2563.697 KEY_PRESS_TIMER_SIG: Keycode = 0x8d, STATUS = 0x1.
0808 3689.790 KEY_EVENT_SIG: Keycode = 0x8d, STATUS = 0x1.
On release key
STATUS = 0x0
Click to expand...
Click to collapse
headset button
0491 8305.228 KEY_EVENT_SIG: Keycode = 0x8a, STATUS = 0x1.
Click to expand...
Click to collapse
Taken from here:
http://forum.xda-developers.com/showpost.php?p=18960187&postcount=1330
Thanx.
Maybe some day usefull...
Best Regards
SetText
Nice Command, you can send Text to handset...
For instance long Link from PC... into Dolfin/Browser or SMS.
Short tested.
Best Regards
1 way for Key Input are AT Commands...
Digits 0-9
Code:
AT+KEY=10
AT+KEY=1
AT+KEY=2
AT+KEY=3
.
.
AT+KEY=9
Call Button
Code:
AT+KEY=11
End Button
Code:
AT+KEY=12
#
Code:
AT+KEY=13
*
Code:
AT+KEY=14
Delete/back
Code:
AT+KEY=15
Best Regards
http://forum.xda-developers.com/showpost.php?p=21567479&postcount=1
I have totally forgotten this source...
My Wave 2 has broken glas... and I can't click on Display...
PC Tool for text input via AT Commands would be nice...
Perfect would be... Navigation via Mouse...
Best Regards
Need navigation on broken display...
WinComm Log
Code:
[TSP] ID = 2, State = 0x20, X = 309, Y = 375
[TSP] All Fingers released : Send touch_screen_release!
Later more...
Any ideas?
Best Regards

Running Homebrew Native Executables - Status: DONE!!

[2012/06/03] IMPORTANT UPDATE HERE
Hi hackers,
This is meant as a little update on one of the projects I've been working on. I'm kinda stuck now. I have a suspicion of what the problem is. I thought that maybe if I write a post about it, me or someone else will have an idea on how to get this working.
The goal is to run native homebrew executables on WP7
This has not been done yet. All apps are Silverlight apps that are compiled as DLL and run by Taskhost.exe with least privileges. All other executables are signed by Microsoft. Executables that are compiled as ARM executable cannot be started.
The angle is to create a certificate that allows to sign a WP7 executable. Then add that to the appropriate certificate store. Create an executable. Sign it with the private key. Load it onto a WP7 device. Copy it to the Windows folder. Use an OEM driver to launch the executable.
First I did research on the certificate stores. I can now with certainty state that there are 4 certificate stores:
- CA
- Root
- My
- Code Integrity
After a lot of research I finally got complete read/write access to all of these stores. The Code Integrity store contains all the certificates that are used by the Loader Verifier to verify the executable that is being launched. When the device is launched for the first time, the certificates that are in \Windows\ciroots.p7b are installed to that certificate store. These certificates have these properties:
Key Usage = 0x86 = Digital Signature, Certificate Signing, Off-line CRL Signing, CRL Signing
Entended Key Usage = Code Signing (1.3.6.1.5.5.7.3.3) + Unknown key usage (1.3.6.1.4.1.311.10.3.14)
So I used OpenSSL to create such an certificate (with private key) for myself. And I installed the certificate in the Code Integrity store.
I then used VS2008 to create a completely barebone executable (ARMv4 Console app with only Sleep(-1) in the Main). I signed it with SignTool from Microsoft.
I loaded the executable to my device and I copied it to the \Windows folder (I think the policies restrict executing to only from that folder, but I'm not sure about that).
I use the Samsung driver to launch the executable, because I need at least Standard Rights to launch an executable. The Samsung driver has Elevated Rights. My own app has only Least Privileges. Using the Samsung driver does not return any success or fail codes. But looking at the Running Processes list, I don't see my Test.exe running. It should be, because the main thread is put to sleep infinitely.
So why is this not working?
Well, I have a guess. I think it's the policies that bind the certificates in the Code Integrity store to the different accounts/chambers. In the \Windows folder there are a lot of policy xml-files. On fist boot, these are merged into PolicyCommit.xml and then compiled to policydb.vol. When the Loader Verifier (lvmod.dll) loads an executable, it queries the policies to determine access rights and chamber for that executable. The policies that matter in this context are defined in 8314B832-8D03-444f-9A2A-1EF6FADCC3B8.policy.xml. It's an xml-file that basically says this:
Code:
Microsoft Mobile Device Privileged PCA - ced778d7bb4cb41d26c40328cc9c0397926b4eea - not used in this context
Microsoft Mobile Device TCB PCA - 88bcaec267ef8b366c6e6215ac4028e7a1be2deb - honored by System Identity Group
Microsoft Mobile Device Unprivileged PCA - 1c8229f5c8d6e256bdcb427cc5521ec2f8ff011a - honored by Standard Right Identity Group
Microsoft Mobile Device VSD PCA - 91b318116f8897d2860733fdf757b93345373574 - not used in this context
VeriSign Mobile Root Authority for Microsoft - 069dbcca9590d1b5ed7c73de65795348e58d4ae3 - honored by LPC Identity Group
I should find a way to add a policy with my certificate in it. Any ideas?
Ciao,
Heathcliff74
If you are able to re-sign an executable that is already in the ROM, i would try that, so you know the problem isn't within the native code, but only with the signing. Or maybe the other way round which would be awesome.
regards
Flow WP7 said:
If you are able to re-sign an executable that is already in the ROM, i would try that, so you know the problem isn't within the native code, but only with the signing. Or maybe the other way round which would be awesome.
regards
Click to expand...
Click to collapse
That's a good idea. I must say that I don't have much faith in the current RecMod tools for WP7 right now. I am able to get the binaries recmodded so that I can disassemble them correctly. But I don't think they can be easily launched. But there are executables that are on the rom as complete binaries, instead of rom-modules. To begin with, I have to select one that does not need much privileges to run and try to sign that one and then run it.
I'm really busy with work right now, so I think I won't be able to try it until the day after tomorrow. But I will try it and will let know how that went.
Thanks!
Decompiled taskhost.exe, so it gets more easy for us to see if its able to make taskhost to start another exe for us. Lots of code tho (C code).
taskhost.c (276 KB) in attachments.
edit: Oh, WOW, this really shows how to call those anonymous methods without call signature "Hello" (signature: "??z_Hello_?mze")
Hmm, pretty much about the pause part?
Code:
if ( v10 )
{
a7 = sub_178E7(v10);
if ( a7 >= 0 )
{
a7 = sub_180A5(v7, v7 + 64);
if ( a7 >= 0 )
{
a7 = ThemeInitialize(v7 + 136);
if ( a7 >= 0 )
{
v11 = sub_1862B(v13, v7);
EnableHostAutoDehydration(v11 == 3);
v16 = 0;
a7 = InitializeEmClientEx(&a2, 0, &v16);
if ( a7 >= 0 )
{
a7 = RegisterPausedHostCallback(sub_19D0D, 0);
if ( a7 >= 0 )
{
a7 = RegisterResumingHostCallback(sub_19D31, 0);
if ( a7 >= 0 )
{
if ( v11 != 3
|| (a7 = RegisterDehydrateHostCallback(sub_19D76, 0), a7 >= 0)
&& (a7 = RegisterFreezeHostCallback(sub_19D97, 0), a7 >= 0) )
{
a7 = RegisterExitHostCallback(sub_19D55, 0);
if ( a7 >= 0 )
a7 = sub_17C0A(*(_DWORD *)(v7 + 128), 0);
}
}
}
}
}
}
}
}
UIX framework entry-point (exe)
Code:
int __cdecl sub_11114(int a1, int a2, int a3)
{
int v4; // [sp+0h] [bp-38h]@1
char Dst; // [sp+4h] [bp-34h]@1
int v6; // [sp+8h] [bp-30h]@1
int v7; // [sp+Ch] [bp-2Ch]@1
int v8; // [sp+18h] [bp-20h]@1
int v9; // [sp+28h] [bp-10h]@1
v4 = 0;
memset(&Dst, 0, 0x34u);
v8 = a3;
v6 = (int)L"res://FlightModeUXDLL!FlightMode.uix";
v7 = (int)L"FMMain";
v9 = 2;
RunApplication(&v4);
return dword_12034;
}
C++ converted
Code:
UIXApplicationInfo app;
app { ... }
RunApplication(&app);
struct UIXApplicationInfo
{
int UNK_v4 = 0;
char Dst = {0};
char* uixFile;
char* uixEntryPoint;
int UNK_v8;
int UNK_v9 = 2;
}
Then just figure out the UIX part (or test the existing "res://FlightModeUXDLL!FlightMode.uix" if it launches, if so, we made it).
___
Found this in mango dump:
> Uninstall provxml
Code:
<!-- Uninstall Xbox LIVE Extras App -->
<characteristic type="AppInstall">
<nocharacteristic type="{0c17d153-b5d5-df11-a844-00237de2db9e}"/>
</characteristic>
Is there a reason you can't just use COM interop to run native code? Check out this thread for a discussion covering the technique: http://forum.xda-developers.com/showthread.php?t=820455
athompson said:
Is there a reason you can't just use COM interop to run native code? Check out this thread for a discussion covering the technique: http://forum.xda-developers.com/showthread.php?t=820455
Click to expand...
Click to collapse
Hello "co-founder of native code on WP7"
I'm fully aware of the possibility of native code through COM. I use it for example in the WP7 Root Tools. But I just wanted to take it a step further. Running native executables give a lot more freedom. Not being bound to the watchdog, getting higher privileges and running in the background for instance. But there's a whole lot more. So that's why I started research on it. Thanks anyway. You helped making native code possible on WP7.
Ciao,
Heathcliff74
The taskhost.exe is our RAM, because our app run in it, giving us full RAM access inside our "viritual ram". So that means we own all strings, int, floats etc. Then rewrite the ram to change strings in mscorlib. The checksum if an exe has been modified is only checked at startup, without checking if we modify the dll at runtime.
My purpose with this is that some function's call external apps, where we rewrite the args going in to the function. Just find an exploitable function and modify it after JIT has been there one before generating the pre ram, that we modify and call yet again but with the modified ram values behind.
Marshal.Copy, my friends, there.
[SecurityFuckingSafeCritical]
(byte[] source, IntPtr destination, int length)
> Interopservices leaked dll (\windows)
destination = our ram ptr to modify.
fiinix said:
The taskhost.exe is our RAM, because our app run in it, giving us full RAM access inside our "viritual ram". So that means we own all strings, int, floats etc. Then rewrite the ram to change strings in mscorlib. The checksum if an exe has been modified is only checked at startup, without checking if we modify the dll at runtime.
My purpose with this is that some function's call external apps, where we rewrite the args going in to the function. Just find an exploitable function and modify it after JIT has been there one before generating the pre ram, that we modify and call yet again but with the modified ram values behind.
Marshal.Copy, my friends, there.
[SecurityFuckingSafeCritical]
(byte[] source, IntPtr destination, int length)
> Interopservices leaked dll (\windows)
destination = our ram ptr to modify.
Click to expand...
Click to collapse
Hmmm. 10 Points for inventiveness But I don't think it's going to work. Even if you could find a function where the executable is passed as argument you still don't have enough privileges. Most code will have the path to the executable hardcoded instead of an argument. And you will still run under TaskHost with Least Privileges. And you need to have at least Standard Privileges or higher to launch most executables with CreateProcess() or ShellExecuteEx().
Sent from my OMNIA7 using XDA Windows Phone 7 App
Heathcliff74 said:
Hmmm. 10 Points for inventiveness But I don't think it's going to work. Even if you could find a function where the executable is passed as argument you still don't have enough privileges. Most code will have the path to the executable hardcoded instead of an argument. And you will still run under TaskHost with Least Privileges. And you need to have at least Standard Privileges or higher to launch most executables with CreateProcess() or ShellExecuteEx().
Sent from my OMNIA7 using XDA Windows Phone 7 App
Click to expand...
Click to collapse
"And you will still run under TaskHost with Least Privileges"
I know, i dont need standard rights to do it. Because i call a mscorlib function that is trusted code. I think you saw my idea wrong, let me show you.
[mscorlib, SecuritySafeCritical]
public static void example(string str)
{
string mscorlibStr = "you cant change my value ";
Debug.WriteLine(mscorlibStr + str);
}
This is where we modify "mscorlibStr" in ram and the function is still trusted code. But its doing something totally different from that it would do.
fiinix said:
"And you will still run under TaskHost with Least Privileges"
I know, i dont need standard rights to do it. Because i call a mscorlib function that is trusted code. I think you saw my idea wrong, let me show you.
[mscorlib, SecuritySafeCritical]
public static void example(string str)
{
string mscorlibStr = "you cant change my value ";
Debug.WriteLine(mscorlibStr + str);
}
This is where we modify "mscorlibStr" in ram and the function is still trusted code. But its doing something totally different from that it would do.
Click to expand...
Click to collapse
I really hate to break it for you. But the [SecuritySafeCritical] is indeed trusted code, but it will still check your privileges. All the API functions that do system modifications like that, do the security checks. Read the note under SecuritySafeCriticalAttribute here. Also read this; same problem. You are in process TaskHost.exe and it is launched in LPC (Least Privilege Chamber), so every CeImpersonateToken() to do the important stuff will fail and return an error code. I also wouldn't know how you would modify the stack-frame of a function that you call. Seems impossible to me, because at the moment you call the function, that stack-frame has not been allocated yet.
Anyway, although I don't think that is going to work in any way, I absolutely don't want to discourage you, because my experience is that when you try enough, sooner or later you will find an exploit
Ciao,
Heathcliff74
Currently installing "Windows Embeded Compact 7", because this lousy ARMv4 compiler (from WM5-6) maybe generates wrong ARM op-codes (WP7 runs ARMv7), therefore it says "Invalid program signature" (or what error it was).
Maybe ARMv7 is'nt even backwards compatibility with ARMv4.
By compiling with the ARMv7 compiler from WEM7, it will probably (hope) generate a valid exe.
Thats it..
edit:
*Research
"Armv7 is the processor instruction set used starting with the S5L8920 in the iPhone 3GS and in all subsequent devices. Processors that support Armv7 instructions are backward compatible with Armv6 instructions, but attempting to run binaries compiled for Arm7 on older, Armv6 processors will result in the error: "Bad CPU type in executable"."
Source: http://theiphonewiki.com/wiki/index.php?title=Armv7
___
"As I said in the past, the ARMv6 CTR was kept backwards compatible with
> > > earlier versions of the ARM architecture (and ARM tried to keep it like
> > > this as much as possible). With ARMv7, you have multiple levels of cache
> > > and different types (e.g. ASID-tagged VIVT I-cache). There is no way you
> > > could encode the useful information while keeping the same (and only)
> > > register, hence the the need for a new register."
Source: http://www.spinics.net/lists/arm-kernel/msg58813.html
As i see this (^), all ARMv > 6 == no backwards
ARMv6 had backwards to 4
ARMv7 >> ARMv6 compatibility, not more.
_
Problem officer even running ARMv4???
>On a non ARMv4 backwards compatibility CPU.
Profit!!
__
[ExeX.exe] (the one that i recompiled to a state: "this has to work")(ARMv4)
Decompilation:
Code:
; Attributes: bp-based frame
EXPORT start
start
var_20= -0x20
oldR4= -0x1C
oldR5= -0x18
oldR6= -0x14
oldR7= -0x10
oldR11= -0xC
oldSP= -8
oldLR= -4
MOV R12, SP
STMFD SP!, {R4-R7,R11,R12,LR}
ADD R11, SP, #0x1C
SUB SP, SP, #4
MOV R4, R3
MOV R5, R2
MOV R6, R1
MOV R7, R0
.
Next up, decompile a ARMv7 from a raw device. (how, someone has one)
fiinix said:
Next up, decompile a ARMv7 from a raw device. (how, someone has one)
Click to expand...
Click to collapse
I think you'll find what you're looking for here: http://forum.xda-developers.com/showthread.php?t=681659 in the dump of the IMAGEFS. What did you use to decompile it? IDA Pro, or a different thing?
athompson said:
I think you'll find what you're looking for here: http://forum.xda-developers.com/showthread.php?t=681659 in the dump of the IMAGEFS. What did you use to decompile it? IDA Pro, or a different thing?
Click to expand...
Click to collapse
IDA Pro, yes. Ill see if i can dump that "nbh" (used to nb0), and extract a fully operable exe that is not corrupted.
fiinix said:
IDA Pro, yes. Ill see if i can dump that "nbh" (used to nb0), and extract a fully operable exe that is not corrupted.
Click to expand...
Click to collapse
First use Andim's WP7 Rom Tools to extract the rommodules. Remember to always dump a folder, not a single file.
Then use Denomitor's version of Recmod and follow the instructions in the post. That works most of the time.
Going forward
Currently building the WP7 ARMv7 commandline, getting closer.
Current cmd (not working, no need to help):
Code:
"C:\WINCE700\sdk\bin\i386\arm\cl.exe" /Od /D "_DEBUG" /D "_WIN32_WCE=0x700" /D "UNDER_CE" /D "ZUNE_HD" /D "WINCE" /D "DEBUG" /D "_WINDOWS" /D "ARM" /D "_ARM_" /D "_UNICODE" /D "UNICODE" /D "_CRT_SECURE_NO_WARNINGS" /Gm /EHsc /MTd /Gy /fp:fast /GR- /Fo"C:\Users\Steven VM\Desktop\ARMv7\Build\Debug/" /Fd"C:\Users\Steven VM\Desktop\ARMv7\Build\Debug/vc80.pdb" /W3 /c /Zi /TP /QRfpe- /QRarch7 "C:\Users\Steven VM\Desktop\ARMv7\main.cpp"
/QRarch7 is the ARMv7.
edit:
HOORRY SHEEAT
generated:
> main.obj
> vc80.idb
> vc80.pdb
, feels soo good:
main.exe is there.
IDA Pro says "ARM AND THUMB MODE SWITCH INSTRUCTIONS", just like others.
Code:
; Input MD5 : B50E8D8395DE7CA2419464DC3CE0BC74
; File Name : C:\Users\Steven\Desktop\burn\main.exe
; Format : Portable executable for ARMI (PE)
; Imagebase : 10000
; Section 1. (virtual address 00001000)
; Virtual size : 00000018 ( 24.)
; Section size in file : 00000200 ( 512.)
; Offset to raw data for section: 00000400
; Flags 60000020: Text Executable Readable
; Alignment : default
; Processor : ARM
; Target assembler: Generic assembler for ARM
; Byte sex : Little endian
; Segment type: Pure code
AREA .text, CODE, READWRITE, ALIGN=4
; ORG 0x11000
CODE32
EXPORT start
start
var_4= -4
SUB SP, SP, #4
MOV R3, #1
STR R3, [SP,#4+var_4]
LDR R0, [SP,#4+var_4]
ADD SP, SP, #4
BX LR
; End of function start
Made an empty entry point as from above ^:
Code:
int wWinMainCRTStartup()
{
return 1;
}
PE Explorer (main.exe):
Machine: THUMB
Operating System Version: 7.0
Image Version: 7.0
Subsystem Version: 7.0
Subsystem: WinCE GUI
**** so CLOSE!
Successful copied "main.exe" and "ExeX.exe" to "\Windows", where i have the right to launch them remotely.
Method:
WP7Process p = device.LaunchEXE(@"main.exe", "");
main.exe (no signing, ARMv7):
System.UnauthorizedAccessException: Access is denied.
WP7Process p = device.LaunchEXE(@"ExeX.exe", "");
ExeX.exe (signed with CA/ROOT custom, ARMv4):
System.Runtime.InteropServices.COMException (0x800704EC): This program is blocked by group policy. For more information, contact your system administrator.
There IS different things going on! Something is missing, but what
edit:
Signed main.exe with custom XDA ROOT certificate (ARMv7):
signtool.exe sign /sha1 "[CertChomp]" "main.exe"
> Now main.exe also gets "This program is blocked by group policy. For more information, contact your system administrator."
Ill see if i can add it to startup list , if it boot from there.
edit 2:
Nope gonna hijack "fieldtestapp.exe" with my app because policy says:
Risky-mode.Activate();
Backup(fieldtestapp.exe, backupPath);
Copy(main.exe, > fieldtestapp.exe);
"LOADERVERIFIER_ROUTE_BY_NAME"
"LOADERVERIFIER_EXE_AUTHZ_INROM_ROOT"
<Rule Description="Route fieldtestapp.exe" ResourceIri="$(LOADERVERIFIER_ROUTE_BY_NAME)/PRIMARY/WINDOWS/FIELDTESTAPP.EXE" SpeakerAccountId="$(SYSTEM_USER_NAME)" PriorityCategoryId="PRIORITY_LOW">
<Authorize>
<Match AccountId="$(FIELDTESTAPP_EXE_SID)" AuthorizationIds="LV_ACCESS_EXECUTE" />
</Authorize>
</Rule>
<Rule Description="Authorize fieldtestapp.exe be loadable to $(FIELDTESTAPP_EXE_SID) and chambers" ResourceIri="$(LOADERVERIFIER_EXE_AUTHZ_INROM_ROOT)/WINDOWS/FIELDTESTAPP.EXE" SpeakerAccountId="$(SYSTEM_USER_NAME)" PriorityCategoryId="PRIORITY_STANDARD">
<Authorize>
<Match AccountId="$(FIELDTESTAPP_EXE_SID)" AuthorizationIds="LV_ACCESS_EXECUTE,LV_ACCESS_LOAD" />
</Authorize>
</Rule>
edit 3:
Seems like "fieldtestapp.exe" is ROM locked. Need to try out some other targets.
edit 4:
Target acquired "ProximitySensorDisable.exe" > "ProximitySensorDisableBackup.exe"
Successful copy == no ROM lock.
edit 5:
There exists two types of talking to the LoadVerifier (the: This program is blocked by group policy.):
Direct exe name OR special certificate
How we do:
> Direct exe (hijack exe)
How we cant do (SHA1) (Nope, ain't gonna happen):
> We certainly dont have Microsofts certificate so this way is a nodo, haha lol, no do way.
(1: direct exe name) /LOADERVERIFIER/GLOBAL/AUTHORIZATION/PE_AUTHZ/NONE/NONE/PRIMARY/WINDOWS/CFGHOST.EXE
(2: static/pre certificates) /LOADERVERIFIER/GLOBAL/CERTIFICATES/HASH/SHA1/91B318116F8897D2860733FDF757B93345373574
edit 6:
Yep, loads of edits, just for you.
Allowed exe's to run (sorted a-z) (direct exe) (pre cert removed):
Code:
ACCESSIBILITYCPL.EXE
ACCOUNTSMANAGER.EXE
ALARMS.EXE
APPCHECKERSHIM.EXE
APPPREINSTALLER.EXE
AUTODATACONFIG.EXE
AUTOSIM.EXE
AUTOTIMEUPDATE.EXE
BRIGHTNESSCPL.EXE
BTUXCPL.EXE
CALENDARAPP.EXE
CALLSETTINGSHOST.EXE
CALNOT.EXE
CALUPD.EXE
CAM_FW_UPDATE_UI.EXE
CELLUXCPL.EXE
CERTINSTALLER.EXE
CFGHOST.EXE
CFLAUNCHER.EXE
CHDIALERHOST.EXE
CIPHASE2.EXE
CLIENTSHUTDOWN3.EXE
CLOCKNOT.EXE
CMACCEPT3.EXE
COLDINIT.EXE
COMMSVC.EXE
COMPOSITOR.EXE
CONFIGDM.EXE
CONFIGXML.EXE
CONMANCLIENT3.EXE
CONTACTS.EXE
CPROG.EXE
DATETIMECPL.EXE
DCVSSWITCH.EXE
DEPOTCOPY.EXE
DEVICEFEEDBACKCPL.EXE
DEVICEREG.EXE
DIAGPORTCHANGETEST.EXE
DLLHOST.EXE
DMSCHEDULERCALLBACK.EXE
DMSRV.EXE
DMSTOOLS.EXE
DUACLIENT.EXE
DW.EXE
EDM3.EXE
EMAIL.EXE
EMAILSETUP.EXE
ENDPOINT.EXE
FCROUTERCMDTEST.EXE
FIELDTESTAPP.EXE
FLIGHTMODE.EXE
GAMESUX.EXE
IEXPLORE.EXE
INITIATEDMSESSION.EXE
INVALIDLICENSEUXLAUNCHER.EXE
KEYBOARDCPL.EXE
LASSCREDENTIALEXPIRATIONCHECK.EXE
LASSRESTARTER.EXE
LIVETOKEN.EXE
LOCKCPL.EXE
LOOPBACKTEST.EXE
MEDIAGROVEL.EXE
MEUX.EXE
MITSMAN.EXE
MMSPRPROXY.EXE
MMSTRANSHOST.EXE
MULTIMEDIALAUNCHER.EXE
MYPHONECPL.EXE
MYPHONETASKSRUNTIME.EXE
NATIVEINSTALLERHOST.EXE
OFFICEURL.EXE
OMADMCLIENT.EXE
OMADMPRC.EXE
OMHUB.EXE
ONBOOTSQM.EXE
ONENOTEMOBILE.EXE
OOBE.EXE
PACMANINSTALLER.EXE
PHOTOENT.EXE
PHOTOENTCAPTURE.EXE
PHOTOUPLOADER.EXE
PPT.EXE
PWORD.EXE
PWRLOGCTRL.EXE
PXL.EXE
RAPICONFIG.EXE
REGIONCPL.EXE
RMACTIVATE.EXE
SAPISVR.EXE
SECSIMTKIT.EXE
SERVICESD.EXE
SERVICESSTART.EXE
SETTELEPORTMODE.EXE
SETTINGS3.EXE
SHORTMSG.EXE
SICLNT.EXE
SIGNALEVENT.EXE
SIREPSERVERAPPDEV.EXE
SMSETTINGS.EXE
SMSTRANSPORT.EXE
SOUNDCPL.EXE
SPEECHCPL.EXE
SPMC.EXE
SQMEVENT.EXE
SSUPDATE.EXE
TASKHOST.EXE
TELSHELL.EXE
TESTSHOW.EXE
THEMECPL.EXE
TOGGLEBROWSERHIBERNATION.EXE
TOGGLEDOG.EXE
UDEVICE.EXE
UIF.EXE
UNIFIEDPAIR.EXE
USBMGR.EXE
WEBSEARCH.EXE
WIFIUXSPLASH.EXE
WLANEXT.EXE
WLIDSETUP.EXE
WWANDATAMGR.EXE
XDRMREMOTESERV.EXE
ZIPVIEW.EXE
ZMFTASKLAUNCH.EXE
How code (yes i know its super un-optimized, fast put together):
Code:
var doc = XDocument.Load(File.OpenRead("SamsungOmnia7_BasePolicy_webserver.xml"));
var ea = doc.Elements().ToArray()[0].Elements()
.Where(x => x.Name.LocalName == "Rule")
.Where(x => x.Attributes("ResourceIri").Count() > 0)
.Where(x =>
{
var r = x.Attribute("ResourceIri").Value;
return r.Contains("LOADERVERIFIER") && r.ToLower().Contains(".exe") && !r.Contains("CERTIFICATES");
})
.Select(x =>
{
var v = x.Attribute("ResourceIri").Value;
var l = v.LastIndexOf('/');
return v.Substring(l + 1);
})
.Distinct()
.OrderBy(x => x)
.ToArray();
edit 7:
yeah, lol i say too.
Unprotected exe (FCRouterCmdTest.exe)
> c:\Project Work\SGH-i707(Cetus)\FCRouterCmdTest\Windows Mobile 6 Professional SDK (ARMV4I)\Release\FCRouterCmdTest.pdb
mfw samsung use "Windows Mobile 6 Professional SDK (ARMV4I)"
Wow, this truly was a big step today
Done hacking today.
"After a day, there comes another day"
@fiinix,
You did a lot of testing. Good job, man.
A few comments:
0x800704ec "blocked by group policy" is THE error of the new WP7 security model. It is basically telling you to go f*ck yourself. Everything you do without enough privileges or capabilities results in this error.
The two ways of policies, exe-path and cert-hash, is result of difference between rom-modules and executables that are signed and added as a file. Rom-modules are not even normal files. You can't open and read them. They are executable sections that are mapped in rom-address-space. You can only call loadlibrary() and createprocess() on them. Since they are only executable sections, they don't have a signature, like a normal executable file would have. Therefore they are referred to with an exe-path. You may safely assume that every path to an executable in the policy files is referring to a rom-module and can't be overwritten in any way (except by cooking your own rom - who is going to unlock our bootloaders?!?) Other than that, there are a few signing certs that Microsoft has. Signing the different executables with different privileges and accordingly a different cert. Their hashes are in the policies.
Using ARMv7 isn't going to add much I'm afraid. Although it may make a difference in the exe-header. But you've seen tools that were really old, remember And they were signed to have TCB access. And they were compiled for ARMv4. So it should not make much difference.
I did some testing with certificates myself yesterday. Up until Zune totally went bezerk on it. I don't know what happened, but after removing my own cooked certs it all seems normal again. Zune started using 100% cpu on verifying certs and dropping my connection all the time. Help! So I haven't made much progress. I will try again later. Hope it will go better. And I will try to resign an existing executable, as Flow WP7 suggested.
According to policy on my omnia (webserver dumped) there seems to exist two typed of HDD, one ROM hard coded and one that points to internal sd card. It seems that all exe and dll on the sd are not "protected" and therefore can be hijacked.
Seems like ARMv4 will be enough, but to be on the safe side i compile with both, to have more chance getting it work.
Zune, hmm, did not seem to like you, maybe Microsoft DDOS'ed you lol
"Sent from my fingers on my phone", don't expect way too long text
XxXPachaXxX said:
Excuse my ignorance...I'm a noob...This hack may also work on LG devices?
Click to expand...
Click to collapse
At the moment fiinix and I are both working on Samsungs and we use a couple of Samsung-specific exploit to get deeper in the system and getting a better understanding of the system. The ultimate goal is to find exploits that will work for all devices. But we're not at that stage yet. Hacking is research, a lot of trying and being lucky sometimes. Just bear with us
Ciao,
Heathcliff74

Security related Questions

SecretKey.key
Any idea what this is for?
Searched little bit through folder Security...
Found in S8500XPKJ1.
Best Regards
For quick insight:
Main function is SpkiDispatch , it does create this file by calling SpkiSaveMasterSecretKey, together with that key it does create directories
"/Security/Log/"
"/Security/Log/Cert/"
"/Security/CM"
SpkiSaveMasterSecretKey does use functions
SecFrameGetIMEI
SpkiBase64Decode
SecCrDecodeRSAPublicKeyEx
Whole "Spki" functions family seems to be related with OS certificate manager. And yeah, looks like it is based on IMEI, or does include IMEI itself.
//edit:
Oh yes, string which is hardcoded into APPS and is being decoded by Base64 during runtime (probably kind of init state of the key) is
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKyA2m2/PTRbsv9Y+39R6wroIniRv3nAUcOPH6dhg/9+2sCoWk0BgDtmfNMtUpueEzAr1OmAtxIfxt+gcaaFGDTr2NiY4ML9NhIv0frmlEsE8CLZFcMLYnCaeo7IMpDhnkUJA/aFhm42hmHM//e9sW2zOeN/oFrZ6wH7BEJmVEpQIDAQAB
Click to expand...
Click to collapse
from the looks of that string - I think you're looking at ... ahem wait for it ... a secret key -- or perhaps one half of a public/private key pair. Something that AES128 would be perfect for... good luck cracking that one.
Compared between S8500 and S8530... both on KJ1:
Code:
535730310093C300064D4F42494C45C5000431303234C60080
Something human readable like this:
Code:
SW01 MOBILEƅ 1024
So first 25 Bytes are for header...
Then 128 Bytes...
Hmmm... 128 Bytes could be RSA 1024 encrypted...
Best Regards
Factory Production Mode
This seems interesting... for me...
Tested on XXJEB...
If I play with Developer Commands... for instance:
Code:
> *> cmd="[B]CheckFPM[/B]"
> DevGetHomeDLFlag : Address(0x1dcc0000) flag(0xffffffff)
> RbmCHCheckHomeDLFlag : FLAG value=0x8,result=0
> *> return value = -1 (0xFFFFFFFF)
Code:
> *> cmd="[B]EnableFPM[/B]"
> DevGetHomeDLFlag : Address(0x1dcc0000) flag(0xffffffff)
> DevSetHomeDLFlag : Address(0x1dcc0000) flag(0x0000fff7)
> DevGetHomeDLFlag : Address(0x1dcc0000) flag(0x0000fff7)
> RbmCHEnableHomeDLFlag : FLAG value=0xfff7,result=1
> *> return value = 1 (0x00000001)
and...
Result is, after next Boot Wave starts with this funny Screen blue, then green... known by wrong key combination...
If I have changed to Qualcomm before... I can also write NV items via QPST...
Maybe here are more funny Flags possible... Check in JTAG dump at 0x1DCC0000...
Best Regards
I have found reason, how Wave checks "valid" apps_compressed.bin... also Boot...
Multiloader or every Flashing action writes own 512 Byte Info Block...
You can find them in 512 MB Full dump... from JTAG or from Ram Dump eXtractor:
http://forum.xda-developers.com/showpost.php?p=39658811&postcount=23
Search for this HEX value...
Code:
3412CDAB02000000
Now you can see your PC name... and your Country too...
your own IP address is also stored...
The other data are from last 1024 Bytes from boot_loader.mbn and apps_compressed.bin... parts of it... later more...
Sometimes I can see this... no idea yet why... or what:
Code:
Init Case 2
or
Code:
C#O#D#E Set
Hmmm... if I see this about Code... searching for and I find this in Boot...
Code:
Samsung:UNLOCK-KEY:/Security/Disabled
Fixed one for Samsung 3G platform. This string should be long ecnough maximum length is 128 bytes
[B]A#D#D#R[/B] Set C#O#D#E Set
Hmmm, will try later...
Anyway, with this I have solved my BIG problem after M210S Firmware...
For now only with JTAG possible, but maybe later other solution... for instance via FOTA...
Best Regards
Code:
gHostInfo.pComputerName =
gHostInfo.pIP =
gHostInfo.pLocation = Germany
gHostInfo.pToolVer =
gHostInfo.uDatePC =
Nand Read ECC count 0, Retry total count 0
=================================
BootDebugBuffNandWrite
=================================
Taken from S8000 Jet dump...
Here more clear what Multiloader writes from your private data...
Best Regards
I'm trying to remove this from MultiLoader V5.67.exe...
Found in .exe
Code:
GetLocaleInfo
GetComputerName
Leads to kernel32.dll ...
Maybe I can find something else...
GetDateFormat crashes Multiloader...
Also
GetCalendarInfoA
To change into Set... I think its dangerous not to kill my Windows...
Best Regards
Edit 1.
GetComputerNameW for Unicode instead GetComputerNameA
Now Multiloader only writes first Character of your Computername... :angel:
Back to the Info Block with 512 Byte....
With Command PrtSecBoot
Code:
> SecBoot : slot num(2), mass production(0), verSecurity(2), slot age(3)
> SecBoot : invalid binary key detected
> SecBoot : slot age(3) Usb Version("S8530+XX+LA1"), usb age(1), Usb Creation time stamp "42/01/05 10:05"
> SecBoot : Code Version(""), code age(1), Code Creation time stamp ""
> SecBoot : Code Download device time("00/01/01 00:00:GMT"), host PC time("43/06/06 15:23:GMT")
> SecBoot : Used Downloading Tool is FastMultiLoader 0 5.6.7
> SecBoot : Download hostname("[COLOR="Red"][B]yourPCname[/B][/COLOR]"), location("Germany"), ip(1x3.1x3.9.xx)
> SecBoot : SysInfo change device time("00/01/01 00:00:GMT"), host PC time("00/01/01 00:00:GMT"), tool ver(""), change Method(0), age(0)
In this Info Block are stored 2 RSA 512 Signatures from Boot and 1 from apps_compressed.bin... from apps_c the second RSA 512 Sig... see here:
http://forum.xda-developers.com/showpost.php?p=38088383&postcount=68
I was able to try few things...
I can manipulate
verSecurity(2), slot age(3)
Click to expand...
Click to collapse
But tried to find
mass production(0)
Click to expand...
Click to collapse
tool ver("")
Click to expand...
Click to collapse
Here I can see Init Case 2... so this should be position for ... also:
C#O#D#E Set
I think this is set, if Unlock via Code... in theory...
A#D#D#R
No idea yet...
Maybe in this Info Block it is possible to complete disable Security check...
Best Regards
Little progress...
I am able to erase/overwrite address in 512 MB OneNAND manually via sending Commands...
http://forum.xda-developers.com/showpost.php?p=42919458&postcount=31
For now only 2000+ Bytes in FOTA area tested...
Code:
7E02EE[B]00005009[/B]8000...
7E00DD[B]00005009[/B]0008...
0x9500000 from XXLA1 S8530...
Later I hope I can erase this damn Info Block to repair my S8530 with M210S Firmware... without JTAG...
Best Regards
1.
How to find IMEI in JTAG dump?
1.1
Where is EFS address ...
2.
Contains sysinfo IMEI ?
2.1
How to find sysinfo in JTAG dump?
bada 1.x if Wave alive... in Security folder...
Then it is possible to search for in dump...
But it seems not on every Firmware on same position...
sysinfo is 6560 Bytes (19A0 HEX ) ...
Will do few tests with XXJL2... maybe laaaaaater I can identify IMEI and/or sysinfo in strange unkown JTAG dumps...
Best Regards
Edit 1.
For study maybe this:
S8500_Full512MB_IMEI_38178104728484_NandEC50_Alive
Test 1.
Search by text + Unicode... (if IMEI is correct in name...)
14 Digits instead 15...
Test 2.
Converting into NV item 550 Format...
083A...
Edit 2.
Maybe little progress... to find sysinfo in dump...
Found Header before... but there is no unique Header... with Joker between 3000 or 0 hits...
Different positions maybe "randomly" or apps_compressed Version specific...
To be sure I'm now downloading XXJF5 to compare with dump...
Strange...
I have remove sysinfo from my own JTAG dump, written back dump...
sysinfo restored or rebuild or copied from somewhere else?
Because 1:1 same...
Next attempt, to remove "Info Block" from 1FFC5000...
This is so strange...
Best Regards
http://forum.xda-developers.com/showpost.php?p=43436279&postcount=6
I'm using now this as template...
Changed only at 1FFC5000...
Then flash complete XXJL2 for compare...
Result is working S8500...
sysinfo is generated different...
And Imiation_IMEI.dat file is different...
Now will try to check few "INFO Blocks"... and compare results...
if sysinfo and/or Imiation_IMEI.dat will be different..
Best Regards
1.
How to find IMEI in JTAG dump?
1.1
Where is EFS address ...
Click to expand...
Click to collapse
Sometimes my brain works slooow...
1.
IMEI is stored in Format used in QC handsets 15 + years...
Near "MP" ... Hardwareversion...
1.1
Header of EFS seems:
Code:
ABEFCDAB
So address is:
0x1E700000
In older Firmware where Hardwareversion is PV... instead MP 2.000 or MP 1.000
Here I will check later again with open eyes... to find IMEI.
For now I will do some tests with replace ... to fully start foreign JTAG dumps to learn more about sysinfo...
Best Regards
Tested with S8500 and S8530 JTAG dumps... (on S8500)...
Attached PFS contain sysinfo and Imiation_IMEI.dat...
This force apps_compressed.bin to start with IM.. not active...
If NAND/Header Info at 0x1FFC5000 will be removed/deleted...
With RIFF JTAG for instance erase 0x1FFC 0000 to end...
For repair and educational purpose... only.
How to decrypt sysinfo?
Whole file ?
Parts of it ?
Best Regards
Little progress...
https://code.google.com/p/badadroid/source/browse/trunk/FOTA
100 years later I am able to compile these examples...
Easy under Windows 7 tested with FASMARM:
http://forum.xda-developers.com/showpost.php?p=46788023&postcount=35
I have tried with XXJEE Boot... because I need bada 1 for find sysinfo for my studies...
Very interesting.
In syssec.uniqueKey.bin I have found now S/N ...
S/N is also on Label under battery... before Samsung killed Service via Kies. It was also helpfull to download Firmware...
I was ever wondering, why I am not able to find S/N...
Anyway. These FOTA examples helps me to increase my little brain.
For now tested only these:
Code:
[B]dump[/B]_netlock_info.fota
[B]dump[/B]_unique_keys.fota
nv_[B]dump[/B].fota
Next will be write_netlock_info.ASM...
Maybe this is what I think...
Yes, I know about FLOCK. But I need this for my JTAG Fullflash journey ... and for my little brain to understand how this work...
Btw.
I have no device here with SIM or Netlock...
To look into decrypted sysinfo and see the SHA1 Hashes is also possible via these FOTAs...
Thanx.
Best Regards
Few tests later...
It seems I have to play with DEcrypted sysinfo...
http://forum.xda-developers.com/showpost.php?p=47851350&postcount=49
First test failed with write_netlock_info.ASM before...
I have used DEcrypted Version, but nothing happens...
Maybe again my fault... anyway... tiny little step forward.
1 Goal is to identify sysinfo in JTAG dump... but here I need encrypted sysinfo...
Best Regards
Aha...
The reason is not only IMEI, because normally you can find IMEI in JTAG dump, but it seems Wave can not find anymore correct sysinfo... if fulldump from other Wave is flashed via JTAG.
http://forum.xda-developers.com/showpost.php?p=47851350&postcount=49
Result is working handset without IMEI... but this no problem...
Will check if now S/N is my or also gone with the other FOTAs...
But now I can flash 512 MB Fulldump WITHOUT modification of this file...
Then restore/rebuild sysinfo via bterm + correct FOTA...
Later more.
Best Regards
"Strange"...
sysinfo contain more then 1 or 2 SHA1 Hashes...
The others looks like "not available/not active" or something...
I have no handset with Lock...
I have only compared few DEcrypted sysinfo...
Simple copy and Paste not activate the Locks...
Later more...
Best Regards
Interesting...
Unique Key known from Header Info...
Stored in 512 MB OneNAND...
Is written into MBR (512 Byte) of moviNAND...
http://forum.xda-developers.com/showpost.php?p=49989727&postcount=68
If OneNAND is full erased, by JTAG RIFF for instance... Then text instead number:
Code:
PRODUCTCODEINVALID
Hmmmm, maybe this helps me later to restore sysinfo from JTAG dumps...
Best Regards

Android port for Samsung WAVE3 (GT-S8600)

Hi all.
This thread only for developers! Only! No questions - when?!!!!!!!
This is my attempt to porting android on S8600.
I wrote custom bootloader - emmcboot, based on codeaurora LK-bootloader.
Bootloader is successfully start, work and trying to load android kernel from internal
microsd card.
Now is unsuccessfully,after type message "Uncompressing Linux... done, booting the kernel." device rebooted or stopped.
[370] Panel is power on
[370] Display initialized
[370] Display logo
[370] Waiting for modem+++
[370] Waiting for modem: Done
[370] smem ram ptable found: ver: 0 len: 6
[370] scratch: 0x8000000
[370] Starting in SD mode!
[370] SD_DETECT pin : 0x0
[380] Initializing MMC host data structure and clock!
[380] Error No. 2: Failure Initializing MMC Card!
[400] Decoded CID fields:
[400] Manufacturer ID: 27
[400] OEM ID: 0x5048
[400] Product Name: SD16G
[400] Product revision: 3.0
[400] Product serial number: 7C88FF04
[400] Manufacturing date: 2 2012
[410] Serial number -[410] serial number:
[410] partition misc doesn't exist
[410] error in emmc_recovery_init
[580]
kernel @ 208000 (4132528 bytes)
[580] ramdisk @ 1200000 (175204 bytes)
[580] cmdline = 'console=null androidboot.hardware=qcom user_debug=31'
[580]
Booting Linux
[580] smem ram ptable found: ver: 0 len: 6
[580] booting linux @ 0x208000, ramdisk @ 0x1200000 (175204)
[590] cmdline: console=null androidboot.hardware=qcom user_debug=31
Uncompressing Linux... done, booting the kernel.
source code for lk-bootloader for S8600:
https://github.com/Oleg-k/LK_BOOT_S8600
To build for S8600, type: "make -j4 s8600 EMMC_BOOT=1"
Also, i got memory dump, stage - after load oemsbl and before loading my bootloader.
as we see, oemsbl decompress and load apps_compressed.bin into memory,
starting at 0x200000.
https://www.dropbox.com/s/5wf6dp5gfgudkdc/MEM_DUMP_128MB.rar
And for for understanding boot process on MSM7x30, read this:
http://tjworld.net/wiki/Android/HTC/Vision/BootProcess#BootProcess
Welcome back my friend ))
If you able to port,I 100% will buy S8600
Good Luck
I was actually going to ask you what happened to the wave 3 port. Anyway Welcome back . But a question why don't you help rebellos and volk in the wave and wave II porting ? So the porting can be a bit more better. Just my question. :good:
Sounds interesting.
1.
You found ELF files for S8600 Boot ?
2.
You found way without JTAG, or JTAG is needed to write your Boot?
Thanx in advance.
Best Regards
CONFIG_DEBUG_LL
and
CONFIG_EARLY_PRINTK
plx <3
it's my current config for my kernel:
adfree said:
Sounds interesting.
1.
You found ELF files for S8600 Boot ?
2.
You found way without JTAG, or JTAG is needed to write your Boot?
Thanx in advance.
Best Regards
Click to expand...
Click to collapse
No, don't ELF files for S8600, i wrote new bootloader for boot linux kernel.
Now i use JTAG, but if we find a way to cript my bootloader,like appsboot.mbn,we will use regular multiloader
So cool!
http://forum.xda-developers.com/showthread.php?t=1443575
Blowfish encryption
Click to expand...
Click to collapse
Maybe PlatformDownloader_S8600_KI5.exe maybe have unsecured Boot...
But I can't flash nor I have connected my S8600 with RIFF...
TPs seems to small for my big Fingers...
Best Regards
oleg_k said:
it's my current config for my kernel:
Click to expand...
Click to collapse
Thanks. I'd check debug macros and debug uart configuration. There's few UART ports in it, and maybe kernel is printing to the wrong one... though this wouldn't explain why kernel unpacker is printing something (Uncompressing and booting comes already from zImage) - this would indicate that debug port number is correct. Are you sure that kernel and ATAGs location is correct, and RAM is set up properly by LK? Maybe something bad happens when kernel proceeds to enabling MMU and caches... I'm pretty clueless. :<
I collected some links I found useful in this article: http://xda-university.com/as-a-developer/porting-android-to-non-android-devices
Especially interesting for you might be last link in "Custom bootloader" section.
No, don't ELF files for S8600, i wrote new bootloader for boot linux kernel.
Now i use JTAG, but if we find a way to cript my bootloader,like appsboot.mbn,we will use regular multiloader
Click to expand...
Click to collapse
For S8500 I found way to write direct into OneNAND at:
Code:
0x0010 0001
No need to encrypt something...
With Multiloader... choose ETC.
http://forum.xda-developers.com/showpost.php?p=37229969&postcount=37
S8600 not tested...
This is far far away from perfect... but maybe helpfull.
Need someone who is able to remove restriction from ML to use lower adresses then 0x10000...
I was only able to change text strings... in ML...
Best Regards
On first page i posted bootloader source and memory dump, stage - after load oemsbl and before loading my bootloader.
To Adfree,
S8600 don't use OneNAND, used EMMC flash memory (like sd-card).
Today I've found S8600XXKI9.zip
I have forgotten this Firmware... but I have now short compared with Bootfiles from XXKJC... BIG differences... So I think this should be nearly identical with PlatformDownloader_S8600_KI5.exe
Still unsolved to decrypt or extract content of:
PlatformDownloader_S8600_KI5.exe
and
PlatformDownloader_S8600_KJ7.exe
Best Regards
Not my S8600... but user tried PlatformDownloader_S8600_KJ7.exe
It seems it was wrong Partition Table aka partition.bin...
Code:
Boot Binary Download Start Ch[0]
Appsboot 338.7KB OK[1.1s]
OemSbl 1757.7KB OK[1.8s]
ERR : NAK_FLASH_ERROR 0
Error : [B]partition Write[/B] [0.2s]
ERR : NAK_FLASH_ERROR 0
Download Start Ch[0]
Amss 16654.3KB OK[15.6s]
Apps 29622.3KB OK[54.1s]
_Open_Europe_Common 40370.2KB OK[73.5s]
(Low) 2980.3KB OK[1.9s]
ERR : NAK_INVALID_CONTENT 0
ERR : _Open_Europe_Common Erase
Now S8600 ask for QHSUSB_DLOAD
My first idea is Qualcomm QPST now...
Or maybe if Driver used, then Multiloader will work again... for second attempt..
Found only 64 Bit Driver yet... not tested nor Thread... only attachment...
http://forum.xda-developers.com/attachment.php?attachmentid=631288&d=1308601930
Will check also QPST to check what is needed...
Best Regards
Edit 1.
More Driver...
http://forum.xda-developers.com/showpost.php?p=21911621&postcount=2
Okay...
It seems for QPST fsbl.mbn is missing...
I can remember from old MSM6250 handsets it is mandatory to have all files for QPST... because otherwise you need JTAG...
Important...
Qualcomm not use Encryption for QPST files...
This is Samsung thingie + "end.bin" last 1024 Byte...
So decrypt all Bootfiles and cut last 1024 Byte...
For fsbl.mbn I will check JTAG dump from S8600...
Best Regards
Edit 1.
http://forum.xda-developers.com/showthread.php?t=1367055
downgrade_WM6_boot.zip contain fsbl.mbn ... maybe as example...
http://forum.gsmhosting.com/vbb/f634/htc-desire-s-qhsusb_dload-driver-1436354/
Found this...
Here is also fsbl.mbn maybe not available... or...
But maybe if we can attach such S8600 we can see few infos...
Best Regards
Edit 1.
About QPST Version contain this eMMC...
Code:
4. RELEASE NOTES
...
10/27/11 QPST [B]2.7.378[/B]
1) Add support for QSC11x5 CDMA only (4073) and CDMA+GSM (4074).
2) Fix problem with eMMC Software Download not correctly patching addresses > 8 GB.
10/13/11 QPST 2.7.377
1) Fix crash when QPSTServer.config are NULs (bad format).
2) Add model ID 4072 = "APQ8064". Apps processor only, no service programming.
3) Change flash programmer name from nprg9615.hex to nprg9x15.hex.
4) Add emergency download support for user partitions.
5) Fix case where user partition download fails if the flash programmer is on a file share.
6) Fix error case when add port is used but no port is specified.
7) Fix case where restoring an EFS file doesn't work if the file was modified by QXDM.
8) In Service Programming BC SMS fix case where if user enters 32 as the service type it get written to NV as 4096.
9) Fix case where a phone will stay in "no phone" state if the phone takes > 20 seconds to reboot.
10) Take care of cases in eMMC Software Download where we try to lock the disk volume but the drive letter isn't available.
11) Fix "server busy" issue when a device connects but it's modem isn't running.
12) Insert more status message in Memory Debug app so that we can see why fast unframed dump failed.
8/17/11 QPST 2.7.375
1) Add support for MDM9615 (model 4070). Rename model 4068 to 7627A-ANDROID from SURF7627A.
Add model 4071 (7627A-WinMob). Add 1x/UMTS service programming to 4068 and 4071.
2) eMMC Software Download: Don't try to lock volume if drive letter not present.
Devices that use GPT will not mount and get a drive letter assigned.
7/22/11 QPST 2.7.374
1) Added missing file to installer to fix Service Programming problem in 2.7.373.
2) For eMMC Software Download, abort the download if a sparse="true" directive is present.
Sparse files cannot be downloaded with QPST, only with fastboot.
3) Began the process of moving QPST application and server settings from registry to
configuration files.
4) Added more error checking to EFS Explorer file drop code.
7/5/11 QPST 2.7.373
1) Add support for SURF8960 model ID 4069.
2) Fix issue with Port Enable/Disable for IP Ports.
3) NAND Software Download: Correct flash programmer descriptions for 7225A, 7625A, 7227A, and 7627A.
4) Roaming List Editor: Added two new bands LTE 24 and LTE 25.
5) eMMC Software Download:
- Fix problem where some file names print as "(null)".
- Add support for Meta Build contents.xml file ("Build Contents"). The contents file will provide the path for the
rawprogram and patch files, extra search paths, and names of flash programmer and boot image files.
- Ignore unexpected elements in schema.
- Support zeroout directive to zero parts of partitions.
- Allow usage by app of "orderly" as well as surprise removal storage devices.
- Add support for computations in the <patch> (CRC32 for GPT support), <program>, and <zeroout> directives.
6) EfsExplorer:
- Enable reset button in Efs Explorer even if target not in offline mode.
- More text description in Mode column for Efs Explorer
- Modify the list context menu of Efs-Explorer.
- If the proposed item file size copy is > 2048 bytes, warn the user and bail out.
...
Adfree,
link pls for founded S8600XXKI9.zip
link pls for founded S8600XXKI9.zip
Click to expand...
Click to collapse
http://hotfile.com/dl/145796951/79ecec6/S8600XXKI9.zip.html?lang=de
Try this. If not then I search again...
About fsbl.mbn...
I have searched for fsbl_hw.c string in 4 GB JTAG dump SAMSUNG_GTS8600_FullFlash.bin...
Can not find so I think fsbl is not or in other area...
About your Memory Dump FROM_MEM_0_128MB.bin
I am not 100 % sure but maybe read problems...
Short tried to extract Cert, but string Qualcomm is not written correct...
Q5alcomm1
qualcoem.com
Click to expand...
Click to collapse
Best Regards
I try to read again memory dump )
thanks for links...
Also,
i find,what samsung used OKL4 Microkernel 3.0 (maybe 4.0)
http://wiki.ok-labs.com/Release/3.0
About ver 4.0 --
The OKL4 Microvisor is designed from the ground up as a high-performance mobile virtualization platform. It is a microkernel-based embedded hypervisor - called a Microvisor, with a small footprint and the right combination of performance and hardware support to target mobile telephony use. The OKL4 Microvisor 4.0 is distinguished by supporting mobile virtualization, componentization, and security, enabling a new generation of applications and capabilities with impact across the mobile ecosystem.
OKL4(with Qualcomm RTOS) also used in modem AMSS
http://forum.xda-developers.com/showthread.php?t=1829915
Need overview/list with Firmware packages with Bootfiles included...
Here this is what I have...
Later I will compare if difference...
Code:
XXKI9
XXKJC
S8600BOKJ1_TPLKJ1.rar
S8600BOKK6_S8500TPLKK7_T-Mobile.rar
S8600JPKK2_S8500OJPKK2_OJP.rar
S8600ZCLA1.7z
S8600NAKL1_S8600EPLKL1
Best Regards

Categories

Resources