@@ -64,6 +64,11 @@ s32 Detect_DipModule(void)
6464 ios .dipVersion = 0x4888E14C ;
6565 break ;
6666
67+ case 0x20207C48 : // vIOS: 38v4380
68+ /* DIP: 04/03/12 12:00:16 */
69+ ios .dipVersion = 0x4F7AE650 ;
70+ break ;
71+
6772 case 0x20207EA8 : // IOS: 56v5661, 57v5918, 58v6175, 61v5661, 70v6687, 80v6943
6873 /* DIP: 06/03/09 07:49:09 */
6974 ios .dipVersion = 0x4A262AF5 ;
@@ -105,13 +110,12 @@ s32 Detect_EsModule(void)
105110
106111 case 0x201015E9 :
107112 {
108- #define ES_NUM 2
109- static moduleId esIds [ES_NUM ] = {
113+ static moduleId esIds [2 ] = {
110114 {0x2010B8D2 , "03/03/10 10:40:14" , 0x4B8E90EE }, // IOS: 56v5661, 57v5918, 58v6175, 61v5661, 80v6943
111115 {0x2010BB2E , "04/02/12 14:00:51" , 0x4F79B113 } // vIOS: 56v5918, 57v6175, 58v6432
112116 };
113117
114- ios .esVersion = __Detect_ModuleVersion (esIds , ES_NUM );
118+ ios .esVersion = __Detect_ModuleVersion (esIds , 2 );
115119 if (ios .esVersion == 0 )
116120 return DETECT_ERROR ;
117121
@@ -123,10 +127,20 @@ s32 Detect_EsModule(void)
123127 ios .esVersion = 0x4B8B882B ;
124128 break ;
125129
126- case 0x2010139D : // IOS: 36v3607, 38v4123
127- /* ES: 03/01/10 03:18:58 */
128- ios .esVersion = 0x4B8B8682 ;
130+ case 0x2010139D : // IOS: 36v3607, 38v4123
131+ // vIOS: 38v4380
132+ {
133+ static moduleId esIds [2 ] = {
134+ {0x2010A3EE , "03/01/10 03:18:58" , 0x4B8B3222 }, // IOS: 36v3607, 38v4123
135+ {0x2010A64A , "04/03/12 12:05:51" , 0x4F7AE79F } // vIOS: 38v4380 (0000000E)
136+ };
137+
138+ ios .esVersion = __Detect_ModuleVersion (esIds , 2 );
139+ if (ios .esVersion == 0 )
140+ return DETECT_ERROR ;
141+
129142 break ;
143+ }
130144
131145 default :
132146 /* Unknown version */
@@ -152,6 +166,11 @@ s32 Detect_FfsModule(void)
152166 ios .ffsVersion = 0x49511F3D ;
153167 break ;
154168
169+ case 0x20001FE1 : // vIOS: 38v4380
170+ /* FFS: 04/03/12 11:58:08 */
171+ ios .ffsVersion = 0x4F7AE5D0 ;
172+ break ;
173+
155174 case 0x20006009 : // IOS: 56v5661, 57v5918, 58v6175, 60v6174, 61v5661, 70v6687, 80v6943
156175 /* FFS: 11/24/08 15:36:10 */
157176 ios .ffsVersion = 0x492AC9EA ;
@@ -185,26 +204,43 @@ s32 Detect_IopModule(void)
185204 break ;
186205
187206 case 0xFFFF1D10 : // IOS: 36v3607, 38v4123
207+ // vIOS: 38v4380
188208 case 0xFFFF7938 : // gecko patched IOS: 36v3607, 38v4123
189- /* IOSP: 03/01/10 03:13:17 */
190- ios .iopVersion = 0x4B8B30CD ;
191- ios .syscallBase = 0xFFFF9100 ;
209+ {
210+ static moduleId iospIds [2 ] = {
211+ {0xFFFF856B , "03/01/10 03:13:17" , 0x4B8B30CD }, // IOS: 36v3607, 38v4123
212+ {0xFFFF83f3 , "04/03/12 12:00:18" , 0x4F7AE652 } // vIOS: 38v4380 (0000000E)
213+ };
214+
215+ ios .iopVersion = __Detect_ModuleVersion (iospIds , 2 );
216+
217+ switch (ios .iopVersion ) {
218+ case 0x4B8B30CD : // IOS: 36v3607, 38v4123
219+ ios .syscallBase = 0xFFFF9100 ;
220+ break ;
221+ case 0x4F7AE652 : // vIOS: 38v4380
222+ ios .syscallBase = 0xFFFF8F80 ;
223+ break ;
224+ default :
225+ /* Unknown version */
226+ return DETECT_ERROR ;
227+ }
192228
193229 break ;
230+ }
194231
195232 case 0xFFFF1F20 : // IOS: 60v6174, 70v6687, 56v5661, 57v5918, 58v6175, 61v5661, 80v6943
196233 // vIOS: 56v5918, 57v6175, 58v6432
197234 case 0xFFFF7B98 : // gecko patched IOS: 60v6174, 70v6687
198235 case 0xFFFF7BD0 : // gecko patched IOS: 56v5661, 57v5918, 58v6175, 61v5661, 80v6943
199236 {
200- #define IOSP_NUM 3
201- static moduleId iospIds [IOSP_NUM ] = {
237+ static moduleId iospIds [3 ] = {
202238 {0xFFFF880B , "03/03/10 10:43:18" , 0x4B8E3D46 }, // IOS: 56v5661, 57v5918, 58v6175, 61v5661, 80v6943
203239 {0xFFFF8693 , "04/02/12 14:03:56" , 0x4F79B1CC }, // vIOS: 56v5918, 57v6175, 58v6432
204240 {0xFFFF87D3 , "11/24/08 15:39:12" , 0x492ACAA0 } // IOS: 60v6174, 70v6687
205241 };
206242
207- ios .iopVersion = __Detect_ModuleVersion (iospIds , IOSP_NUM );
243+ ios .iopVersion = __Detect_ModuleVersion (iospIds , 3 );
208244
209245 switch (ios .iopVersion ) {
210246 case 0x4B8E3D46 : // IOS: 56v5661, 57v5918, 58v6175, 61v5661, 80v6943
0 commit comments