From 1eb742d7d7a9bddc5c64608639b4e582c386b0b2 Mon Sep 17 00:00:00 2001 From: CTurt Date: Mon, 29 Jun 2020 02:19:37 +0100 Subject: [PATCH] Slippery mouse lol --- 3.11EU/build.sh | 19 ------ 3.11EU/crt0.S | 62 ------------------ 3.11EU/fullpayload.bin | Bin 2068 -> 0 bytes 3.11EU/fullpayload.elf | Bin 6691 -> 0 bytes 3.11EU/payload.bin | Bin 952 -> 0 bytes 3.11EU/payload.c | 141 ----------------------------------------- 3.11EU/payload.elf | Bin 5382 -> 0 bytes 7 files changed, 222 deletions(-) delete mode 100644 3.11EU/build.sh delete mode 100644 3.11EU/crt0.S delete mode 100644 3.11EU/fullpayload.bin delete mode 100644 3.11EU/fullpayload.elf delete mode 100644 3.11EU/payload.bin delete mode 100644 3.11EU/payload.c delete mode 100644 3.11EU/payload.elf diff --git a/3.11EU/build.sh b/3.11EU/build.sh deleted file mode 100644 index 3850d2a..0000000 --- a/3.11EU/build.sh +++ /dev/null @@ -1,19 +0,0 @@ -echo "Building payload" - -ee-gcc -Ttext=0x01FFF800 payload.c -o payload.elf -nostartfiles -nostdlib -ffreestanding -Os -Wl,-z,max-page-size=0x1 # 2048 -ee-objcopy -O binary payload.elf payload.bin -Wl,-z,max-page-size=0x1 - -ENTRY=`ee-objdump -t payload.elf | grep " _start"` -echo $ENTRY - -# Doesn't seem to work on MinGW toolchain, so set manually if you're using that: -#ENTRY=0x`grep -o "^\S*" <<< $ENTRY` -ENTRY=0x01fff9a8 - -echo $ENTRY -echo "Building crt0" - -ee-gcc -Ttext=0x01522944 -DENTRY=$ENTRY crt0.S -o fullpayload.elf -nostartfiles -nostdlib -ffreestanding -Wl,-z,max-page-size=0x1 -ee-objcopy -O binary fullpayload.elf fullpayload.bin -Wl,-z,max-page-size=0x1 - -echo "Done. Insert fullpayload.bin into VIDEO_TS.IFO at offset 0x2ba4" diff --git a/3.11EU/crt0.S b/3.11EU/crt0.S deleted file mode 100644 index 2f23cd1..0000000 --- a/3.11EU/crt0.S +++ /dev/null @@ -1,62 +0,0 @@ -.set noreorder # If we're writing assembly, why would we want this? - -.section .text.startup - -.equ getBufferInternal, 0x2952f0 -.equ payload, (0x2000000 - 0x800) # End of RAM - -.global _start -_start: - #la $a0, 0x7f - #la $v1, 0x01 - #syscall 0x01 # ResetEE - - #la $a0, relo - la $a0, load - la $a1, 0 - la $a2, 0 - la $a3, 0 - -.global ExecPS2 -ExecPS2: - la $v1, 7 - syscall 7 # ExecPS2 - -load: - la $a0, 0 - la $a1, 0 # 0 = VIDEO_TS.IFO, 1 = VTS_01_0.IFO - la $a2, 0x3000 / 0x800 # lba offset in file - la $a3, payload # Destination - la $t0, 0x800 / 0x800 # Count - la $t1, 0 - la $v0, getBufferInternal - jalr $v0 - nop - -#relo: - # Relocate payload to end of RAM -# la $a0, (0x2000000 - 1024) -# la $a1, payload -# la $a2, 2048 -# la $v0, memcpy -# jalr $v0 - -boot: - la $v1, 0x64; la $a0, 0; syscall 0x64 # FlushCache data writeback - la $v1, 0x64; la $a0, 2; syscall 0x64 # FlushCache instruction invalidate - - # Point stack to end of scratchpad RAM - la $sp, 0x70004000 - - # Execute from relocated place - la $v0, ENTRY - j $v0 - nop - -.space (_start + 0x2fe2 - 0x2ba4) - . -fpIndex: - .byte 0x89 - .byte 0xc6 - -.space (_start + 0x3000 - 0x2ba4) - . -.incbin "payload.bin" diff --git a/3.11EU/fullpayload.bin b/3.11EU/fullpayload.bin deleted file mode 100644 index ffefae30f9abfc4c3a3a779915747579563bf60c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2068 zcmeHI&r1|x7=GrP{V|${Pmxd}m~kg}O+T1qA&EUq{)i4@Y6KoSh}O-h?H_1KAuC$- zq{pF49k(CX&1Es^(4k|{VWLA@H*YCIU++7!Vg+?BaA0P?`QGPw-{*byDZ0~c8m9Z!09}b_KSlf6NEfi%$Q!U|uf^?yDC|rR=UaAt2I3lV7~j?%uSIi> zTPF+ft7o+#3QzZj^A=)!L^^sLIdJ5_f9$~h?Z1gXm?IWGnv7F^2`#8eH3T^F2^>33 zQ)Xn}kJ~vCL5tM*0BXbq|NQ>%smnxDtYI)oi^Z3EO(E)lgun)d0Tr zQp2if6_lXUlY@T?kz;U$vJ6vP%M%aGhMm z%*aXfcU?xSoEO|9*Hgmk<^t;Lt>hc`p-KUr z53_7QxZRkO2F~(Ab-amd{$Xl*ula}|5Sc|0pkl$y%#_wE%&P!B_9?@?C z$+ASM%z7*&Xl<4|A<7wV1pRUjA>lbM$Jz*h}y5@WihkbIkkkV4{>JkWpn|=UJs1hXh&*=BoP%H$TJF0RoY&wSdfZe~zi=<47zXa5O#s*@M>R5Ip%O zI;rL0${F}yWZ=Th$AziRkr3_}B4;ONQH3SbJ_v-(PZ73)JZ0K0X}BBNYyL=ybNL5O zVw=c{j%`8!snV6NMZ&Zb(8J~tkH__8ji+#;Mr@1ja+8imXgo8+JTomx=azM@uy(zIR}T=XU9(JlmS( z&tW|hZdfqt%wFu>aTHt3AzfmW_3XI>zM-zfXgQ1Zb_}?M8;+dYOZdvM8-N8cM{9W_ zj|FEpeQ$Wz^IdX7D-oexeb1*gEEx%`)Hn04*eUj@KaQJM-on=x6V;Wd`{@%y)^>ST z-WbR7l`YJh#9`0oSs%u{20c=XK~uy2J;Hy%+@(uBSTOfI@_u1%Wi9@~kKexQ`C@Vp z1^4~zVOfLq;;zMqI|fiOZ=!Nu{0SkzxiP;D`g~oi4SUT&tWsX=3a^?nVe1^eW4^>M zu|4~NAGhVLZCxy^CAsXw%0;Pj__+`tvXc|BmyfmgbX)GMqoe!HmiD%u*M(PZg$(>* zu=GmWt!qiGYN~`-0-q-Cttk-Y&V2Q z)^&&HMPW`gtR)*E^xZk#CU1U#^X)Hsb7ki+Y07?A40w%L zn%GhF!}LMXMMmk0jG`Z2a@7itp=>S|J&O3?%-DF&9?KlUXgb$AGcuCSc4l(vY-V5_ zQv;{QCkKY%J_aWza~PTG%nYYbB0e-ZF)@%Cw#LUY=|i*{&81J~5FN{m@j1c)(cyvI z0HWDRZ=Cjr!Rcv4<&he3DXGyZq}q@7w7k*Tmg?^8=_13mm72~CWOGQRDD2NWPNs)? zk2WEd_EgiEVM>cJ_kTPUw~D!{5bfV)O4hw>in#KBpvr3x>0+Z)Mv04!Vmp>%a1=Yr z53#eA{ZV#!V?5FhSuRgx0LPK1*luU-2(BdVV=bNk)x)xmi+}U5)az~G`|>+{yz-03 zw|w00<9a3UW2sfqU-9*&UIm}=@k_+=zO}H{#GhA*r77ISx%k`S$^%IsEB)idV$YKY z(!_m~SNw@he8yPCo~1Py&8A1kG9#0SP7J39XGUr4 zAGV#8lf9SxyZgaH*`^AIv;e!bFuTaf-b!d_7%w??^pMTM&5#O)$7et4E&W2C93;*im+RgZK1Io1b>@*c@~ zDE3VD()Vhv7WkNS)s#Jji$}?~V8e~T%d3aIl_h^3_B<|NwJX9EeMVl?40ksR1jGBM ze}iCboWvfnoRfY(UfHo0;`fWN zd=Q+qy?BK$XN`*2XCLs02gZJDV?%e|Zi4r+3I-Ll#&s diff --git a/3.11EU/payload.bin b/3.11EU/payload.bin deleted file mode 100644 index 7930815acd138f3e61299a6cd664a324fb2715e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 952 zcmd5)J#Q015Pi4jk4s3gu_6?UW-mTsgR|0MrLa(n11E?g3JwS<1qBMw1tIeXI1wZ) z5Oz`}<%x#Ye6%K(6%YjlB@)FU3Ibg^K#^Ex&PD-#0ax73?!1}z=G|mrdv7hk!ABeP z=pe)hdQw*bS3ZHOvXrfDSlIK*@-rdUqaP-iU@X^Y2`l>>KY1UAxEs;IU$_v_w{EeY zOG7!&jIKtu-iQ!5FASWH(NPGKtydsYbH4N3Sa3Y)JT-c|hq|+4^m$P4w5R<5or8Pc z3~*F8fr4xZ*IyR>y8>Jb=j@DI-4qFyYWkH-g3lw6I)HHH@*qe2%y9&b9QWqhensE} zthxP*?(E2SmDIUvQ|MA;r+(fUEBFmTT4K^1lg60lh)H8i`eXLus?#n0S&4X?MZ;8i;q&!F(-vCZ5` zPDS<_`dg#q8_%J`i1x#7SrA?xtJ1=$Y0jUNQ-b$FK~7(%T>^2Af(m&+$%Gbe}IcQ%JE_x;36w)n;OpEn6NKtIJCLme`zlO40MND|^%eisFxN03A z$S>B#y~9Vtxz&JMwGX-2%N6XldCxKQf;HT}b<;n6d46e8CDFpd;)OHwwWV{M`=6d) DWYEAp diff --git a/3.11EU/payload.c b/3.11EU/payload.c deleted file mode 100644 index 9088faf..0000000 --- a/3.11EU/payload.c +++ /dev/null @@ -1,141 +0,0 @@ -#include - -// Pick one -#define LOAD_FROM_VTS_02_0_IFO -//#define LOAD_FROM_SECTOR_RELATIVE_TO_VIDEO_TS_IFO (151 - 138 - 7) - -#define min(a, b) (((a) < (b)) ? (a) : (b)) - -#define pointToIFO ((void (*)(unsigned int index, unsigned int lba, unsigned int offset))0x258a28) -#define getDiscData ((void (*)(unsigned int s, void *d))0x258b98) - -#define SifIopReset ((int (*)(char *, int))0x20e7d8) -#define SifIopSync ((int (*)(void))0x20e958) -#define SifInitRpc ((void (*)(int))0x208d80) -#define SifExitRpc ((void (*)(void))0x208f20) - -#define getBufferInternal ((int (*)(void *filename, int type, int currentSector, void *dest, unsigned int sectorsRemaining, int curReadPos))0x2952f0) - -#define ELF_PT_LOAD 1 - -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; - -typedef struct { - u8 ident[16]; - u16 type; - u16 machine; - u32 version; - u32 entry; - u32 phoff; - u32 shoff; - u32 flags; - u16 ehsize; - u16 phentsize; - u16 phnum; - u16 shentsize; - u16 shnum; - u16 shstrndx; -} elf_header_t; - -typedef struct { - u32 type; - u32 offset; - void *vaddr; - u32 paddr; - u32 filesz; - u32 memsz; - u32 flags; - u32 align; -} elf_pheader_t; - -__attribute__((noreturn)) void ExecPS2(void *entry, void *gp, int argc, char **argv) { - asm volatile("la $v1, 7; syscall 7"); - //__builtin_unreachable(); -} - -void *memcpy_(void *dest, void *src, size_t n) { - int i; - for(i = 0; i < n; i++) ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; - return dest; -} - -void *memset(void *dest, int c, size_t n) { - int i; - for(i = 0; i < n; i++) ((unsigned char *)dest)[i] = c; - return dest; -} - -static void readData(void *dest, unsigned int offset, size_t n) { - unsigned char buffer[0x800]; - - unsigned int copied = 0; - #define remaining (n - copied) - - if(offset % 0x800) { - getBufferInternal("", 1, offset / 0x800, buffer, 1, 0); - memcpy_(dest, buffer + offset % 0x800, min(0x800 - (offset % 0x800), n)); - copied += min(0x800 - (offset % 0x800), n); - } - - if(remaining >= 0x800) { - getBufferInternal("", 1, (offset + copied) / 0x800, dest + copied, remaining / 0x800, 0); - copied += (remaining / 0x800) * 0x800; - } - - if(remaining > 0) { - getBufferInternal("", 1, (offset + copied) / 0x800, buffer, 1, 0); - memcpy_(dest + copied, buffer, remaining); - } -} - -__attribute__((noreturn)) void _start(void) { - //Exit(0); - //asm volatile("la $v1, 0x04; la $a0, 0; syscall 0x04"); - - int i; - - #ifdef LOAD_FROM_VTS_02_0_IFO - // point to VTS_02_0.IFO - pointToIFO(2, 0, 0); - - // Force a read from VTS_02_0.IFO - char head[64]; - getDiscData(64, &head); - - #define RELATIVE_SECTOR 0 - #else - #define RELATIVE_SECTOR LOAD_FROM_SECTOR_RELATIVE_TO_VIDEO_TS_IFO - #endif - - // Based on https://github.com/AKuHAK/uLaunchELF/blob/master/loader/loader.c - elf_header_t eh; - readData(&eh, RELATIVE_SECTOR * 0x800, sizeof(elf_header_t)); - - elf_pheader_t eph[eh.phnum]; - readData(&eph, RELATIVE_SECTOR * 0x800 + eh.phoff, sizeof(elf_pheader_t) * eh.phnum); - - for (i = 0; i < eh.phnum; i++) { - if (eph[i].type != ELF_PT_LOAD) - continue; - - readData(eph[i].vaddr, RELATIVE_SECTOR * 0x800 + eph[i].offset, eph[i].filesz); - if(eph[i].memsz > eph[i].filesz) memset(eph[i].vaddr + eph[i].filesz, 0, eph[i].memsz - eph[i].filesz); - } - - asm volatile("la $v1, 0x64; la $a0, 0; syscall 0x64"); // FlushCache data writeback - asm volatile("la $v1, 0x64; la $a0, 2; syscall 0x64"); // FlushCache instruction invalidate - - //while(!SifIopReset("", 0)); - //while(!SifIopSync()); - - //while(!SifIopReset("rom0:UDNL rom0:EELOADCNF", 0)); - SifIopReset("rom0:UDNL rom0:EELOADCNF", 0); - while(!SifIopSync()); - - SifInitRpc(0); - SifExitRpc(); - - ExecPS2((void *)eh.entry, 0, 0, 0); -} diff --git a/3.11EU/payload.elf b/3.11EU/payload.elf deleted file mode 100644 index 2461cb6bfc4d3bc9a35ab832f9e8210ea3285e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5382 zcmeHLO>9(E6h8A_f2L6JQLBLvLc;U=-hH<-9nk2)ghfyK-Z|er z=iGDdx#!*Yrl))Qdjo-hXfh-yM3?Wmfp+kDOC%8g)NU6W;}KaWYdyVZzvKo4*Oj#* zylOcJ`&C-4z-k3nE3jID)e5Xu;PI|Nt(f5(c;N@-mdQ+=cuwl@)^|EYLe}RJvTLF3 zo(stBaI5t*EY9Tbx$#EY(#NqRP^;}Xe28xYZI{X4UtyP%{GV4_784u0u69eLB4 z%S$}?wJX7b>*RCd)(*CbQPmj>euWQ$@b;MJCL zf7WQe!IB?cu|nsXj7ptj=kU2@ghP>n*=!9;>xP4}#u_%bM#gi_#pODDxklT)+Tz4S zzL#sRAywgd`Nnl3A_YN>mhxs^3hwjBJ@S#towdO%VUAt;*dL3`n{ioeX_uPtCe9E4 zG5PM|oAT}X`1%@Y{^c{1u|1ugH^*e*;u_SA>u_>;^oKbc5F@-%hOB_>*h2j_tI1$L z*kWx-qn89R>oDi;fTNPPHLg&70=;>E(v<5f~UYe~&4^9f27 zWOKGrjM?T`x3pSAQiMI{rEWcJLiQQ?0rg^DoICf4ziwN_w$GPhv6hEr@jUxn{8})F z>B;ff?n8-ze%q6Jdir1MN^}qOQukQVp6>45c4W`Mp{@4LXj^nAl6zoozEzoH{*)MX zQ63sFbN(+rW3cD%66Lcww*&!jnT`hKp*WYZm^xS}A9KFa=N5F& zRjh~WC+(XT{6YfVbpyRvBxSC(54Wc%b3CSG*0&GxCh!Eu2bGMLmOjW$;A0pcm{M{l zg7iUd#W;VT_0B0d&2h*&hd$^@-hmFznvuNUXW(2L$;*?%RO;l|WGWpUmYx%t;lYD# zGM*V9o;sN%pUGrpI+IE#QrVOwXR@j3EL@`5%!#Z-M<+&c9|4nSng-G7NyTS;HZ(IM zQQndx-bnJ;lq3^J2D)C|+nwy+JFpK5Z!Ul8WD>@{>_^v0B{OP<%tRVaoKvTXgit5F z{x+@&#J+x*R5kS4wa-dBzeg}<0-MiHsDVNKeK&CScZE5(hyPHx0k}ZDZ@&T90$%)0 z>1|)1@No<9725mQ@$sVX&oywq_k8>!FrVeFJ8Hg{fJqwfBS5}gp1sHcK;0wE{|GSS zDSMF&u>LdL!-O+{QO(uGseB?Vp84u_0@Mn@3x5ryZx@J{5FBd0M5T_yR89&eC>z4(heM%a<{q#k%wV zDdogDNS(Oo!?^!s*9E=yf$05zhCQlD>t4YCYJyWm(GA39?`mRQXnPPBo}6X7pI|qo ziw2#xd&9Q}^XPT2pEN4vv>roch8`F#0C zkr9k(((BcD1!q5iOg}20TZL6*?wi6YLJ6w^a37Rjoh>EobsJS4nad}z#(MWP)+e*Z zYn0&M&C-eOjhGcDoQbM15xz6{t}uW&gU%P