Ich beantworte mal alle deine Fragen hier in diesem Thread.
Zum entschuesseln drehst du die logik einfach um:
66 -> 40 = sl[66] = 40
40 -> 66 = sl.IndexOf['40'] = 66
Code:
s[y] := char(Table.IndexOf(IntToStr(ord(s[y]))))
Sollte so stimmen, habs nicht getestet.
Das ganze wird aber ziemlich lange dauern, weil IndexOf alle eintraege mit dem gesuchten wert vergleichem muss. Am besten erstellst du dir einen neuen Table im speicher in dem du dann einmalig alle keys eintraegst und mit diesem dann weitermachst.
Also das mit dem "Rechner abschießen" halte ich nicht fuer moeglich, tut aber auch nichts zur sache.
Ein lauffaehiges beispiel wirst du von mir nicht bekommen, sorry. SearchPattern ist eine von mir geschriebene funktion um dem speicher nach bytestrings mit wildcards zu durchsuchen.
Code:
function SearchPattern(dwStart, dwEnd: Dword; Pattern: string; Index: Integer): Dword;
Wobei "558BEC83EC48894DDC8B450C8945D88B4DD841894DD4" oppcodes fuer diesem asmcode sind:
Code:
PUSH EBP
MOV EBP,ESP
SUB ESP,48
MOV DWORD PTR SS:[EBP-24],ECX
MOV EAX,DWORD PTR SS:[EBP+C]
MOV DWORD PTR SS:[EBP-28],EAX
MOV ECX,DWORD PTR SS:[EBP-28]
INC ECX
MOV DWORD PTR SS:[EBP-2C],ECX
Das sind die ersten bytes der OnUnitSelect funktion.
Das ganze sollte dann etwa so aussehen: