📄 dvdioctl.cod
字号:
; 95 : {
0022c |$L32398|
0022c e1a0c00d mov r12, sp
00230 e92d0003 stmdb sp!, {r0, r1}
00234 e92d5000 stmdb sp!, {r12, lr}
00238 e24dd018 sub sp, sp, #0x18
0023c |$M32396|
; 96 : DWORD dwRet = 0;
0023c e3a03000 mov r3, #0
00240 e58d3000 str r3, [sp]
; 97 :
; 98 : switch (pKey->KeyType) {
00244 e59d3024 ldr r3, [sp, #0x24]
00248 e283100c add r1, r3, #0xC
0024c e1d130d3 ldrsb r3, [r1, #3]
00250 e1a02403 mov r2, r3, lsl #8
00254 e5d13002 ldrb r3, [r1, #2]
00258 e1833002 orr r3, r3, r2
0025c e1a02403 mov r2, r3, lsl #8
00260 e5d13001 ldrb r3, [r1, #1]
00264 e1833002 orr r3, r3, r2
00268 e1a02403 mov r2, r3, lsl #8
0026c e5d13000 ldrb r3, [r1]
00270 e1833002 orr r3, r3, r2
00274 e58d3008 str r3, [sp, #8]
00278 e59d3008 ldr r3, [sp, #8]
0027c e3530004 cmp r3, #4
00280 0a000003 beq |$L32138|
00284 e59d3008 ldr r3, [sp, #8]
00288 e3530080 cmp r3, #0x80
0028c 0a00002d beq |$L32141|
00290 ea000040 b |$L32143|
00294 |$L32138|
; 99 : case DvdTitleKey:
; 100 : dwRet = DVDSetupReadTitleKey(pCmdPkt, (BYTE)(pKey->KeyType),
; 101 : (BYTE)pKey->SessionId, pKey->StartAddr + 1);
00294 e59d3024 ldr r3, [sp, #0x24]
00298 e2831010 add r1, r3, #0x10
0029c e5d13003 ldrb r3, [r1, #3]
002a0 e1a02403 mov r2, r3, lsl #8
002a4 e5d13002 ldrb r3, [r1, #2]
002a8 e1833002 orr r3, r3, r2
002ac e1a02403 mov r2, r3, lsl #8
002b0 e5d13001 ldrb r3, [r1, #1]
002b4 e1833002 orr r3, r3, r2
002b8 e1a02403 mov r2, r3, lsl #8
002bc e5d13000 ldrb r3, [r1]
002c0 e1833002 orr r3, r3, r2
002c4 e2833001 add r3, r3, #1
002c8 e59d2024 ldr r2, [sp, #0x24]
002cc e2820008 add r0, r2, #8
002d0 e5d02003 ldrb r2, [r0, #3]
002d4 e1a01402 mov r1, r2, lsl #8
002d8 e5d02002 ldrb r2, [r0, #2]
002dc e1822001 orr r2, r2, r1
002e0 e1a01402 mov r1, r2, lsl #8
002e4 e5d02001 ldrb r2, [r0, #1]
002e8 e1822001 orr r2, r2, r1
002ec e1a01402 mov r1, r2, lsl #8
002f0 e5d02000 ldrb r2, [r0]
002f4 e1822001 orr r2, r2, r1
002f8 e20220ff and r2, r2, #0xFF
002fc e59d1024 ldr r1, [sp, #0x24]
00300 e281e00c add lr, r1, #0xC
00304 e1de10d3 ldrsb r1, [lr, #3]
00308 e1a00401 mov r0, r1, lsl #8
0030c e5de1002 ldrb r1, [lr, #2]
00310 e1811000 orr r1, r1, r0
00314 e1a00401 mov r0, r1, lsl #8
00318 e5de1001 ldrb r1, [lr, #1]
0031c e1811000 orr r1, r1, r0
00320 e1a00401 mov r0, r1, lsl #8
00324 e5de1000 ldrb r1, [lr]
00328 e1811000 orr r1, r1, r0
0032c e20110ff and r1, r1, #0xFF
00330 e59d0020 ldr r0, [sp, #0x20]
00334 eb000000 bl |?DVDSetupReadTitleKey@@YAKPAU_ATAPI_COMMAND_PACKET@@EEK@Z|
00338 e58d000c str r0, [sp, #0xC]
0033c e59d300c ldr r3, [sp, #0xC]
00340 e58d3000 str r3, [sp]
; 102 : break;
00344 ea000033 b |$L32135|
00348 |$L32141|
; 103 : case DvdDriveKey:
; 104 : dwRet = DVDSetupReadDiscKey(pCmdPkt, (BYTE)((pKey->SessionId) << 6));
00348 e59d3024 ldr r3, [sp, #0x24]
0034c e2831008 add r1, r3, #8
00350 e5d13003 ldrb r3, [r1, #3]
00354 e1a02403 mov r2, r3, lsl #8
00358 e5d13002 ldrb r3, [r1, #2]
0035c e1833002 orr r3, r3, r2
00360 e1a02403 mov r2, r3, lsl #8
00364 e5d13001 ldrb r3, [r1, #1]
00368 e1833002 orr r3, r3, r2
0036c e1a02403 mov r2, r3, lsl #8
00370 e5d13000 ldrb r3, [r1]
00374 e1833002 orr r3, r3, r2
00378 e1a03303 mov r3, r3, lsl #6
0037c e20310ff and r1, r3, #0xFF
00380 e59d0020 ldr r0, [sp, #0x20]
00384 eb000000 bl |?DVDSetupReadDiscKey@@YAKPAU_ATAPI_COMMAND_PACKET@@E@Z|
00388 e58d0010 str r0, [sp, #0x10]
0038c e59d3010 ldr r3, [sp, #0x10]
00390 e58d3000 str r3, [sp]
; 105 : break;
00394 ea00001f b |$L32135|
00398 |$L32143|
; 106 : default:
; 107 : dwRet = DVDSetupReadTitleKey(pCmdPkt, (BYTE)(pKey->KeyType),
; 108 : (BYTE)pKey->SessionId, 0);
00398 e3a03000 mov r3, #0
0039c e59d2024 ldr r2, [sp, #0x24]
003a0 e2820008 add r0, r2, #8
003a4 e5d02003 ldrb r2, [r0, #3]
003a8 e1a01402 mov r1, r2, lsl #8
003ac e5d02002 ldrb r2, [r0, #2]
003b0 e1822001 orr r2, r2, r1
003b4 e1a01402 mov r1, r2, lsl #8
003b8 e5d02001 ldrb r2, [r0, #1]
003bc e1822001 orr r2, r2, r1
003c0 e1a01402 mov r1, r2, lsl #8
003c4 e5d02000 ldrb r2, [r0]
003c8 e1822001 orr r2, r2, r1
003cc e20220ff and r2, r2, #0xFF
003d0 e59d1024 ldr r1, [sp, #0x24]
003d4 e281e00c add lr, r1, #0xC
003d8 e1de10d3 ldrsb r1, [lr, #3]
003dc e1a00401 mov r0, r1, lsl #8
003e0 e5de1002 ldrb r1, [lr, #2]
003e4 e1811000 orr r1, r1, r0
003e8 e1a00401 mov r0, r1, lsl #8
003ec e5de1001 ldrb r1, [lr, #1]
003f0 e1811000 orr r1, r1, r0
003f4 e1a00401 mov r0, r1, lsl #8
003f8 e5de1000 ldrb r1, [lr]
003fc e1811000 orr r1, r1, r0
00400 e20110ff and r1, r1, #0xFF
00404 e59d0020 ldr r0, [sp, #0x20]
00408 eb000000 bl |?DVDSetupReadTitleKey@@YAKPAU_ATAPI_COMMAND_PACKET@@EEK@Z|
0040c e58d0014 str r0, [sp, #0x14]
00410 e59d3014 ldr r3, [sp, #0x14]
00414 e58d3000 str r3, [sp]
00418 |$L32135|
; 109 : }
; 110 :
; 111 : return dwRet;
00418 e59d3000 ldr r3, [sp]
0041c e58d3004 str r3, [sp, #4]
00420 e59d0004 ldr r0, [sp, #4]
; 112 : }
00424 e28dd018 add sp, sp, #0x18
00428 e89d6000 ldmia sp, {sp, lr}
0042c e12fff1e bx lr
00430 |$M32397|
ENDP ; |?DVDSetupReadKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@@Z|, DVDSetupReadKey
EXPORT |?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z| ; CopyDVDKey
00020 AREA |.pdata|, PDATA
|$T32405| DCD |$L32404|
DCD 0x40006804
; Function compile flags: /Odt
00430 AREA |.text|, CODE, ARM
00430 |?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z| PROC ; CopyDVDKey
; 119 : {
00430 |$L32404|
00430 e1a0c00d mov r12, sp
00434 e92d0007 stmdb sp!, {r0 - r2}
00438 e92d5000 stmdb sp!, {r12, lr}
0043c e24dd014 sub sp, sp, #0x14
00440 |$M32402|
; 120 : DWORD dwTmp;
; 121 : PBYTE psrc, pdest;
; 122 :
; 123 : dwTmp = dwKeyLength - 4;
00440 e59d301c ldr r3, [sp, #0x1C]
00444 e2433004 sub r3, r3, #4
00448 e58d3004 str r3, [sp, #4]
; 124 :
; 125 : pdest = (PBYTE)&(pKey->KeyData[0]);
0044c e59d3020 ldr r3, [sp, #0x20]
00450 e2833020 add r3, r3, #0x20
00454 e58d3008 str r3, [sp, #8]
; 126 :
; 127 : switch (pKey->KeyType) {
00458 e59d3020 ldr r3, [sp, #0x20]
0045c e283100c add r1, r3, #0xC
00460 e1d130d3 ldrsb r3, [r1, #3]
00464 e1a02403 mov r2, r3, lsl #8
00468 e5d13002 ldrb r3, [r1, #2]
0046c e1833002 orr r3, r3, r2
00470 e1a02403 mov r2, r3, lsl #8
00474 e5d13001 ldrb r3, [r1, #1]
00478 e1833002 orr r3, r3, r2
0047c e1a02403 mov r2, r3, lsl #8
00480 e5d13000 ldrb r3, [r1]
00484 e1833002 orr r3, r3, r2
00488 e58d3010 str r3, [sp, #0x10]
0048c e59d3010 ldr r3, [sp, #0x10]
00490 e3530000 cmp r3, #0
00494 0a00001c beq |$L32162|
00498 e59d3010 ldr r3, [sp, #0x10]
0049c e3530004 cmp r3, #4
004a0 0a000000 beq |$L32159|
004a4 ea00002b b |$L32164|
004a8 |$L32159|
; 128 : case DvdTitleKey:
; 129 : pKey->KeyFlags = pTitle->cgms;
004a8 e59d3024 ldr r3, [sp, #0x24]
004ac e2833004 add r3, r3, #4
004b0 e5d32000 ldrb r2, [r3]
004b4 e59d3020 ldr r3, [sp, #0x20]
004b8 e2831014 add r1, r3, #0x14
004bc e1a03002 mov r3, r2
004c0 e5c13000 strb r3, [r1]
004c4 e1a02423 mov r2, r3, lsr #8
004c8 e1a03002 mov r3, r2
004cc e5c13001 strb r3, [r1, #1]
004d0 e1a02422 mov r2, r2, lsr #8
004d4 e1a03002 mov r3, r2
004d8 e5c13002 strb r3, [r1, #2]
004dc e1a03422 mov r3, r2, lsr #8
004e0 e5c13003 strb r3, [r1, #3]
; 130 : dwTmp--;
004e4 e59d3004 ldr r3, [sp, #4]
004e8 e2433001 sub r3, r3, #1
004ec e58d3004 str r3, [sp, #4]
; 131 : psrc = (PBYTE)&(pTitle->title[0]);
004f0 e59d3024 ldr r3, [sp, #0x24]
004f4 e2833005 add r3, r3, #5
004f8 e58d3000 str r3, [sp]
; 132 : pdest = (PBYTE)&(pKey->KeyData[0]);
004fc e59d3020 ldr r3, [sp, #0x20]
00500 e2833020 add r3, r3, #0x20
00504 e58d3008 str r3, [sp, #8]
; 133 : break;
00508 ea000018 b |$L32156|
0050c |$L32162|
; 134 : case DvdAGID:
; 135 : pKey->SessionId = ((PRKFMT_AGID)pTitle)->agid >> 6;
0050c e59d3024 ldr r3, [sp, #0x24]
00510 e2833007 add r3, r3, #7
00514 e5d33000 ldrb r3, [r3]
00518 e1a02343 mov r2, r3, asr #6
0051c e59d3020 ldr r3, [sp, #0x20]
00520 e2831008 add r1, r3, #8
00524 e1a03002 mov r3, r2
00528 e5c13000 strb r3, [r1]
0052c e1a02423 mov r2, r3, lsr #8
00530 e1a03002 mov r3, r2
00534 e5c13001 strb r3, [r1, #1]
00538 e1a02422 mov r2, r2, lsr #8
0053c e1a03002 mov r3, r2
00540 e5c13002 strb r3, [r1, #2]
00544 e1a03422 mov r3, r2, lsr #8
00548 e5c13003 strb r3, [r1, #3]
; 136 : dwTmp = 0;
0054c e3a03000 mov r3, #0
00550 e58d3004 str r3, [sp, #4]
; 137 : break;
00554 ea000005 b |$L32156|
00558 |$L32164|
; 138 : default:
; 139 : psrc = (PBYTE)&(pTitle->cgms);
00558 e59d3024 ldr r3, [sp, #0x24]
0055c e2833004 add r3, r3, #4
00560 e58d3000 str r3, [sp]
; 140 : pdest = (PBYTE)&(pKey->KeyData[0]);
00564 e59d3020 ldr r3, [sp, #0x20]
00568 e2833020 add r3, r3, #0x20
0056c e58d3008 str r3, [sp, #8]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -