commands/patchdata/patchdata.cif
author Tom Sutcliffe <thomas.sutcliffe@accenture.com>
Sun, 17 Oct 2010 18:43:12 +0100
changeset 86 849a0b46c767
parent 0 7f656887cf89
child 104 63fd51b1ff80
permissions -rw-r--r--
Fixed lots of issues with installing a low-caps version of fshell from SIS file. * Fixed issue in CCommandFactory whereby some APIs like GetCommandInfoL could trigger allocations on the wrong heap or signals to the wrong thread. The symptoms were often seen as a crash in the which_00 thread when running ciftest. * Lots of build fixes for when FSHELL_PROTECTED_UIDS isn't defined and when all capabilities aren't available. * Added new platform.mmh macro FSHELL_OPEN_SIGNED. * Open signing of fshell SIS files is now supported for production S60 handsets. Build fshell with the FSHELL_OPEN_SIGNED macro defined (and without defining FSHELL_CAP_ALL or FSHELL_PROTECTED_UIDS) in your platform.mmh and submit \epoc32\fshell\fshell.unsigned.sis to https://www.symbiansigned.com/app/page/public/openSignedOnline.do . The following commands are not available when using Open Signing due to Platform Security restrictions: fdb; kerninfo; chunkinfo; svrinfo; objinfo; sudo; fsck; localdrive; ramdefrag; readmem; reboot; setcritical; setpriority. Others such as chkdeps, e32header, ps, and fshell itself will run but in a restricted capacity (for example, fshell will no longer allow you to modify files in the \sys\bin directory). * Removed commands objinfo, svrinfo, chunkinfo, readmem, fsck completely when memory access isn't present - previously they would still appear in the help but would give an error if you tried to run them.

# patchdata.cif
# 
# Copyright (c) 2010 Accenture. All rights reserved.
# This component and the accompanying materials are made available
# under the terms of the "Eclipse Public License v1.0"
# which accompanies this distribution, and is available
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
# 
# Initial Contributors:
# Accenture - Initial contribution
#

==name patchdata

==argument string dll-name optional

The DLL to examine for patchable data. If not specified, list some system-wide well-known patchable constants.

==argument int ordinal optional

The ordinal of the patchable constant to examine. This should be the number from the DEF file, ie it is one-based not zero-based. If not specified lists all the data exports in the DLL.

==argument uint value optional

Set a new value for the given ordinal. If not specified, just lists the current value.

==option bool v verbose

Display verbose information when scanning for exports.

==short-description

Examine the patchable data for a DLL.

==long-description

If no DLL is specified, print various common patchable constant data values. If a DLL is given but no ordinal number, all exports that look like patchable constants are listed. For DLLs in core (xip) ROM, you'll generally see more false positives than ROFS DLLs.

Patchdata can optionally modify the value of a given patchable constant, but there are certain caveats in doing this: Overall the technique used is slightly hairy, use at your own risk: it will not work for DLLs with sparse export tables (generally this means DLLs with lots of exports and/or ABSENT exports); it may appear to work but in some situations code will continue to use the unpatched values (patching EXEXPs used in startup, ECOM plugins that have already been cached, and anything else that hard-codes loading DLLs from a particular drive). Patching a DLL that is in core (xip) image will only persist until the next reboot, but on the plus side most of the other caveats don't apply.

==copyright

Copyright (c) 2008-2010 Accenture. All rights reserved.