# Need for Speed: Shift # script for QuickBMS http://aluigi.org/papers.htm#quickbms comtype XMemDecompress idstring " KAP" get DUMMY long get FILES long goto 0x118 get X118 long goto 0x120 get X120 long math X120 -= 0x308 goto 0x12d get X12d byte if X12d == 1 print "X12d equal to %X12d% has not been tested, contact me" cleanexit endif callfunction X12dset log MEMORY_FILE 0x130 X118 callfunction X12dset set X120OFFSET long 0x438 math X120OFFSET += X118 log MEMORY_FILE2 X120OFFSET X120 for i = 0 < FILES encryption "" "" # reset here instead to do it after each *log get DUMMY long MEMORY_FILE get DUMMY long MEMORY_FILE get OFFSET long MEMORY_FILE get DUMMY long MEMORY_FILE get ZSIZE long MEMORY_FILE get SIZE long MEMORY_FILE get DUMMY long MEMORY_FILE get DUMMY long MEMORY_FILE get TYPE byte MEMORY_FILE get DUMMY byte MEMORY_FILE get CRC long MEMORY_FILE get FILEEXT long MEMORY_FILE get NAMEOFF long MEMORY_FILE2 get DUMMY long MEMORY_FILE2 get DUMMY long MEMORY_FILE2 get DUMMY long MEMORY_FILE2 savepos TMP MEMORY_FILE2 math NAMEOFF -= X120OFFSET goto NAMEOFF MEMORY_FILE2 get NAMESZ byte MEMORY_FILE2 getdstring NAME NAMESZ MEMORY_FILE2 goto TMP MEMORY_FILE2 callfunction X12dset if TYPE == 0 log NAME OFFSET SIZE else if TYPE == 2 clog NAME OFFSET ZSIZE SIZE else print "TYPE equal to %TYPE% has not been tested, contact me" cleanexit endif next i startfunction X12dset if X12d == 1 # ignored at the moment math TMPSZ += 0xf math TMPSZ &= 0xfffffff0 endif if X12d == 2 encryption rc4 "@lLy0urRaC3ar3bE" endif endfunction