duyvh1712
New Member
Mình xin lỗi vì đây kô phải là bài của mình.Chỉ vì mình thấy cái nào hữu ích thì mình post lên để các pác cùng nghiên cứu.Nếu bài này đã có rồi thì nhờ các mod xóa hộ giùm mình nha.
________________________________________
Lý Thuyết Unlock Bb5
Dường như ai cũng đều biết, việc đó được thực hiện thế nào, ngoại trừ Nokia, vì họ chẳng có thay đổi gì trong phần mềm hệ thống để ngăn chặn việc đó!
Xin được nhắc lại là, đúng như vậy đó!
Vì sao, họ lại để những lỗ hổng lớn như vậy trong SP security...?
BB5 sử dụng giải thuật RSA và AES chạy trên ROM và RAM bảo mật. SP rutines chính, được lưu trữ trong khối "PA_SL" của Flash, những rutines này, được load sang RAM bảo mật, nếu chữ ký bảo mật RSA là đúng, CPU sẽ chạy nó.
Nhưng "SP phục vụ", là 1 phần của MCUSW, thành phần đang chạy trực tiếp trên Flash, lại không được bảo vệ! Well, nó chỉ được kiểm tra duy nhất 1 lần, khi điện thoại khởi động, sau đó, bạn có thể patch code dễ dàng!
ARM CPU đọc dữ liệu từ flash theo dạng Bursts( Thuật ngữ này được dùng theo nhiều dạng, với các phương thức truyền dữ liệu không ngừng theo dạng khối). Trong trường hợp này, nó được truyền theo dạng khối 32 Bytes, và bắt đầu từ địa chỉ thẳng hàng 32.
Vậy bước quan trọng cần biết đến đầu tiên là: Đâu là đoạn mã cần được Patch trong Flash!
Bạn có thể biết được điều đó bằng cách tháo Flash ra, và "Đọc" nó bằng các thiết bị lập trình. Hoặc bạn có thể sử dụng SW của tôi, để trích xuất mcusw từ các file update của Nokia. Bạn hãy tìm file lớn nhất trong Drive, và đổi tên nó thành "Infile", rồi chạy "fls2bin.exe" và chờ đợi, sẽ có 2 file được tạo ra. Một trong số 2 file đó là MCUSW.
Chú ý: fls2bin có thể không làm việc với tất cả các CPU Flash files
Khi bạn đã có code, bước tiếp theo, là tìm xem, đâu là chỗ để Patch đoạn code đó!
Well; Đó là cả một tiến trình xử lý rất phức tạp, đòi hỏi kiến thức, kinh nghiệm, sự nỗ lực làm việc...vv.
Xin được nhắc lại một lần nữa, có phải Nokia đã tạo một lỗ hổng lớn hay không?
Một trong số những rutines then chốt có thể được dễ dàng tìm thấy, bởi việc tìm ASCII string!!!
Bạn có tin hay không?
Magic String(Chuỗi kí tự Magic) "012345678901234" và nó có phải là mặc định để cho SP duyệt để test phone hay là gì! Có lẽ họ gặp phải phiền toái khi thiết lập một chuỗi ký tự giống như là: " DÀNH CHO CÁC ****ER, ĐÂY LÀ ĐOẠN MÃ MẤU CHỐT"
Dẫu sao...
Sử dụng "Lister" trên Windows để xem "mcusw" file, trong option, chọn HEX.
Nhấn F7, nhập vào 012345678901234, gõ "Enter" để bắt đầu tìm kiếm chuỗi ký tự đó! Tất cả các dữ liệu khác phải tìm kiếm, giống như một mớ rác, chỉ với duy nhất, chuỗi ký tự ASCII!
Note: Nếu bạn không tìm thấy chuỗi ký tự trong "mcusw", hãy thử tìm trong file thứ 2, đã được tạo bởi "fls2bin.exe"
Khi bạn đã tìm thấy chuỗi ký tự đó, hãy quan sát trong danh sách HEX địa chỉ của chúng(Chuỗi ký tự đã được tìm ra) Trừ nó đi 1000h(200h to 2000h).
Đó sẽ là địa chỉ, mà từ đó, chúng ta bắt đầu bóc gỡ code.
Rồi...
Load file trên 1 số công cụ bóc tách ARM, sử dụng LITLE ENDIAN và THUMB mode, Set địa chỉ tách đã được xác định ở bước trước, và bắt đầu tách Code!
Trong quá trình này, bạn phải tìm các chỉ dẫn hướng tới chuỗi ký tự "012345678901234"!
Giống như thế này:
00A0C9BC: FE A4 LEA R4,[PC+#03F8] ;[00A0CDB8]=33323130 '012345678901234'
Và bạn tìm được một trong số các SP rutines có thể Patch được.
Trong ví dụ này, full rutines trông như thế này:
(From: V 05.00 27-04-07 RM-174)
00A0C9B6: F0 B5 PUSH (R4,R5,R6,R7,LR)
00A0C9B8: 06 1C ADD R6,R0,#0
00A0C9BA: 0F 1C ADD R7,R1,#0
00A0C9BC: FE A4 LEA R4,[PC+#03F8] ;[00A0CDB8]=33323130 '012345678901234'
00A0C9BE: 85 B0 SUB SP,#0014
00A0C9C0: 2E CC LDM [R4],(R1,R2,R3,R5)
00A0C9C2: 01 A8 LEA R0,[SP+#0004]
00A0C9C4: 2E C0 STM [R0],(R1,R2,R3,R5)
00A0C9C6: 02 25 MOV R5,#02
00A0C9C8: 00 24 MOV R4,#00
00A0C9CA: FF F7 07 F9 CALL 00A0BBDC
00A0C9CE: 00 28 CMP R0,#00
00A0C9D0: 02 D0 BEQ 00A0C9D8
00A0C9D2: 02 28 CMP R0,#02
00A0C9D4: 2D D0 BEQ 00A0CA32
00A0C9D6: 0A E0 JMP 00A0C9EE
00A0C9D8: 0F 22 MOV R2,#0F
00A0C9DA: 31 1C ADD R1,R6,#0
00A0C9DC: 01 A8 LEA R0,[SP+#0004]
00A0C9DE: 50 F6 6C E8 CALLX 0085CABA
00A0C9E2: 00 28 CMP R0,#00
00A0C9E4: 01 D1 BNE 00A0C9EA
00A0C9E6: 00 25 MOV R5,#00
00A0C9E8: 23 E0 JMP 00A0CA32
00A0C9EA: 08 25 MOV R5,#08
00A0C9EC: 21 E0 JMP 00A0CA32
00A0C9EE: 30 5D LDRB R0,[R6+R4]
00A0C9F0: 30 38 SUB R0,#30
00A0C9F2: 0A 28 CMP R0,#0A
00A0C9F4: 02 D3 BCC 00A0C9FC
00A0C9F6: 08 20 MOV R0,#08
00A0C9F8: 05 B0 ADD SP,#0014
00A0C9FA: F0 BD RET (R4,R5,R6,R7)
00A0C9FC: 01 34 ADD R4,#01
00A0C9FE: 24 06 LSL R4,R4,24
00A0CA00: 24 0E LSR R4,R4,24
00A0CA02: 0E 2C CMP R4,#0E
00A0CA04: F3 D9 BLS 00A0C9EE
00A0CA06: 08 20 MOV R0,#08
00A0CA08: 40 F6 3C E9 CALLX 0084CC84
00A0CA0C: 04 1C ADD R4,R0,#0
00A0CA0E: 02 1C ADD R2,R0,#0
00A0CA10: 39 1C ADD R1,R7,#0
00A0CA12: 30 1C ADD R0,R6,#0
00A0CA14: 43 F7 9E F9 CALL 0094FD54
00A0CA18: 01 28 CMP R0,#01
00A0CA1A: 01 D1 BNE 00A0CA20
00A0CA1C: 00 25 MOV R5,#00
00A0CA1E: 05 E0 JMP 00A0CA2C
00A0CA20: 60 68 LDR R0,[R4+#04]
00A0CA22: 23 28 CMP R0,#23
00A0CA24: 01 D1 BNE 00A0CA2A
00A0CA26: 08 25 MOV R5,#08
00A0CA28: 00 E0 JMP 00A0CA2C
00A0CA2A: 02 25 MOV R5,#02
00A0CA2C: 20 1C ADD R0,R4,#0
00A0CA2E: 50 F6 34 E8 CALLX 0085CA9A
00A0CA32: 28 1C ADD R0,R5,#0
00A0CA34: E0 E7 JMP 00A0C9F8
Tại địa chỉ 00A0CA14, phần quan trọng nhất cho chức năng call, chức năng sẽ test PSW!
Khi phản hồi từ test đó, nếu R0=1, mật khẩu sẽ được xem là đúng, và phone sẽ được unlock!
Vậy chúng ta có thể patch data tại địa chỉ:
00A0CA18: 01 28 CMP R0,#01 to
00 28 that is CMP R0,#00
Hoặc địa chỉ:
00A0CA1A: 01 D1 BNE 00A0CA20 to
01 D0 that is BNE 00A0CA20
Phone sẽ được Unlock!
Dù sao, còn có rất nhiều cách để patch code bởi by fly, togling chỉ cần duy nhất MỘT bit!!!,
Bởi vì, Nokia, đã để quá nhiều lỗ hổng, trong thiết kế của họ!
__________________
Quyền Bao 0937 47 48 89
________________________________________
Lý Thuyết Unlock Bb5
Dường như ai cũng đều biết, việc đó được thực hiện thế nào, ngoại trừ Nokia, vì họ chẳng có thay đổi gì trong phần mềm hệ thống để ngăn chặn việc đó!
Xin được nhắc lại là, đúng như vậy đó!
Vì sao, họ lại để những lỗ hổng lớn như vậy trong SP security...?
BB5 sử dụng giải thuật RSA và AES chạy trên ROM và RAM bảo mật. SP rutines chính, được lưu trữ trong khối "PA_SL" của Flash, những rutines này, được load sang RAM bảo mật, nếu chữ ký bảo mật RSA là đúng, CPU sẽ chạy nó.
Nhưng "SP phục vụ", là 1 phần của MCUSW, thành phần đang chạy trực tiếp trên Flash, lại không được bảo vệ! Well, nó chỉ được kiểm tra duy nhất 1 lần, khi điện thoại khởi động, sau đó, bạn có thể patch code dễ dàng!
ARM CPU đọc dữ liệu từ flash theo dạng Bursts( Thuật ngữ này được dùng theo nhiều dạng, với các phương thức truyền dữ liệu không ngừng theo dạng khối). Trong trường hợp này, nó được truyền theo dạng khối 32 Bytes, và bắt đầu từ địa chỉ thẳng hàng 32.
Vậy bước quan trọng cần biết đến đầu tiên là: Đâu là đoạn mã cần được Patch trong Flash!
Bạn có thể biết được điều đó bằng cách tháo Flash ra, và "Đọc" nó bằng các thiết bị lập trình. Hoặc bạn có thể sử dụng SW của tôi, để trích xuất mcusw từ các file update của Nokia. Bạn hãy tìm file lớn nhất trong Drive, và đổi tên nó thành "Infile", rồi chạy "fls2bin.exe" và chờ đợi, sẽ có 2 file được tạo ra. Một trong số 2 file đó là MCUSW.
Chú ý: fls2bin có thể không làm việc với tất cả các CPU Flash files
Khi bạn đã có code, bước tiếp theo, là tìm xem, đâu là chỗ để Patch đoạn code đó!
Well; Đó là cả một tiến trình xử lý rất phức tạp, đòi hỏi kiến thức, kinh nghiệm, sự nỗ lực làm việc...vv.
Xin được nhắc lại một lần nữa, có phải Nokia đã tạo một lỗ hổng lớn hay không?
Một trong số những rutines then chốt có thể được dễ dàng tìm thấy, bởi việc tìm ASCII string!!!
Bạn có tin hay không?
Magic String(Chuỗi kí tự Magic) "012345678901234" và nó có phải là mặc định để cho SP duyệt để test phone hay là gì! Có lẽ họ gặp phải phiền toái khi thiết lập một chuỗi ký tự giống như là: " DÀNH CHO CÁC ****ER, ĐÂY LÀ ĐOẠN MÃ MẤU CHỐT"
Dẫu sao...
Sử dụng "Lister" trên Windows để xem "mcusw" file, trong option, chọn HEX.
Nhấn F7, nhập vào 012345678901234, gõ "Enter" để bắt đầu tìm kiếm chuỗi ký tự đó! Tất cả các dữ liệu khác phải tìm kiếm, giống như một mớ rác, chỉ với duy nhất, chuỗi ký tự ASCII!
Note: Nếu bạn không tìm thấy chuỗi ký tự trong "mcusw", hãy thử tìm trong file thứ 2, đã được tạo bởi "fls2bin.exe"
Khi bạn đã tìm thấy chuỗi ký tự đó, hãy quan sát trong danh sách HEX địa chỉ của chúng(Chuỗi ký tự đã được tìm ra) Trừ nó đi 1000h(200h to 2000h).
Đó sẽ là địa chỉ, mà từ đó, chúng ta bắt đầu bóc gỡ code.
Rồi...
Load file trên 1 số công cụ bóc tách ARM, sử dụng LITLE ENDIAN và THUMB mode, Set địa chỉ tách đã được xác định ở bước trước, và bắt đầu tách Code!
Trong quá trình này, bạn phải tìm các chỉ dẫn hướng tới chuỗi ký tự "012345678901234"!
Giống như thế này:
00A0C9BC: FE A4 LEA R4,[PC+#03F8] ;[00A0CDB8]=33323130 '012345678901234'
Và bạn tìm được một trong số các SP rutines có thể Patch được.
Trong ví dụ này, full rutines trông như thế này:
(From: V 05.00 27-04-07 RM-174)
00A0C9B6: F0 B5 PUSH (R4,R5,R6,R7,LR)
00A0C9B8: 06 1C ADD R6,R0,#0
00A0C9BA: 0F 1C ADD R7,R1,#0
00A0C9BC: FE A4 LEA R4,[PC+#03F8] ;[00A0CDB8]=33323130 '012345678901234'
00A0C9BE: 85 B0 SUB SP,#0014
00A0C9C0: 2E CC LDM [R4],(R1,R2,R3,R5)
00A0C9C2: 01 A8 LEA R0,[SP+#0004]
00A0C9C4: 2E C0 STM [R0],(R1,R2,R3,R5)
00A0C9C6: 02 25 MOV R5,#02
00A0C9C8: 00 24 MOV R4,#00
00A0C9CA: FF F7 07 F9 CALL 00A0BBDC
00A0C9CE: 00 28 CMP R0,#00
00A0C9D0: 02 D0 BEQ 00A0C9D8
00A0C9D2: 02 28 CMP R0,#02
00A0C9D4: 2D D0 BEQ 00A0CA32
00A0C9D6: 0A E0 JMP 00A0C9EE
00A0C9D8: 0F 22 MOV R2,#0F
00A0C9DA: 31 1C ADD R1,R6,#0
00A0C9DC: 01 A8 LEA R0,[SP+#0004]
00A0C9DE: 50 F6 6C E8 CALLX 0085CABA
00A0C9E2: 00 28 CMP R0,#00
00A0C9E4: 01 D1 BNE 00A0C9EA
00A0C9E6: 00 25 MOV R5,#00
00A0C9E8: 23 E0 JMP 00A0CA32
00A0C9EA: 08 25 MOV R5,#08
00A0C9EC: 21 E0 JMP 00A0CA32
00A0C9EE: 30 5D LDRB R0,[R6+R4]
00A0C9F0: 30 38 SUB R0,#30
00A0C9F2: 0A 28 CMP R0,#0A
00A0C9F4: 02 D3 BCC 00A0C9FC
00A0C9F6: 08 20 MOV R0,#08
00A0C9F8: 05 B0 ADD SP,#0014
00A0C9FA: F0 BD RET (R4,R5,R6,R7)
00A0C9FC: 01 34 ADD R4,#01
00A0C9FE: 24 06 LSL R4,R4,24
00A0CA00: 24 0E LSR R4,R4,24
00A0CA02: 0E 2C CMP R4,#0E
00A0CA04: F3 D9 BLS 00A0C9EE
00A0CA06: 08 20 MOV R0,#08
00A0CA08: 40 F6 3C E9 CALLX 0084CC84
00A0CA0C: 04 1C ADD R4,R0,#0
00A0CA0E: 02 1C ADD R2,R0,#0
00A0CA10: 39 1C ADD R1,R7,#0
00A0CA12: 30 1C ADD R0,R6,#0
00A0CA14: 43 F7 9E F9 CALL 0094FD54
00A0CA18: 01 28 CMP R0,#01
00A0CA1A: 01 D1 BNE 00A0CA20
00A0CA1C: 00 25 MOV R5,#00
00A0CA1E: 05 E0 JMP 00A0CA2C
00A0CA20: 60 68 LDR R0,[R4+#04]
00A0CA22: 23 28 CMP R0,#23
00A0CA24: 01 D1 BNE 00A0CA2A
00A0CA26: 08 25 MOV R5,#08
00A0CA28: 00 E0 JMP 00A0CA2C
00A0CA2A: 02 25 MOV R5,#02
00A0CA2C: 20 1C ADD R0,R4,#0
00A0CA2E: 50 F6 34 E8 CALLX 0085CA9A
00A0CA32: 28 1C ADD R0,R5,#0
00A0CA34: E0 E7 JMP 00A0C9F8
Tại địa chỉ 00A0CA14, phần quan trọng nhất cho chức năng call, chức năng sẽ test PSW!
Khi phản hồi từ test đó, nếu R0=1, mật khẩu sẽ được xem là đúng, và phone sẽ được unlock!
Vậy chúng ta có thể patch data tại địa chỉ:
00A0CA18: 01 28 CMP R0,#01 to
00 28 that is CMP R0,#00
Hoặc địa chỉ:
00A0CA1A: 01 D1 BNE 00A0CA20 to
01 D0 that is BNE 00A0CA20
Phone sẽ được Unlock!
Dù sao, còn có rất nhiều cách để patch code bởi by fly, togling chỉ cần duy nhất MỘT bit!!!,
Bởi vì, Nokia, đã để quá nhiều lỗ hổng, trong thiết kế của họ!
__________________
Quyền Bao 0937 47 48 89