05-17-2017, 03:53 PM
OK, the self-modification can be confirmed. This is the code that is being modified (already 46 times at that moment):
and this seems to be the code responsible for the self-modifications as this is the only place where a "cache 0x08" is being done (in sub 0x0886358C):
Let me analyse what is being done here...
Code:
11:19:18 DEBUG compiler - user_main - Compiling _S1_46_886554C
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile > 0x886554C - addiu $sp, $sp, -64
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865550 - sv.q C700.q, 0($sp)
11:19:18 DEBUG compiler - user_main - sv.q sequence 0x08865550-0x0886555C
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865560 - addiu $t1, $a2, 1
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865564 - andi $t1, $t1, -2
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865568 - addu $t1, $t1, $a0
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886556C - lv.q C400.q, 0($a3)
11:19:18 DEBUG compiler - user_main - lv.q sequence 0x0886556C-0x0886558C
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile > 0x8865590 - lv.q C030.q, 0($a1)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865594 - lv.q C230.q, 16($a1)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865598 - cache 0x1E, 95($a1)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886559C - vh2f.p C000.p, C030.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655A0 - vh2f.p C010.p, C032.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655A4 - vh2f.p C020.p, C032.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655A8 - vh2f.p C030.p, C030.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655AC - vh2f.p C200.p, C230.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655B0 - vh2f.p C210.p, C232.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655B4 - vh2f.p C220.p, C232.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655B8 - vh2f.p C230.p, C230.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655BC - addiu $a1, $a1, 32
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655C0 - addiu $a0, $a0, 2
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655C4 - vmin.q C620.q, C620.q, C630.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655C8 - vmin.q C700.q, C700.q, C710.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655CC - vmov.p R022.p, R002.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655D0 - vmin.p C620.p, C620.p, C720.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655D4 - vmov.q R100.q, R020.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655D8 - VPFXD [x, y, 0:1, 0:1]
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655DC - vmin.q C720.q, C620.q, C700.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655E0 - vmov.q R101.q, R001.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655E4 - vmov.q R102.q, R002.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655E8 - vmin.p C720.p, C720.p, C722.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655EC - vmov.p R222.p, R202.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655F0 - vmov.q R300.q, R220.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655F4 - vi2c.q S733.s, C720.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655F8 - vmov.q R301.q, R201.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x88655FC - vmov.q R302.q, R202.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865600 - vhdp.q S620.s, C100.q, C400.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865604 - vhdp.q S630.s, C010.q, C410.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865608 - vhdp.q S700.s, C020.q, C420.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886560C - vhdp.q S710.s, C010.q, C430.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865610 - vhdp.q S720.s, C010.q, C500.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865614 - vhdp.q S621.s, C300.q, C400.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865618 - vhdp.q S631.s, C210.q, C410.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886561C - vhdp.q S701.s, C220.q, C420.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865620 - vhdp.q S711.s, C210.q, C430.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865624 - vhdp.q S721.s, C210.q, C500.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865628 - vhdp.q S622.s, C000.q, C510.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886562C - vhdp.q S632.s, C000.q, C520.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865630 - vhdp.q S702.s, C030.q, C530.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865634 - vhdp.q S712.s, C000.q, C600.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865638 - vhdp.q S623.s, C200.q, C510.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886563C - vhdp.q S633.s, C200.q, C520.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865640 - vhdp.q S703.s, C230.q, C530.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865644 - vhdp.q S713.s, C200.q, C600.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865648 - mfv.s $t0, S733.s
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile ^ 0x886564C - bne $a0, $t1, 0x08865590
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865650 - sh $t0, -2($a0)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865654 - vmin.q C620.q, C620.q, C630.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865658 - vmin.q C700.q, C700.q, C710.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886565C - vmin.p C620.p, C620.p, C720.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865660 - VPFXD [x, y, 0:1, 0:1]
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865664 - vmin.q C720.q, C620.q, C700.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865668 - vmin.p C720.p, C720.p, C722.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886566C - vi2c.q S733.s, C720.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865670 - mfv.s $t0, S733.s
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865674 - sh $t0, 0($a0)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865678 - lv.q C700.q, 0($sp)
11:19:18 DEBUG compiler - user_main - lv.q sequence 0x08865678-0x08865684
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x8865688 - jr $ra
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile 0x886568C - addiu $sp, $sp, 64
and this seems to be the code responsible for the self-modifications as this is the only place where a "cache 0x08" is being done (in sub 0x0886358C):
Code:
11:14:54 DEBUG compiler - user_main - Compiling _S1_2_8863BB8
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile > 0x8863BB8 - addiu $sp, $sp, -48
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BBC - sw $s0, 28($sp)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BC0 - or $a1, $a0, $zr <=> move $a1, $a0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BC4 - addiu $s0, $sp, 16
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BC8 - or $a0, $s0, $zr <=> move $a0, $s0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BCC - sw $ra, 32($sp)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile < 0x8863BD0 - jal 0x08863B50
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BD4 - ori $a2, $zr, 9 <=> li $a2, 9
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BD8 - lui $a0, 0x0886 <=> li $a0, 0x08860000
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BDC - addiu $a0, $a0, 21836
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BE0 - lw $a1, 0($a0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BE4 - addiu $a2, $zr, -32513 <=> li $a2, -32513
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BE8 - lui $a3, 0x6611 <=> li $a3, 0x66110000
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BEC - and $t0, $a1, $a2
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BF0 - addiu $a1, $a3, -32614
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile v 0x8863BF4 - beq $t0, $a1, 0x08863C10
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863BF8 - nop
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile > 0x8863BFC - addiu $a0, $a0, 4
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C00 - lw $a3, 0($a0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C04 - and $a3, $a3, $a2
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile ^ 0x8863C08 - bne $a3, $a1, 0x08863BFC
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C0C - nop
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile > 0x8863C10 - or $a1, $a0, $zr <=> move $a1, $a0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C14 - ori $a3, $zr, 0 <=> li $a3, 0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile > 0x8863C18 - lbu $a2, 0($s0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C1C - slti $t0, $a2, 8
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile v 0x8863C20 - bne $t0, $zr, 0x08863C2C
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C24 - nop
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C28 - break 0x00000
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile > 0x8863C2C - xori $a2, $a2, 129
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C30 - sb $a2, 1($a1)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C34 - lbu $a2, 0($s0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C38 - addiu $a3, $a3, 1
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C3C - xori $a2, $a2, 137
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C40 - sb $a2, 21($a1)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C44 - addiu $s0, $s0, 1
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C48 - slti $a2, $a3, 5
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile ^ 0x8863C4C - bne $a2, $zr, 0x08863C18
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C50 - addiu $a1, $a1, 4
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C54 - addiu $a1, $a1, 20
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C58 - ori $a3, $zr, 0 <=> li $a3, 0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile > 0x8863C5C - lbu $a2, 0($s0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C60 - slti $t0, $a2, 8
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile v 0x8863C64 - bne $t0, $zr, 0x08863C70
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C68 - nop
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C6C - break 0x00000
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile > 0x8863C70 - xori $a2, $a2, 128
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C74 - sb $a2, 1($a1)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C78 - lbu $a2, 0($s0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C7C - addiu $a3, $a3, 1
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C80 - xori $a2, $a2, 136
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C84 - sb $a2, 17($a1)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C88 - addiu $s0, $s0, 1
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C8C - slti $a2, $a3, 4
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile ^ 0x8863C90 - bne $a2, $zr, 0x08863C5C
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C94 - addiu $a1, $a1, 4
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile < 0x8863C98 - jal 0x0886358C
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863C9C - ori $a1, $zr, 72 <=> li $a1, 72
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863CA0 - lw $s0, 28($sp)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863CA0 - lw $s0/$ra, 28/32($sp)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863CA8 - jr $ra
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile 0x8863CAC - addiu $sp, $sp, 48
Always include a complete log file at INFO level in your reports. Thanks! How to post a log