<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.theiphonewiki.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Blackhorn</id>
	<title>The iPhone Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.theiphonewiki.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Blackhorn"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/wiki/Special:Contributions/Blackhorn"/>
	<updated>2026-06-09T17:09:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Secpack_2.0&amp;diff=4646</id>
		<title>Secpack 2.0</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Secpack_2.0&amp;diff=4646"/>
		<updated>2009-08-14T15:25:18Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the security in the files sent to the [[X-Gold 608]].&lt;br /&gt;
&lt;br /&gt;
==Sections==&lt;br /&gt;
The file contains sections like structure below&lt;br /&gt;
&lt;br /&gt;
 struct section_header&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned int	id;&lt;br /&gt;
 	unsigned int	size;&lt;br /&gt;
 	unsigned int	sub_id;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
followed by the data.&lt;br /&gt;
&lt;br /&gt;
The size define the header size(0xC) and the size of data&lt;br /&gt;
&lt;br /&gt;
==Section ID==&lt;br /&gt;
 0xCF8 -- Header&lt;br /&gt;
 0x2 -- Footer&lt;br /&gt;
 0xB -- Memory Map&lt;br /&gt;
 0x10 -- File Description (type (EEP, FLS, ...), ...)&lt;br /&gt;
&lt;br /&gt;
==Loader==&lt;br /&gt;
This has two loaders, a bootrom loader which loads at 0x80000 and a bootloader loader which loads at 0x86000&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Secpack_2.0&amp;diff=4645</id>
		<title>Secpack 2.0</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Secpack_2.0&amp;diff=4645"/>
		<updated>2009-08-14T15:22:50Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the security in the files sent to the [[X-Gold 608]].&lt;br /&gt;
&lt;br /&gt;
==Sections==&lt;br /&gt;
The file contains sections like structure below&lt;br /&gt;
&lt;br /&gt;
 struct section_header&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned int	id;&lt;br /&gt;
 	unsigned int	size;&lt;br /&gt;
 	unsigned int	sub_id;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
followed by the data.&lt;br /&gt;
&lt;br /&gt;
The size define the header size(0xC) and the size of data&lt;br /&gt;
&lt;br /&gt;
==Section ID==&lt;br /&gt;
 0xCF8 -- Header&lt;br /&gt;
 0x2 -- Footer&lt;br /&gt;
 0xB -- Memory Map&lt;br /&gt;
 0x10 -- File Description (type (EEP, FLS, ...), ...)&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
fls and eep have a 0xCF8 header on the file&lt;br /&gt;
 0x634--Memory Map&lt;br /&gt;
 0x714--Descriptor&lt;br /&gt;
 0xCD4--Post secpack pointer to name&lt;br /&gt;
 0xCEC--Data length&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
You know what this is&lt;br /&gt;
&lt;br /&gt;
==Footer==&lt;br /&gt;
Files also have 0x8D4 footer before the loader&lt;br /&gt;
 0xB4--Traditional [[Secpack]]&lt;br /&gt;
&lt;br /&gt;
==Loader==&lt;br /&gt;
This has two loaders, a bootrom loader which loads at 0x80000 and a bootloader loader which loads at 0x86000&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Secpack_2.0&amp;diff=4644</id>
		<title>Secpack 2.0</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Secpack_2.0&amp;diff=4644"/>
		<updated>2009-08-14T15:22:27Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the security in the files sent to the [[X-Gold 608]].&lt;br /&gt;
&lt;br /&gt;
==Sections==&lt;br /&gt;
The file contains sections like structure below&lt;br /&gt;
&lt;br /&gt;
 struct section_header&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned int	id;&lt;br /&gt;
 	unsigned int	size;&lt;br /&gt;
 	unsigned int	sub_id;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
followed by the data.&lt;br /&gt;
The size define the header size(0xC) and the size of data&lt;br /&gt;
&lt;br /&gt;
==Section ID==&lt;br /&gt;
 0xCF8 -- Header&lt;br /&gt;
 0x2 -- Footer&lt;br /&gt;
 0xB -- Memory Map&lt;br /&gt;
 0x10 -- File Description (type (EEP, FLS, ...), ...)&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
fls and eep have a 0xCF8 header on the file&lt;br /&gt;
 0x634--Memory Map&lt;br /&gt;
 0x714--Descriptor&lt;br /&gt;
 0xCD4--Post secpack pointer to name&lt;br /&gt;
 0xCEC--Data length&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
You know what this is&lt;br /&gt;
&lt;br /&gt;
==Footer==&lt;br /&gt;
Files also have 0x8D4 footer before the loader&lt;br /&gt;
 0xB4--Traditional [[Secpack]]&lt;br /&gt;
&lt;br /&gt;
==Loader==&lt;br /&gt;
This has two loaders, a bootrom loader which loads at 0x80000 and a bootloader loader which loads at 0x86000&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Secpack_2.0&amp;diff=4643</id>
		<title>Secpack 2.0</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Secpack_2.0&amp;diff=4643"/>
		<updated>2009-08-14T15:22:04Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the security in the files sent to the [[X-Gold 608]].&lt;br /&gt;
&lt;br /&gt;
==Sections===&lt;br /&gt;
The file contains sections like structure below&lt;br /&gt;
&lt;br /&gt;
struct section_header&lt;br /&gt;
{&lt;br /&gt;
	unsigned int	id;&lt;br /&gt;
	unsigned int	size;&lt;br /&gt;
	unsigned int	sub_id;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
followed by the data.&lt;br /&gt;
The size define the header size(0xC) and the size of data&lt;br /&gt;
&lt;br /&gt;
==Section ID==&lt;br /&gt;
 0xCF8 -- Header&lt;br /&gt;
 0x2 -- Footer&lt;br /&gt;
 0xB -- Memory Map&lt;br /&gt;
 0x10 -- File Description (type (EEP, FLS, ...), ...)&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
fls and eep have a 0xCF8 header on the file&lt;br /&gt;
 0x634--Memory Map&lt;br /&gt;
 0x714--Descriptor&lt;br /&gt;
 0xCD4--Post secpack pointer to name&lt;br /&gt;
 0xCEC--Data length&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
You know what this is&lt;br /&gt;
&lt;br /&gt;
==Footer==&lt;br /&gt;
Files also have 0x8D4 footer before the loader&lt;br /&gt;
 0xB4--Traditional [[Secpack]]&lt;br /&gt;
&lt;br /&gt;
==Loader==&lt;br /&gt;
This has two loaders, a bootrom loader which loads at 0x80000 and a bootloader loader which loads at 0x86000&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=IDA_Pro_Setup&amp;diff=4642</id>
		<title>IDA Pro Setup</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=IDA_Pro_Setup&amp;diff=4642"/>
		<updated>2009-08-14T13:55:29Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==How to set up IDA pro to reverse the 3G baseband==&lt;br /&gt;
&lt;br /&gt;
The [[X-Gold 608]] has a memory map, as seen in it's page.&lt;br /&gt;
&lt;br /&gt;
The [[Secpack 2.0]] takes up the first 0xCF8 of the .fls file.&lt;br /&gt;
&lt;br /&gt;
So to load the 3G .fls file into IDA pro, the file offset is 0xCF8(for the secpack), and the CODE starts at the ROM start address of 0x20040000(since it's the main firmware)&lt;br /&gt;
&lt;br /&gt;
For real noobs:&lt;br /&gt;
 1. Drag the fls file into IDA&lt;br /&gt;
 2. Select ARM&lt;br /&gt;
 3. Change ROM start address to 0x20040000&lt;br /&gt;
 4. Change Loading address to 0x20040000&lt;br /&gt;
 5. Change File offset to 0xCF8&lt;br /&gt;
 6. Copy Loading size into ROM size&lt;br /&gt;
 7. Press OK&lt;br /&gt;
 8. The entry point is the address at 0x20040408&lt;br /&gt;
 9. Go to 20100004 and Press &amp;quot;C&amp;quot; to start. ~Deco&lt;br /&gt;
 10. Read the instructions so you can find other places where you can press &amp;quot;C&amp;quot; to get more code. ~Deco&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some key combinations to use:&lt;br /&gt;
* c = turn the 'gibberish' into code&lt;br /&gt;
* d = turn the 'gibberish' into data&lt;br /&gt;
* a = turn the 'gibberish' into a string&lt;br /&gt;
* u = undefine what you just may have done, i usually use this since there is no real edit+undo in IDA so this is the next best thing&lt;br /&gt;
* Alt+G = toggle the Register T from 0 / 1 to toggle arm and thumb mode when needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://dl.free.fr/pTmWY9YGJ This] might also be a decent starting point (pw: caique2001).&lt;br /&gt;
&lt;br /&gt;
== some hints for getting the mnemonics from n00b for noobs (read: master noob for noobs ;-) )==&lt;br /&gt;
&lt;br /&gt;
The autoanalysis didn't work very well. There were a lot of silly mnemonics, simply interleaving thumb and arm mode or other nasty stuff. I then tried to identify strings, pressing 'A'. Boring... What pushed it up a little bit is this:&lt;br /&gt;
&lt;br /&gt;
Most code is 'embraced' by 'embracing' code:&lt;br /&gt;
- push / pop for thumb mod&lt;br /&gt;
- STMFD / LDMFD for arm mode&lt;br /&gt;
&lt;br /&gt;
Even better, all versions of above codes have similar instruction sets. So you can find all occurences of STMFD by hex searching '2D E9', going two bytes back (did I say code is aligned? 4bytes in arm starting at 00 04 08 0c, 2bytes in thumb mode!) and pressing 'C'. If you see scrambled code, then (probably) the wrong mode (thumb) is enabled. Just press Alt-G, change the value for T to zero. See?!&lt;br /&gt;
The same goes for thumb mode. Push instructions are 'B5' preceeded by 02 0B 4E 72 30 10 F0 70 F3 7C 55 1F 30 3E 0E 1C 08 7F ... So just look for e.g. '10 B5' at two-byte boarders (Alt-B to set, Ctrl-B to search again) and you will easily find all occurences. Again, if it is scrambled, switch back to thumb mode (Alt-G, T=1).&lt;br /&gt;
After all, you can hex browse a little bit and press 'C' for missing code or 'A' for text.&lt;br /&gt;
&lt;br /&gt;
Above is a very simple 'algorithm', maybe there is an appropiate IDA plugin. Or you could write one :-) !&lt;br /&gt;
&lt;br /&gt;
[http://code.assembla.com/ks360/subversion/nodes/utils/Analyze.py Script] with [http://d-dome.net/idapython/ IDAPython]&lt;br /&gt;
&lt;br /&gt;
==Addresses of known functions / code locations==&lt;br /&gt;
===Baseband 02.28.00===&lt;br /&gt;
* 0x201497B0 - maybe AT Command handler? (uses strings such as &amp;quot;OK&amp;quot;, &amp;quot;ERROR&amp;quot;, &amp;quot;UNKNOWN COMMAND&amp;quot;)&lt;br /&gt;
* 0x203C51BC - probably prints text&lt;br /&gt;
* 0x201420AC - malloc (according to Darkmen)&lt;br /&gt;
* 0x203C58A0 - bytecpy (according to Darkmen)&lt;br /&gt;
* 0x203FB540 - NU_Create_Task (according to Darkmen)&lt;br /&gt;
* 0x2046DD00 - sprintf (according to Darkmen)&lt;br /&gt;
* 0x20165998 - NU_Receive_From_Mailbox (according to Darkmen)&lt;br /&gt;
* 0x203ED568 - NU_Send_To_Mailbox (according to Darkmen)&lt;br /&gt;
&lt;br /&gt;
===iPod touch 2G Bootrom===&lt;br /&gt;
I think this might not be a good idea, because this page will wind up getting huge, but in case anyone thinks differently I'll add these for the hell of it.&lt;br /&gt;
&lt;br /&gt;
====functions====&lt;br /&gt;
* 0x067A - BootromStart&lt;br /&gt;
* 0x45BA - InitProcessor&lt;br /&gt;
* 0x4778 - SetupMMU&lt;br /&gt;
* 0x4734 - MMU_MapAddr&lt;br /&gt;
* 0x3A84 - Do_MMU_Mappings&lt;br /&gt;
* 0x34FC - EnableInterrupts&lt;br /&gt;
* 0x652C - Setup_SPI&lt;br /&gt;
* 0x36DC - Setup_IdleTask&lt;br /&gt;
* 0x4906 - PrepareNOR&lt;br /&gt;
* 0x49BC - nor_spi_read_range&lt;br /&gt;
* 0x178C - malloc&lt;br /&gt;
* 0x34D8 - DisableInterrupts&lt;br /&gt;
* 0x7840 - memset&lt;br /&gt;
* 0x7858 - memzero (this looks funny in IDA, kind of, but really it's just optimized as part of memset)&lt;br /&gt;
* 0x1954 - free&lt;br /&gt;
* 0x4844 - addNORtoBlockDevList&lt;br /&gt;
* 0x4804 - default_block_read&lt;br /&gt;
* 0x10C8 - blockdev_read_hook(void *BDevStruct, void *OutputBuffer, __int32 InputImageStartAddress, int Offset, __int32 Size)&lt;br /&gt;
* 0x1258 - fake_default_block_read&lt;br /&gt;
* 0x136E - blockdev_write_hook&lt;br /&gt;
* 0x1518 - default_block_write&lt;br /&gt;
* 0x151E - default_block_erase&lt;br /&gt;
* 0x1090 - get_block_device(const char* deviceName)&lt;br /&gt;
* 0x8354 - strcmp&lt;br /&gt;
* 0x1AF0 - CreateImageList&lt;br /&gt;
* 0x1F68 - DoCreateImageList&lt;br /&gt;
* 0x204C - GetImage(u32 imageFourccTag)&lt;br /&gt;
* 0x1BF0 - SetupMemzStruct(u32 LoadAddress, u32 FileSize, u32 flags)&lt;br /&gt;
* 0x30E8 - InitUSB&lt;br /&gt;
* 0x795C - memcpy&lt;br /&gt;
* 0x0E84 - USB_Core_Init&lt;br /&gt;
* 0x1058 - StopUSB&lt;br /&gt;
* 0x328C - GetSystemInfo&lt;br /&gt;
* 0x3D94 - Get_Chip_ID&lt;br /&gt;
* 0x3DA0 - Get_Chip_Revision&lt;br /&gt;
* 0x3D74 - Get_Security_Epoch&lt;br /&gt;
* 0x3AE4 - Get_Board_ID&lt;br /&gt;
* 0x3DD4 - Get_Unique_Chip_ID&lt;br /&gt;
* 0x8286 - snprintf&lt;br /&gt;
* 0x7D5C - vfprintf_like_thingy&lt;br /&gt;
* 0x82A8 - printf&lt;br /&gt;
* 0x8422 - putchar&lt;br /&gt;
* 0x2E98 - usb_print&lt;br /&gt;
* 0x83CC - strncat&lt;br /&gt;
* 0x1C18 - FreeMemzStruct&lt;br /&gt;
* 0x67DC - Reboot (via watchdog, so yeah it looks a bit odd)&lt;br /&gt;
* 0x0644 - LoadAndJumpToFWImage(struct MemzStruct *pMemzInfo, __int32 LoadAddress, __int32 FileSize)&lt;br /&gt;
* 0x3338 - ProperlyJumpToImage(void unkown, u32 address, void unknown)&lt;br /&gt;
* 0x4584 - PrepMMUForJump (?)&lt;br /&gt;
* 0x1B78 - LoadFirmwareImage&lt;br /&gt;
* 0x2144 - doLoadFirmwareImage&lt;br /&gt;
* 0x1D04 - VerifyImage&lt;br /&gt;
* 0x5EA8 - ComputeSHA1(void *Input_Data, int Data_Size, void *SHA1_Of_Data)&lt;br /&gt;
* 0x4150 - AdjustClock&lt;br /&gt;
* 0x5E54 - CopyBlockToSHA1Engine&lt;br /&gt;
* 0x372E - yield&lt;br /&gt;
* 0x2400 - DecryptRSASignature&lt;br /&gt;
* 0x0898 - DoCrypto(int CryptOption, void *Input_Buffer, void *Output_Buffer, __int32 Size, int AESMode, void *Key, void *IV) [CryptOption 0x10 == encrypt, 0x11 == decrypt]&lt;br /&gt;
* 0x5010 - aes_encrypt&lt;br /&gt;
* 0x4DB8 - do_aes_encrypt&lt;br /&gt;
* 0x4D38 - send_key_to_aes&lt;br /&gt;
* 0x4D88 - send_iv_to_aes&lt;br /&gt;
* 0x4F44 - aes_decrypt&lt;br /&gt;
* 0x4E80 - do_aes_decrypt&lt;br /&gt;
* 0x2668 - parse_certificate_and_signature(void *pCertsData, int sizeOfCerts, void *pImageRsaSha1, int sizeofRsaSha1, void *pComputedImageSha1, int sha1Size, void *pImageBuffer, int imageFullSize)&lt;br /&gt;
* 0x356C - CheckIfDiagnosticDevice&lt;br /&gt;
* 0x3D64 - Get_Security_Domain&lt;br /&gt;
* 0x3D44 - Get_Production_Mode&lt;br /&gt;
* 0x1F00 - Find_Data_For_Tag&lt;br /&gt;
* 0x346C - Panic&lt;br /&gt;
* 0x0634 - WaitForInterrupt&lt;br /&gt;
* 0x4618 - UndefinedInstructionVector&lt;br /&gt;
* 0x46F0 - UndefinedInstructionHandler&lt;br /&gt;
* 0x4628 - SoftwareInterruptVector&lt;br /&gt;
* 0x4700 - SoftwareInterruptHandler&lt;br /&gt;
* 0x4640 - PrefetchAbortVector&lt;br /&gt;
* 0x46B4 - PrefetchAbortHandler&lt;br /&gt;
* 0x4664 - DataAbortVector&lt;br /&gt;
* 0x46A2 - DataAbortHandler&lt;br /&gt;
* 0x467C - AddressExceptionTrapVector&lt;br /&gt;
* 0x4680 - InterruptRequestVector&lt;br /&gt;
* 0x4710 - InterruptRequestHandler&lt;br /&gt;
* 0x4BEC - HandleInterruptRequest&lt;br /&gt;
* 0x4690 - FastInterruptRequestVector&lt;br /&gt;
* 0x4722 - FastInterruptRequestHandler&lt;br /&gt;
* 0x4C40 - HandleFastInterruptRequest&lt;br /&gt;
&lt;br /&gt;
====variables====&lt;br /&gt;
* 0x220240D4 - SHA1 accelerator register table&lt;br /&gt;
* 0x22024200 - Block Device List&lt;br /&gt;
* 0x220250A0 - Permissions Flags&lt;br /&gt;
* 0x220254E0 - Interrupt Table&lt;br /&gt;
* 0x2202C000 - Page table&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=IDA_Pro_Setup&amp;diff=4641</id>
		<title>IDA Pro Setup</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=IDA_Pro_Setup&amp;diff=4641"/>
		<updated>2009-08-14T13:55:05Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==How to set up IDA pro to reverse the 3G baseband==&lt;br /&gt;
&lt;br /&gt;
The [[X-Gold 608]] has a memory map, as seen in it's page.&lt;br /&gt;
&lt;br /&gt;
The [[Secpack 2.0]] takes up the first 0xCF8 of the .fls file.&lt;br /&gt;
&lt;br /&gt;
So to load the 3G .fls file into IDA pro, the file offset is 0xCF8(for the secpack), and the CODE starts at the ROM start address of 0x20040000(since it's the main firmware)&lt;br /&gt;
&lt;br /&gt;
For real noobs:&lt;br /&gt;
 1. Drag the fls file into IDA&lt;br /&gt;
 2. Select ARM&lt;br /&gt;
 3. Change ROM start address to 0x20040000&lt;br /&gt;
 4. Change Loading address to 0x20040000&lt;br /&gt;
 5. Change File offset to 0xCF8&lt;br /&gt;
 6. Copy Loading size into ROM size&lt;br /&gt;
 7. Press OK&lt;br /&gt;
 8. The entry point is the address at 0x20040408&lt;br /&gt;
 9. Go to 20100004 and Press &amp;quot;C&amp;quot; to start. ~Deco&lt;br /&gt;
 10. Read the instructions so you can find other places where you can press &amp;quot;C&amp;quot; to get more code. ~Deco&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some key combinations to use:&lt;br /&gt;
* c = turn the 'gibberish' into code&lt;br /&gt;
* d = turn the 'gibberish' into data&lt;br /&gt;
* a = turn the 'gibberish' into a string&lt;br /&gt;
* u = undefine what you just may have done, i usually use this since there is no real edit+undo in IDA so this is the next best thing&lt;br /&gt;
* Alt+G = toggle the Register T from 0 / 1 to toggle arm and thumb mode when needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://dl.free.fr/pTmWY9YGJ This] might also be a decent starting point (pw: caique2001).&lt;br /&gt;
&lt;br /&gt;
== some hints for getting the mnemonics from n00b for noobs (read: master noob for noobs ;-) )==&lt;br /&gt;
&lt;br /&gt;
The autoanalysis didn't work very well. There were a lot of silly mnemonics, simply interleaving thumb and arm mode or other nasty stuff. I then tried to identify strings, pressing 'A'. Boring... What pushed it up a little bit is this:&lt;br /&gt;
&lt;br /&gt;
Most code is 'embraced' by 'embracing' code:&lt;br /&gt;
- push / pop for thumb mod&lt;br /&gt;
- STMFD / LDMFD for arm mode&lt;br /&gt;
&lt;br /&gt;
Even better, all versions of above codes have similar instruction sets. So you can find all occurences of STMFD by hex searching '2D E9', going two bytes back (did I say code is aligned? 4bytes in arm starting at 00 04 08 0c, 2bytes in thumb mode!) and pressing 'C'. If you see scrambled code, then (probably) the wrong mode (thumb) is enabled. Just press Alt-G, change the value for T to zero. See?!&lt;br /&gt;
The same goes for thumb mode. Push instructions are 'B5' preceeded by 02 0B 4E 72 30 10 F0 70 F3 7C 55 1F 30 3E 0E 1C 08 7F ... So just look for e.g. '10 B5' at two-byte boarders (Alt-B to set, Ctrl-B to search again) and you will easily find all occurences. Again, if it is scrambled, switch back to thumb mode (Alt-G, T=1).&lt;br /&gt;
After all, you can hex browse a little bit and press 'C' for missing code or 'A' for text.&lt;br /&gt;
&lt;br /&gt;
Above is a very simple 'algorithm', maybe there is an appropiate IDA plugin. Or you could write one :-) !&lt;br /&gt;
&lt;br /&gt;
[http://code.assembla.com/ks360/subversion/nodes/utils/Analyze.py link Script] with [http://d-dome.net/idapython/ link IDAPython]&lt;br /&gt;
&lt;br /&gt;
==Addresses of known functions / code locations==&lt;br /&gt;
===Baseband 02.28.00===&lt;br /&gt;
* 0x201497B0 - maybe AT Command handler? (uses strings such as &amp;quot;OK&amp;quot;, &amp;quot;ERROR&amp;quot;, &amp;quot;UNKNOWN COMMAND&amp;quot;)&lt;br /&gt;
* 0x203C51BC - probably prints text&lt;br /&gt;
* 0x201420AC - malloc (according to Darkmen)&lt;br /&gt;
* 0x203C58A0 - bytecpy (according to Darkmen)&lt;br /&gt;
* 0x203FB540 - NU_Create_Task (according to Darkmen)&lt;br /&gt;
* 0x2046DD00 - sprintf (according to Darkmen)&lt;br /&gt;
* 0x20165998 - NU_Receive_From_Mailbox (according to Darkmen)&lt;br /&gt;
* 0x203ED568 - NU_Send_To_Mailbox (according to Darkmen)&lt;br /&gt;
&lt;br /&gt;
===iPod touch 2G Bootrom===&lt;br /&gt;
I think this might not be a good idea, because this page will wind up getting huge, but in case anyone thinks differently I'll add these for the hell of it.&lt;br /&gt;
&lt;br /&gt;
====functions====&lt;br /&gt;
* 0x067A - BootromStart&lt;br /&gt;
* 0x45BA - InitProcessor&lt;br /&gt;
* 0x4778 - SetupMMU&lt;br /&gt;
* 0x4734 - MMU_MapAddr&lt;br /&gt;
* 0x3A84 - Do_MMU_Mappings&lt;br /&gt;
* 0x34FC - EnableInterrupts&lt;br /&gt;
* 0x652C - Setup_SPI&lt;br /&gt;
* 0x36DC - Setup_IdleTask&lt;br /&gt;
* 0x4906 - PrepareNOR&lt;br /&gt;
* 0x49BC - nor_spi_read_range&lt;br /&gt;
* 0x178C - malloc&lt;br /&gt;
* 0x34D8 - DisableInterrupts&lt;br /&gt;
* 0x7840 - memset&lt;br /&gt;
* 0x7858 - memzero (this looks funny in IDA, kind of, but really it's just optimized as part of memset)&lt;br /&gt;
* 0x1954 - free&lt;br /&gt;
* 0x4844 - addNORtoBlockDevList&lt;br /&gt;
* 0x4804 - default_block_read&lt;br /&gt;
* 0x10C8 - blockdev_read_hook(void *BDevStruct, void *OutputBuffer, __int32 InputImageStartAddress, int Offset, __int32 Size)&lt;br /&gt;
* 0x1258 - fake_default_block_read&lt;br /&gt;
* 0x136E - blockdev_write_hook&lt;br /&gt;
* 0x1518 - default_block_write&lt;br /&gt;
* 0x151E - default_block_erase&lt;br /&gt;
* 0x1090 - get_block_device(const char* deviceName)&lt;br /&gt;
* 0x8354 - strcmp&lt;br /&gt;
* 0x1AF0 - CreateImageList&lt;br /&gt;
* 0x1F68 - DoCreateImageList&lt;br /&gt;
* 0x204C - GetImage(u32 imageFourccTag)&lt;br /&gt;
* 0x1BF0 - SetupMemzStruct(u32 LoadAddress, u32 FileSize, u32 flags)&lt;br /&gt;
* 0x30E8 - InitUSB&lt;br /&gt;
* 0x795C - memcpy&lt;br /&gt;
* 0x0E84 - USB_Core_Init&lt;br /&gt;
* 0x1058 - StopUSB&lt;br /&gt;
* 0x328C - GetSystemInfo&lt;br /&gt;
* 0x3D94 - Get_Chip_ID&lt;br /&gt;
* 0x3DA0 - Get_Chip_Revision&lt;br /&gt;
* 0x3D74 - Get_Security_Epoch&lt;br /&gt;
* 0x3AE4 - Get_Board_ID&lt;br /&gt;
* 0x3DD4 - Get_Unique_Chip_ID&lt;br /&gt;
* 0x8286 - snprintf&lt;br /&gt;
* 0x7D5C - vfprintf_like_thingy&lt;br /&gt;
* 0x82A8 - printf&lt;br /&gt;
* 0x8422 - putchar&lt;br /&gt;
* 0x2E98 - usb_print&lt;br /&gt;
* 0x83CC - strncat&lt;br /&gt;
* 0x1C18 - FreeMemzStruct&lt;br /&gt;
* 0x67DC - Reboot (via watchdog, so yeah it looks a bit odd)&lt;br /&gt;
* 0x0644 - LoadAndJumpToFWImage(struct MemzStruct *pMemzInfo, __int32 LoadAddress, __int32 FileSize)&lt;br /&gt;
* 0x3338 - ProperlyJumpToImage(void unkown, u32 address, void unknown)&lt;br /&gt;
* 0x4584 - PrepMMUForJump (?)&lt;br /&gt;
* 0x1B78 - LoadFirmwareImage&lt;br /&gt;
* 0x2144 - doLoadFirmwareImage&lt;br /&gt;
* 0x1D04 - VerifyImage&lt;br /&gt;
* 0x5EA8 - ComputeSHA1(void *Input_Data, int Data_Size, void *SHA1_Of_Data)&lt;br /&gt;
* 0x4150 - AdjustClock&lt;br /&gt;
* 0x5E54 - CopyBlockToSHA1Engine&lt;br /&gt;
* 0x372E - yield&lt;br /&gt;
* 0x2400 - DecryptRSASignature&lt;br /&gt;
* 0x0898 - DoCrypto(int CryptOption, void *Input_Buffer, void *Output_Buffer, __int32 Size, int AESMode, void *Key, void *IV) [CryptOption 0x10 == encrypt, 0x11 == decrypt]&lt;br /&gt;
* 0x5010 - aes_encrypt&lt;br /&gt;
* 0x4DB8 - do_aes_encrypt&lt;br /&gt;
* 0x4D38 - send_key_to_aes&lt;br /&gt;
* 0x4D88 - send_iv_to_aes&lt;br /&gt;
* 0x4F44 - aes_decrypt&lt;br /&gt;
* 0x4E80 - do_aes_decrypt&lt;br /&gt;
* 0x2668 - parse_certificate_and_signature(void *pCertsData, int sizeOfCerts, void *pImageRsaSha1, int sizeofRsaSha1, void *pComputedImageSha1, int sha1Size, void *pImageBuffer, int imageFullSize)&lt;br /&gt;
* 0x356C - CheckIfDiagnosticDevice&lt;br /&gt;
* 0x3D64 - Get_Security_Domain&lt;br /&gt;
* 0x3D44 - Get_Production_Mode&lt;br /&gt;
* 0x1F00 - Find_Data_For_Tag&lt;br /&gt;
* 0x346C - Panic&lt;br /&gt;
* 0x0634 - WaitForInterrupt&lt;br /&gt;
* 0x4618 - UndefinedInstructionVector&lt;br /&gt;
* 0x46F0 - UndefinedInstructionHandler&lt;br /&gt;
* 0x4628 - SoftwareInterruptVector&lt;br /&gt;
* 0x4700 - SoftwareInterruptHandler&lt;br /&gt;
* 0x4640 - PrefetchAbortVector&lt;br /&gt;
* 0x46B4 - PrefetchAbortHandler&lt;br /&gt;
* 0x4664 - DataAbortVector&lt;br /&gt;
* 0x46A2 - DataAbortHandler&lt;br /&gt;
* 0x467C - AddressExceptionTrapVector&lt;br /&gt;
* 0x4680 - InterruptRequestVector&lt;br /&gt;
* 0x4710 - InterruptRequestHandler&lt;br /&gt;
* 0x4BEC - HandleInterruptRequest&lt;br /&gt;
* 0x4690 - FastInterruptRequestVector&lt;br /&gt;
* 0x4722 - FastInterruptRequestHandler&lt;br /&gt;
* 0x4C40 - HandleFastInterruptRequest&lt;br /&gt;
&lt;br /&gt;
====variables====&lt;br /&gt;
* 0x220240D4 - SHA1 accelerator register table&lt;br /&gt;
* 0x22024200 - Block Device List&lt;br /&gt;
* 0x220250A0 - Permissions Flags&lt;br /&gt;
* 0x220254E0 - Interrupt Table&lt;br /&gt;
* 0x2202C000 - Page table&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=IDA_Pro_Setup&amp;diff=4640</id>
		<title>IDA Pro Setup</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=IDA_Pro_Setup&amp;diff=4640"/>
		<updated>2009-08-14T13:54:42Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==How to set up IDA pro to reverse the 3G baseband==&lt;br /&gt;
&lt;br /&gt;
The [[X-Gold 608]] has a memory map, as seen in it's page.&lt;br /&gt;
&lt;br /&gt;
The [[Secpack 2.0]] takes up the first 0xCF8 of the .fls file.&lt;br /&gt;
&lt;br /&gt;
So to load the 3G .fls file into IDA pro, the file offset is 0xCF8(for the secpack), and the CODE starts at the ROM start address of 0x20040000(since it's the main firmware)&lt;br /&gt;
&lt;br /&gt;
For real noobs:&lt;br /&gt;
 1. Drag the fls file into IDA&lt;br /&gt;
 2. Select ARM&lt;br /&gt;
 3. Change ROM start address to 0x20040000&lt;br /&gt;
 4. Change Loading address to 0x20040000&lt;br /&gt;
 5. Change File offset to 0xCF8&lt;br /&gt;
 6. Copy Loading size into ROM size&lt;br /&gt;
 7. Press OK&lt;br /&gt;
 8. The entry point is the address at 0x20040408&lt;br /&gt;
 9. Go to 20100004 and Press &amp;quot;C&amp;quot; to start. ~Deco&lt;br /&gt;
 10. Read the instructions so you can find other places where you can press &amp;quot;C&amp;quot; to get more code. ~Deco&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some key combinations to use:&lt;br /&gt;
* c = turn the 'gibberish' into code&lt;br /&gt;
* d = turn the 'gibberish' into data&lt;br /&gt;
* a = turn the 'gibberish' into a string&lt;br /&gt;
* u = undefine what you just may have done, i usually use this since there is no real edit+undo in IDA so this is the next best thing&lt;br /&gt;
* Alt+G = toggle the Register T from 0 / 1 to toggle arm and thumb mode when needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://dl.free.fr/pTmWY9YGJ This] might also be a decent starting point (pw: caique2001).&lt;br /&gt;
&lt;br /&gt;
== some hints for getting the mnemonics from n00b for noobs (read: master noob for noobs ;-) )==&lt;br /&gt;
&lt;br /&gt;
The autoanalysis didn't work very well. There were a lot of silly mnemonics, simply interleaving thumb and arm mode or other nasty stuff. I then tried to identify strings, pressing 'A'. Boring... What pushed it up a little bit is this:&lt;br /&gt;
&lt;br /&gt;
Most code is 'embraced' by 'embracing' code:&lt;br /&gt;
- push / pop for thumb mod&lt;br /&gt;
- STMFD / LDMFD for arm mode&lt;br /&gt;
&lt;br /&gt;
Even better, all versions of above codes have similar instruction sets. So you can find all occurences of STMFD by hex searching '2D E9', going two bytes back (did I say code is aligned? 4bytes in arm starting at 00 04 08 0c, 2bytes in thumb mode!) and pressing 'C'. If you see scrambled code, then (probably) the wrong mode (thumb) is enabled. Just press Alt-G, change the value for T to zero. See?!&lt;br /&gt;
The same goes for thumb mode. Push instructions are 'B5' preceeded by 02 0B 4E 72 30 10 F0 70 F3 7C 55 1F 30 3E 0E 1C 08 7F ... So just look for e.g. '10 B5' at two-byte boarders (Alt-B to set, Ctrl-B to search again) and you will easily find all occurences. Again, if it is scrambled, switch back to thumb mode (Alt-G, T=1).&lt;br /&gt;
After all, you can hex browse a little bit and press 'C' for missing code or 'A' for text.&lt;br /&gt;
&lt;br /&gt;
Above is a very simple 'algorithm', maybe there is an appropiate IDA plugin. Or you could write one :-) !&lt;br /&gt;
[http://code.assembla.com/ks360/subversion/nodes/utils/Analyze.py link Script] with [http://d-dome.net/idapython/ link IDAPython&lt;br /&gt;
&lt;br /&gt;
==Addresses of known functions / code locations==&lt;br /&gt;
===Baseband 02.28.00===&lt;br /&gt;
* 0x201497B0 - maybe AT Command handler? (uses strings such as &amp;quot;OK&amp;quot;, &amp;quot;ERROR&amp;quot;, &amp;quot;UNKNOWN COMMAND&amp;quot;)&lt;br /&gt;
* 0x203C51BC - probably prints text&lt;br /&gt;
* 0x201420AC - malloc (according to Darkmen)&lt;br /&gt;
* 0x203C58A0 - bytecpy (according to Darkmen)&lt;br /&gt;
* 0x203FB540 - NU_Create_Task (according to Darkmen)&lt;br /&gt;
* 0x2046DD00 - sprintf (according to Darkmen)&lt;br /&gt;
* 0x20165998 - NU_Receive_From_Mailbox (according to Darkmen)&lt;br /&gt;
* 0x203ED568 - NU_Send_To_Mailbox (according to Darkmen)&lt;br /&gt;
&lt;br /&gt;
===iPod touch 2G Bootrom===&lt;br /&gt;
I think this might not be a good idea, because this page will wind up getting huge, but in case anyone thinks differently I'll add these for the hell of it.&lt;br /&gt;
&lt;br /&gt;
====functions====&lt;br /&gt;
* 0x067A - BootromStart&lt;br /&gt;
* 0x45BA - InitProcessor&lt;br /&gt;
* 0x4778 - SetupMMU&lt;br /&gt;
* 0x4734 - MMU_MapAddr&lt;br /&gt;
* 0x3A84 - Do_MMU_Mappings&lt;br /&gt;
* 0x34FC - EnableInterrupts&lt;br /&gt;
* 0x652C - Setup_SPI&lt;br /&gt;
* 0x36DC - Setup_IdleTask&lt;br /&gt;
* 0x4906 - PrepareNOR&lt;br /&gt;
* 0x49BC - nor_spi_read_range&lt;br /&gt;
* 0x178C - malloc&lt;br /&gt;
* 0x34D8 - DisableInterrupts&lt;br /&gt;
* 0x7840 - memset&lt;br /&gt;
* 0x7858 - memzero (this looks funny in IDA, kind of, but really it's just optimized as part of memset)&lt;br /&gt;
* 0x1954 - free&lt;br /&gt;
* 0x4844 - addNORtoBlockDevList&lt;br /&gt;
* 0x4804 - default_block_read&lt;br /&gt;
* 0x10C8 - blockdev_read_hook(void *BDevStruct, void *OutputBuffer, __int32 InputImageStartAddress, int Offset, __int32 Size)&lt;br /&gt;
* 0x1258 - fake_default_block_read&lt;br /&gt;
* 0x136E - blockdev_write_hook&lt;br /&gt;
* 0x1518 - default_block_write&lt;br /&gt;
* 0x151E - default_block_erase&lt;br /&gt;
* 0x1090 - get_block_device(const char* deviceName)&lt;br /&gt;
* 0x8354 - strcmp&lt;br /&gt;
* 0x1AF0 - CreateImageList&lt;br /&gt;
* 0x1F68 - DoCreateImageList&lt;br /&gt;
* 0x204C - GetImage(u32 imageFourccTag)&lt;br /&gt;
* 0x1BF0 - SetupMemzStruct(u32 LoadAddress, u32 FileSize, u32 flags)&lt;br /&gt;
* 0x30E8 - InitUSB&lt;br /&gt;
* 0x795C - memcpy&lt;br /&gt;
* 0x0E84 - USB_Core_Init&lt;br /&gt;
* 0x1058 - StopUSB&lt;br /&gt;
* 0x328C - GetSystemInfo&lt;br /&gt;
* 0x3D94 - Get_Chip_ID&lt;br /&gt;
* 0x3DA0 - Get_Chip_Revision&lt;br /&gt;
* 0x3D74 - Get_Security_Epoch&lt;br /&gt;
* 0x3AE4 - Get_Board_ID&lt;br /&gt;
* 0x3DD4 - Get_Unique_Chip_ID&lt;br /&gt;
* 0x8286 - snprintf&lt;br /&gt;
* 0x7D5C - vfprintf_like_thingy&lt;br /&gt;
* 0x82A8 - printf&lt;br /&gt;
* 0x8422 - putchar&lt;br /&gt;
* 0x2E98 - usb_print&lt;br /&gt;
* 0x83CC - strncat&lt;br /&gt;
* 0x1C18 - FreeMemzStruct&lt;br /&gt;
* 0x67DC - Reboot (via watchdog, so yeah it looks a bit odd)&lt;br /&gt;
* 0x0644 - LoadAndJumpToFWImage(struct MemzStruct *pMemzInfo, __int32 LoadAddress, __int32 FileSize)&lt;br /&gt;
* 0x3338 - ProperlyJumpToImage(void unkown, u32 address, void unknown)&lt;br /&gt;
* 0x4584 - PrepMMUForJump (?)&lt;br /&gt;
* 0x1B78 - LoadFirmwareImage&lt;br /&gt;
* 0x2144 - doLoadFirmwareImage&lt;br /&gt;
* 0x1D04 - VerifyImage&lt;br /&gt;
* 0x5EA8 - ComputeSHA1(void *Input_Data, int Data_Size, void *SHA1_Of_Data)&lt;br /&gt;
* 0x4150 - AdjustClock&lt;br /&gt;
* 0x5E54 - CopyBlockToSHA1Engine&lt;br /&gt;
* 0x372E - yield&lt;br /&gt;
* 0x2400 - DecryptRSASignature&lt;br /&gt;
* 0x0898 - DoCrypto(int CryptOption, void *Input_Buffer, void *Output_Buffer, __int32 Size, int AESMode, void *Key, void *IV) [CryptOption 0x10 == encrypt, 0x11 == decrypt]&lt;br /&gt;
* 0x5010 - aes_encrypt&lt;br /&gt;
* 0x4DB8 - do_aes_encrypt&lt;br /&gt;
* 0x4D38 - send_key_to_aes&lt;br /&gt;
* 0x4D88 - send_iv_to_aes&lt;br /&gt;
* 0x4F44 - aes_decrypt&lt;br /&gt;
* 0x4E80 - do_aes_decrypt&lt;br /&gt;
* 0x2668 - parse_certificate_and_signature(void *pCertsData, int sizeOfCerts, void *pImageRsaSha1, int sizeofRsaSha1, void *pComputedImageSha1, int sha1Size, void *pImageBuffer, int imageFullSize)&lt;br /&gt;
* 0x356C - CheckIfDiagnosticDevice&lt;br /&gt;
* 0x3D64 - Get_Security_Domain&lt;br /&gt;
* 0x3D44 - Get_Production_Mode&lt;br /&gt;
* 0x1F00 - Find_Data_For_Tag&lt;br /&gt;
* 0x346C - Panic&lt;br /&gt;
* 0x0634 - WaitForInterrupt&lt;br /&gt;
* 0x4618 - UndefinedInstructionVector&lt;br /&gt;
* 0x46F0 - UndefinedInstructionHandler&lt;br /&gt;
* 0x4628 - SoftwareInterruptVector&lt;br /&gt;
* 0x4700 - SoftwareInterruptHandler&lt;br /&gt;
* 0x4640 - PrefetchAbortVector&lt;br /&gt;
* 0x46B4 - PrefetchAbortHandler&lt;br /&gt;
* 0x4664 - DataAbortVector&lt;br /&gt;
* 0x46A2 - DataAbortHandler&lt;br /&gt;
* 0x467C - AddressExceptionTrapVector&lt;br /&gt;
* 0x4680 - InterruptRequestVector&lt;br /&gt;
* 0x4710 - InterruptRequestHandler&lt;br /&gt;
* 0x4BEC - HandleInterruptRequest&lt;br /&gt;
* 0x4690 - FastInterruptRequestVector&lt;br /&gt;
* 0x4722 - FastInterruptRequestHandler&lt;br /&gt;
* 0x4C40 - HandleFastInterruptRequest&lt;br /&gt;
&lt;br /&gt;
====variables====&lt;br /&gt;
* 0x220240D4 - SHA1 accelerator register table&lt;br /&gt;
* 0x22024200 - Block Device List&lt;br /&gt;
* 0x220250A0 - Permissions Flags&lt;br /&gt;
* 0x220254E0 - Interrupt Table&lt;br /&gt;
* 0x2202C000 - Page table&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Secpack_2.0&amp;diff=2900</id>
		<title>Talk:Secpack 2.0</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Secpack_2.0&amp;diff=2900"/>
		<updated>2009-01-29T15:33:31Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Secpack_2.0&amp;diff=2873</id>
		<title>Talk:Secpack 2.0</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Secpack_2.0&amp;diff=2873"/>
		<updated>2009-01-22T20:36:41Z</updated>

		<summary type="html">&lt;p&gt;Blackhorn: New page: It's maybe out of the topic but I try to hack LG KS360, I am on the good way (Decrypt the &amp;quot;firmware&amp;quot; , extracts some data &amp;amp; files). The KS360 uses Secpack-2 and a Goldradio chip like iphon...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's maybe out of the topic but I try to hack LG KS360, I am on the good way (Decrypt the &amp;quot;firmware&amp;quot; , extracts some data &amp;amp; files).&lt;br /&gt;
The KS360 uses Secpack-2 and a Goldradio chip like iphone.  The problem comes when i want rebuild the &amp;quot;firmware&amp;quot; file. &lt;br /&gt;
I try to figure out how works the flash, reversing the flashing app.&lt;br /&gt;
I'm asking my self, what is the best way to solve this problem.&lt;br /&gt;
-Using the &amp;quot;official&amp;quot; flashing application -&amp;gt; keeps the good file format&lt;br /&gt;
-Use my own flashing application &lt;br /&gt;
Or maybe using the first methode implies using the second&lt;br /&gt;
Anybody can help me?  Thanks&lt;br /&gt;
(Sorry for my english)&lt;/div&gt;</summary>
		<author><name>Blackhorn</name></author>
		
	</entry>
</feed>