It's rather complicated stuff. I need to patch the EVD so that it can runtime patch the 3.11 binary. I do this by examining what the EVD does against 3.10, and then applying the same for 3.11.
To give you some idea, here's some notes:
Here's the EVD checking for ShapeShifter 3.10 and then setting the offsets for various things:
...
.not3 move.l (_returnaddr,pc),a0
lea ($194C,a0),a0
cmp.w #$4A39,(a0)
bne.w .not4
cmp.w #$6644,(6,a0)
bne.w .not4
cmp.w #$0C79,(8,a0)
bne.w .not4
cmp.w #$2079,($0012,a0)
bne.w .not4
sub.l #$00010EFE,a0
cmp.l #'.10 ',(a0)
bne.b .not4
move.l (_returnaddr,pc),a0
sub.l #$0000EA74,a0
move.l (a0),a0
tst.l (a0)
bne.b .ok
move.w #$FFFF,(_success)
move.w #310,(_version)
move.l #$0000194C,(_off1)
move.l #$00000010,(_off2)
move.l #$0000036E,(_off3)
move.l #$000000FC,(_off4)
move.l #$00000118,(_off5)
move.l #$00001ADC,(_off6)
move.l #$0000063A,(_off7)
bra.b .ok
...
From the offset usage I've determined what the things are inside ShapeShifter 3.10:
version: $3a2a version in $VER string
retaddr: $12fdc EVD lvo call return addr
func1: retaddr + $194c = $14928 func1
verdelta: func1 - $3a2a = $10EFE ok
indptr: retaddr - $ea74 = $4568 indirect ptr to value determining if func1 is called
func1bne: func1 + $0010 bne inside func1
indcgxptr: func1 + $036e = $14C96 indirect cgxbase ptr
off4: retaddr + $00fc = $130D8 indirect openwindowtags taglist
off5: retaddr + $0118 = $130F4 move.l #$408,d2 after openwindowtags
off6: retaddr + $1adc = $14AB8 move.l (4,a0),a0 / move.l a0,a1
off7: retaddr - $063a = $129A2 tst.l (abs).l
And then derived the same for ShapeShifter 3.11:
version: $3a40
retaddr: $13006
func1: retaddr + $195C = $14962
verdelta: func1 - $3a40 = $10F22
indptr: retaddr - $EA7E = $4588
func1bne: func1 + $0010
indcgxptr: func1 + $0370 = $14CD2
off4: retaddr + $0102 = $13108
off5: retaddr + $011E = $13124
off6: retaddr + $1AEE = $14AF4
off7: retaddr - $0640 = $129c6
...which will give us all the needed values and offsets to poke into the EVD.
Don't worry if you didn't understand that.
This stuff is highly specific to CardTrickEVD, and it isn't directly applicable for other EVDs. I doubt many of those need to patch ShapeShifter binary however...
[EDIT]
Now that I have the offsets needed, I'll go thru all of them yet again and see if I next correct offsets for each offset usage. If I do, I'll prepare a patched CardTrickEVD.
[/EDIT]