<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>OpenRCE: Blog</title>
        <link>http://www.openrce.org/rss/feeds/blog</link>
        <description>OpenRCE: The Open Reverse Code Engineering Community</description>
                <item>
            <title>log1949.txt -- Wondering how to to glitch the camera into producing these logs</title>
                            <pubDate>Sat, 20 Feb 2010 14:06:33 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1552/log1949.txt_--_Wondering_how_to_to_glitch_the_camera_into_producing_these_logs</link>
                                        <author>thesprawler &lt;email-suppressed@example.com&gt;</author>
                                                    <description>DSLR-A100 main firm:r021w-108&lt;br /&gt;
&lt;br /&gt;
logFlg[0] 0xff00ff00&lt;br /&gt;
logFlg[1] 0xdf00ff00&lt;br /&gt;
logFlg[2] 0xff00ff00&lt;br /&gt;
logFlg[3] 0xfd00ff00&lt;br /&gt;
logFlg[4] 0xfd00ff00&lt;br /&gt;
logFlg[5] 0xff00ff00&lt;br /&gt;
logFlg[6] 0xff00ff00&lt;br /&gt;
logFlg[7] 0xff00ff00</description>
                    </item>
                <item>
            <title>log1949.log -- created on CF card</title>
                            <pubDate>Sat, 20 Feb 2010 14:04:34 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1551/log1949.log_--_created_on_CF_card</link>
                                        <author>thesprawler &lt;email-suppressed@example.com&gt;</author>
                                                    <description>FastBoot(0|0)0x3&lt;br /&gt;
RecCommandControl() Mode Change&lt;br /&gt;
recCommand[0]:0x10,0x0,0x1&lt;br /&gt;
----- ChangeBuf 0x0000000f -&amp;gt; 0x00000001 1 &lt;br /&gt;
Cont 3,109,5,414,2439270,3,3&lt;br /&gt;
Rec Start Req&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x0-&amp;gt;0x3&lt;br /&gt;
StopIdu-NotEnable&lt;br /&gt;
Set LLK IRQ.&lt;br /&gt;
--- ImgProc Task start ---&lt;br /&gt;
--- Spool Task start ---&lt;br /&gt;
drawAll = 63683&lt;br /&gt;
------------- usb start --------------&lt;br /&gt;
--- procs Task start ---&lt;br /&gt;
--- Cache Task start ---&lt;br /&gt;
--- Storage Task start ---&lt;br /&gt;
str msg:25&lt;br /&gt;
CardDetect CardIn&lt;br /&gt;
Cont 3,109,5,414,2439270,3,1&lt;br /&gt;
idle_root Started&lt;br /&gt;
drawAll = 139978&lt;br /&gt;
UIRec 8&lt;br /&gt;
Card speed is mid.&lt;br /&gt;
UIRec 4&lt;br /&gt;
UIRec 5&lt;br /&gt;
Card speed is super.&lt;br /&gt;
MCARD works Multi-sector DMA mode.&lt;br /&gt;
Mount:0 10001&lt;br /&gt;
getDirIndex:ffff &lt;br /&gt;
UIRec 5&lt;br /&gt;
DpofParse-OpenFile-Error:0xffffff9a[A:\MISC\AUTPRINT.MRK]&lt;br /&gt;
getDirIndex:0 &lt;br /&gt;
MakeEntryList Start 0&lt;br /&gt;
MakeEntryList End &lt;br /&gt;
UIRec 5&lt;br /&gt;
str msg:26&lt;br /&gt;
Cont 3,109,5,414,2439270,3,3&lt;br /&gt;
str msg:26&lt;br /&gt;
Storage UnMountDisk() OpenCnt:0&lt;br /&gt;
SetBossLogicalKeyNopForUi&lt;br /&gt;
Bracket Cancel&lt;br /&gt;
UIRec 12&lt;br /&gt;
Nothing for key:0&lt;br /&gt;
RelLock 0x2,rem 3,buf 3,0x3-&amp;gt;0x50&lt;br /&gt;
UIRec 8&lt;br /&gt;
CacheTaskMain:bfffcfbb&lt;br /&gt;
CACHE_AHEAD_DISABLE&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x50-&amp;gt;0x3&lt;br /&gt;
drawAll = 60849&lt;br /&gt;
drawAll = 64170&lt;br /&gt;
drawAll = 60687&lt;br /&gt;
drawAll = 64906&lt;br /&gt;
UIRec 3&lt;br /&gt;
Afe 0x61&lt;br /&gt;
Afe 0x90&lt;br /&gt;
Afe 0x72&lt;br /&gt;
Afe 0x12&lt;br /&gt;
SV 0x38, ch0 0x119, ch1 0x119, Analog 0x0&lt;br /&gt;
#tv:6c,sv:30,NR:0&lt;br /&gt;
Afe 0x10&lt;br /&gt;
#expOkSmph&lt;br /&gt;
expOk&lt;br /&gt;
Afe 0x80&lt;br /&gt;
Afe 0x30&lt;br /&gt;
SV 0x30, ch0 0x59, ch1 0x59, Analog 0x0&lt;br /&gt;
Afe 0x71&lt;br /&gt;
Afe 0x31&lt;br /&gt;
Afe 0x40&lt;br /&gt;
ipc msg:1&lt;br /&gt;
&lt;br /&gt;
spl msg:1&lt;br /&gt;
splImg 32768&lt;br /&gt;
Afe 0x50&lt;br /&gt;
Cont 2,109,5,413,2439270,2,3&lt;br /&gt;
RelLock 0x0,rem 2,buf 2,0x3-&amp;gt;0x2&lt;br /&gt;
Afe 0x60&lt;br /&gt;
rec yccWait&lt;br /&gt;
ipc smraw&lt;br /&gt;
DcfEntry-&amp;gt;play_current_entryno:205d 205d 205d&lt;br /&gt;
imgProcMain 2 1&lt;br /&gt;
spl smycc&lt;br /&gt;
rec yccWait&lt;br /&gt;
rec yccWait&lt;br /&gt;
rec yccWait&lt;br /&gt;
str msg:28&lt;br /&gt;
ipc end&lt;br /&gt;
spl END&lt;br /&gt;
Cont 3,106,5,413,2439270,3,3&lt;br /&gt;
rec yccWait OK&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x2-&amp;gt;0x3&lt;br /&gt;
Card speed is super.&lt;br /&gt;
MCARD works Multi-sector DMA mode.&lt;br /&gt;
Mount:0 10001&lt;br /&gt;
str msg:27&lt;br /&gt;
writeJpeg&lt;br /&gt;
writeJpeg END&lt;br /&gt;
str msg:26&lt;br /&gt;
str msg:26&lt;br /&gt;
Storage UnMountDisk() OpenCnt:0&lt;br /&gt;
UIRec 3&lt;br /&gt;
Afe 0x61&lt;br /&gt;
Afe 0x90&lt;br /&gt;
Afe 0x72&lt;br /&gt;
Afe 0x12&lt;br /&gt;
SV 0x38, ch0 0x119, ch1 0x119, Analog 0x0&lt;br /&gt;
#tv:6f,sv:30,NR:0&lt;br /&gt;
Afe 0x10&lt;br /&gt;
#expOkSmph&lt;br /&gt;
expOk&lt;br /&gt;
Afe 0x80&lt;br /&gt;
Afe 0x30&lt;br /&gt;
SV 0x30, ch0 0x59, ch1 0x59, Analog 0x0&lt;br /&gt;
Afe 0x71&lt;br /&gt;
Afe 0x31&lt;br /&gt;
Afe 0x40&lt;br /&gt;
ipc msg:1&lt;br /&gt;
&lt;br /&gt;
spl msg:1&lt;br /&gt;
splImg 32769&lt;br /&gt;
Afe 0x50&lt;br /&gt;
Cont 2,109,5,412,2439270,2,3&lt;br /&gt;
RelLock 0x0,rem 2,buf 2,0x3-&amp;gt;0x2&lt;br /&gt;
Afe 0x60&lt;br /&gt;
rec yccWait&lt;br /&gt;
ipc smraw&lt;br /&gt;
DcfEntry-&amp;gt;play_current_entryno:205e 205e 205e&lt;br /&gt;
imgProcMain 2 1&lt;br /&gt;
spl smycc&lt;br /&gt;
rec yccWait&lt;br /&gt;
rec yccWait&lt;br /&gt;
rec yccWait&lt;br /&gt;
str msg:28&lt;br /&gt;
ipc end&lt;br /&gt;
spl END&lt;br /&gt;
Cont 3,106,5,412,2439270,3,3&lt;br /&gt;
rec yccWait OK&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x2-&amp;gt;0x3&lt;br /&gt;
Card speed is super.&lt;br /&gt;
MCARD works Multi-sector DMA mode.&lt;br /&gt;
Mount:0 10001&lt;br /&gt;
str msg:27&lt;br /&gt;
writeJpeg&lt;br /&gt;
writeJpeg END&lt;br /&gt;
str msg:26&lt;br /&gt;
str msg:26&lt;br /&gt;
Storage UnMountDisk() OpenCnt:0&lt;br /&gt;
Afe 0x61&lt;br /&gt;
Afe 0x90&lt;br /&gt;
Afe 0x72&lt;br /&gt;
Afe 0x12&lt;br /&gt;
SV 0x38, ch0 0x119, ch1 0x119, Analog 0x0&lt;br /&gt;
#tv:6d,sv:30,NR:0&lt;br /&gt;
UIRec 3&lt;br /&gt;
Afe 0x10&lt;br /&gt;
#expOkSmph&lt;br /&gt;
expOk&lt;br /&gt;
Afe 0x80&lt;br /&gt;
Afe 0x30&lt;br /&gt;
SV 0x30, ch0 0x59, ch1 0x59, Analog 0x0&lt;br /&gt;
Afe 0x71&lt;br /&gt;
Afe 0x31&lt;br /&gt;
Afe 0x40&lt;br /&gt;
ipc msg:1&lt;br /&gt;
&lt;br /&gt;
spl msg:1&lt;br /&gt;
splImg 32770&lt;br /&gt;
Afe 0x50&lt;br /&gt;
Cont 2,109,5,412,2439270,2,3&lt;br /&gt;
RelLock 0x0,rem 2,buf 2,0x3-&amp;gt;0x2&lt;br /&gt;
Afe 0x60&lt;br /&gt;
rec yccWait&lt;br /&gt;
ipc smraw&lt;br /&gt;
DcfEntry-&amp;gt;play_current_entryno:205f 205f 205f&lt;br /&gt;
imgProcMain 2 1&lt;br /&gt;
spl smycc&lt;br /&gt;
rec yccWait&lt;br /&gt;
rec yccWait&lt;br /&gt;
rec yccWait&lt;br /&gt;
str msg:28&lt;br /&gt;
ipc end&lt;br /&gt;
spl END&lt;br /&gt;
Cont 3,106,5,412,2439270,3,3&lt;br /&gt;
rec yccWait OK&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x2-&amp;gt;0x3&lt;br /&gt;
Card speed is super.&lt;br /&gt;
MCARD works Multi-sector DMA mode.&lt;br /&gt;
Mount:0 10001&lt;br /&gt;
str msg:27&lt;br /&gt;
writeJpeg&lt;br /&gt;
StopIdu-NotEnable&lt;br /&gt;
UIRec 10&lt;br /&gt;
UIAfterView 8&lt;br /&gt;
cursor x = 1936 : y = 1452&lt;br /&gt;
RelLock 0x2,rem 3,buf 3,0x3-&amp;gt;0x50&lt;br /&gt;
writeJpeg END&lt;br /&gt;
str msg:26&lt;br /&gt;
UIAfterView 4&lt;br /&gt;
UIAfterView 4&lt;br /&gt;
str msg:26&lt;br /&gt;
Storage UnMountDisk() OpenCnt:0&lt;br /&gt;
UIRec 8&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x50-&amp;gt;0x3&lt;br /&gt;
drawAll = 64863&lt;br /&gt;
drawAll = 60283&lt;br /&gt;
CacheTaskMain:bfffcfbb&lt;br /&gt;
CACHE_AHEAD_DISABLE&lt;br /&gt;
SetBossLogicalKeyNopForUi&lt;br /&gt;
Bracket Cancel&lt;br /&gt;
UIRec 12&lt;br /&gt;
Nothing for key:0&lt;br /&gt;
RelLock 0x2,rem 3,buf 3,0x3-&amp;gt;0x50&lt;br /&gt;
UIRec 8&lt;br /&gt;
CacheTaskMain:bfffcfbb&lt;br /&gt;
CACHE_AHEAD_DISABLE&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x50-&amp;gt;0x3&lt;br /&gt;
drawAll = 60843&lt;br /&gt;
SetBossLogicalKeyNopForUi&lt;br /&gt;
Bracket Cancel&lt;br /&gt;
UIRec 12&lt;br /&gt;
Nothing for key:0&lt;br /&gt;
RelLock 0x2,rem 3,buf 3,0x3-&amp;gt;0x50&lt;br /&gt;
UIRec 8&lt;br /&gt;
CacheTaskMain:bfffcfbb&lt;br /&gt;
CACHE_AHEAD_DISABLE&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x50-&amp;gt;0x3&lt;br /&gt;
drawAll = 60787&lt;br /&gt;
drawAll = 64873&lt;br /&gt;
UIRec 9&lt;br /&gt;
UIRec 3&lt;br /&gt;
Afe 0x61&lt;br /&gt;
Afe 0x90&lt;br /&gt;
Afe 0x72&lt;br /&gt;
Afe 0x12&lt;br /&gt;
SV 0x38, ch0 0x119, ch1 0x119, Analog 0x0&lt;br /&gt;
#tv:6c,sv:38,NR:0&lt;br /&gt;
Afe 0x10&lt;br /&gt;
#expOkSmph&lt;br /&gt;
expOk&lt;br /&gt;
Afe 0x80&lt;br /&gt;
Afe 0x30&lt;br /&gt;
SV 0x38, ch0 0x119, ch1 0x119, Analog 0x0&lt;br /&gt;
Afe 0x71&lt;br /&gt;
Afe 0x31&lt;br /&gt;
Afe 0x40&lt;br /&gt;
ipc msg:1&lt;br /&gt;
&lt;br /&gt;
spl msg:1&lt;br /&gt;
splImg 32771&lt;br /&gt;
Afe 0x50&lt;br /&gt;
Cont 2,109,5,411,2439270,2,3&lt;br /&gt;
RelLock 0x0,rem 2,buf 2,0x3-&amp;gt;0x2&lt;br /&gt;
Afe 0x60&lt;br /&gt;
rec yccWait&lt;br /&gt;
ipc smraw&lt;br /&gt;
DcfEntry-&amp;gt;play_current_entryno:2060 2060 2060&lt;br /&gt;
imgProcMain 2 1&lt;br /&gt;
spl smycc&lt;br /&gt;
rec yccWait&lt;br /&gt;
rec yccWait&lt;br /&gt;
rec yccWait&lt;br /&gt;
str msg:28&lt;br /&gt;
ipc end&lt;br /&gt;
spl END&lt;br /&gt;
Cont 3,106,5,411,2439270,3,3&lt;br /&gt;
rec yccWait OK&lt;br /&gt;
RelLock 0x0,rem 3,buf 3,0x2-&amp;gt;0x3&lt;br /&gt;
Card speed is super.&lt;br /&gt;
MCARD works Multi-sector DMA mode.&lt;br /&gt;
Mount:0 10001&lt;br /&gt;
str msg:27&lt;br /&gt;
writeJpeg&lt;br /&gt;
writeJpeg END&lt;br /&gt;
str msg:26&lt;br /&gt;
str msg:26&lt;br /&gt;
Storage UnMountDisk() OpenCnt:0&lt;br /&gt;
BOOT WORK AROUND&lt;br /&gt;
BOOT COMM Not First1&lt;br /&gt;
bossCameraCommReceiveCommand 0x0&lt;br /&gt;
receiveBossCameraSize Error 0x0,0x33&lt;br /&gt;
bossCameraCommSendCommand 0x4&lt;br /&gt;
bossCameraCommSendSize 0x20&lt;br /&gt;
S[0]04,00&lt;br /&gt;
S[1]1d,00&lt;br /&gt;
S[2]00,00&lt;br /&gt;
S[3]04,00&lt;br /&gt;
S[4]80,00&lt;br /&gt;
S[5]80,00&lt;br /&gt;
S[6]01,00&lt;br /&gt;
S[7]70,00&lt;br /&gt;
S[8]30,00&lt;br /&gt;
S[9]54,00&lt;br /&gt;
S[a]00,00&lt;br /&gt;
S[b]04,00&lt;br /&gt;
S[c]00,00&lt;br /&gt;
S[d]07,00&lt;br /&gt;
S[e]01,00&lt;br /&gt;
S[f]00,00&lt;br /&gt;
S[10]00,00&lt;br /&gt;
S[11]00,00&lt;br /&gt;
S[12]01,00&lt;br /&gt;
S[13]03,00&lt;br /&gt;
S[14]00,00&lt;br /&gt;
S[15]00,00&lt;br /&gt;
S[16]04,00&lt;br /&gt;
S[17]01,00&lt;br /&gt;
S[18]00,00&lt;br /&gt;
S[19]00,00&lt;br /&gt;
S[1a]00,00&lt;br /&gt;
S[1b]00,00&lt;br /&gt;
S[1c]00,00&lt;br /&gt;
S[1d]01,00&lt;br /&gt;
S[1e]00,00&lt;br /&gt;
S[1f]00,00&lt;br /&gt;
bossCameraCommReceiveCommandBk 0x3&lt;br /&gt;
bossCameraCommReceiveSizeBk 0x2d&lt;br /&gt;
R[0]ff&lt;br /&gt;
R[1]df&lt;br /&gt;
R[2]e3&lt;br /&gt;
R[3]0c&lt;br /&gt;
R[4]0f&lt;br /&gt;
R[5]00&lt;br /&gt;
R[6]00&lt;br /&gt;
R[7]00&lt;br /&gt;
R[8]00&lt;br /&gt;
R[9]00&lt;br /&gt;
R[a]e1&lt;br /&gt;
R[b]30&lt;br /&gt;
R[c]12&lt;br /&gt;
R[d]7f&lt;br /&gt;
R[e]02&lt;br /&gt;
R[f]79&lt;br /&gt;
R[10]02&lt;br /&gt;
R[11]4f&lt;br /&gt;
R[12]03&lt;br /&gt;
R[13]00&lt;br /&gt;
R[14]02&lt;br /&gt;
R[15]00&lt;br /&gt;
R[16]00&lt;br /&gt;
R[17]70&lt;br /&gt;
R[18]30&lt;br /&gt;
R[19]6b&lt;br /&gt;
R[1a]39&lt;br /&gt;
R[1b]00&lt;br /&gt;
R[1c]02&lt;br /&gt;
R[1d]80&lt;br /&gt;
R[1e]00&lt;br /&gt;
R[1f]00&lt;br /&gt;
R[20]00&lt;br /&gt;
R[21]00&lt;br /&gt;
R[22]00&lt;br /&gt;
R[23]00&lt;br /&gt;
R[24]00&lt;br /&gt;
R[25]00&lt;br /&gt;
R[26]00&lt;br /&gt;
R[27]00&lt;br /&gt;
R[28]00&lt;br /&gt;
R[29]00&lt;br /&gt;
R[2a]00&lt;br /&gt;
R[2b]00&lt;br /&gt;
R[2c]00&lt;br /&gt;
SystemFatalError = -16711679:8001eab8:80002860:800b0000:800029d8:800021ec:800023f8:80002a9c:800023a0:&lt;br /&gt;
System Error:ff010001&lt;br /&gt;
DSLR-A100 main firm:r021w-108&lt;br /&gt;
2009:08:14 18:40&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
</description>
                    </item>
                <item>
            <title>Trying to reverse the firmware for the Sony DSLR A100 camera</title>
                            <pubDate>Wed, 17 Feb 2010 23:15:11 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1550/Trying_to_reverse_the_firmware_for_the_Sony_DSLR_A100_camera</link>
                                        <author>thesprawler &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Firmware for MIPS R3000, big endian&lt;br /&gt;
I have no experience programming in assembly but with a reference manual I can slowly follow pieces of a deadlisting. This project is for fun and a way to learn about embedded systems and reversing.&lt;br /&gt;
&lt;br /&gt;
The firmware is version 1.04 and downloaded from Sony's support website for the camera. Users are instructed to copy the file (&amp;quot;DSCA100.APP&amp;quot;) to the root folder of the camera's compact flash card. &lt;br /&gt;
&lt;br /&gt;
The first 256 bytes of the file appear to be a header that identifies the firmware revision, country of operation, and is padded with nulls. &lt;br /&gt;
&lt;br /&gt;
The next 12 bytes are two instructions:&lt;br /&gt;
 la&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$1 0x80001110&lt;br /&gt;
 jr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$1 0x80001110&lt;br /&gt;
&lt;br /&gt;
Q: Is 0x80001110 the entry point for the camera app? Where is this address relative to the firmware file?&lt;br /&gt;
&lt;br /&gt;
My camera created a logfile on the compact flash card that appears to include a fn stack trace:&lt;br /&gt;
&lt;br /&gt;
SystemFatalError = -16711679:8001eab8:80002860:800b0000:800029d8:800021ec:800023f8:80002a9c:800023a0:&lt;br /&gt;
&lt;br /&gt;
By calculating the number of bytes between each of the (presumed) addresses I can attempt to discover how the firmware file is located in memory. Assuming that the three bytes 27 BD FF represent the beginning of a function, I can scan the firmware file for function addresses that are spaced apart according to the stack trace. I wrote a script to do this and...success! Well, at least the pattern of spacing between functions indicated in the fn stack does exist. &lt;br /&gt;
&lt;br /&gt;
Fn trace&amp;nbsp;&amp;nbsp; =Firmware file function address&lt;br /&gt;
0x800021ecL=0x14d4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x800023a0L=0x1688L&lt;br /&gt;
0x800023a0L=0x3780&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x800023f8L=0x37d8L&lt;br /&gt;
0x800023f8L=0x58bd4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x80002860L=0x5903cL&lt;br /&gt;
0x80002860L=0x60324&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x800029d8L=0x6049cL&lt;br /&gt;
0x800029d8L=0x6acc8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x80002a9cL=0x6ad8cL&lt;br /&gt;
0x80002a9cL=0x73218&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8001eab8L=0x8f234L&lt;br /&gt;
</description>
                    </item>
            </channel>
</rss>
