Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ■まずkallsymsprintの結果の中から、diagchar_ioctlのアドレスを探す
- SO-01D(4.0.1.C.1.31)の場合
- 80290038 diagchar_ioctl
- ■次に、そのあたりをdumpしてコードを得る
- arm-linux-androideabi-objdump -b binary -m arm --adjust-vma=0x80008000 --start-address=0x80290038 --stop-address=0x80291038 -D kernelbin > kernel_asm.txt
- --start-addressはdiagchar_ioctlの開始アドレス、そこから適当に0x1000くらい取るので--stop-addressは0x80291038とした
- ■kernel_asm.txtの中から、delayed_rsp_idに該当してそうな部分を探す
- そのあたりのコードは以下
- 80290248: e3520008 cmp r2, #8
- 8029024c: 1a000014 bne 0x802902a4
- 80290250: e5932000 ldr r2, [r3]
- 80290254: e3520000 cmp r2, #0
- 80290258: 0a000093 beq 0x802904ac
- 8029025c: e5933004 ldr r3, [r3, #4]
- 80290260: e3530002 cmp r3, #2
- 80290264: 1a000090 bne 0x802904ac
- 80290268: e5943008 ldr r3, [r4, #8]
- 8029026c: e3530000 cmp r3, #0
- 80290270: 0a00008d beq 0x802904ac
- 80290274: e59f123c ldr r1, [pc, #572] ; 0x802904b8
- 80290278: e30f0fff movw r0, #65535 ; 0xffff
- 8029027c: e3a06000 mov r6, #0
- 80290280: e1d130b8 ldrh r3, [r1, #8] ; r3 = current delayed_rsp_id
- 80290284: e1530000 cmp r3, r0
- 80290288: 12830001 addne r0, r3, #1
- 8029028c: 11c100b8 strhne r0, [r1, #8]
- 80290290: e1c230b0 strh r3, [r2]
- 80290294: e3a02002 mov r2, #2
- 80290298: e5943008 ldr r3, [r4, #8]
- 8029029c: e5832000 str r2, [r3]
- 802902a0: ea000082 b 0x802904b0
- SO-01D(4.0.1.C.1.31)の場合は、80290280番地の ldrh r3, [r1, #8] の r3 が delayed_rsp_id のアドレスになる
- 「r3, [r1, #8]」とか「#65535」で探すと見付かりやすいかも
- さて、r3 = r1 + 8 らしいので、r1はどうなってるかというと、3つ上を見ると、
- ldr r1, [pc, #572] ; 0x802904b8 となっている
- 802904b8番地はどうなっているかというと、
- 802904b8: 807542e0 rsbshi r4, r5, r0, ror #5
- ということで、「807542e0」が入っており、r1 = 0x807542e0 となる
- よってr3 = 0x807542e8
- つまり、delayed_rsp_id = 0x807542e8 となる
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement