diff options
| -rw-r--r-- | content/files/girlfriend-of-steel-re/000-weeb-header.jpg | bin | 0 -> 1084194 bytes | |||
| -rw-r--r-- | content/files/girlfriend-of-steel-re/001-scylla.png | bin | 601912 -> 595758 bytes | |||
| -rw-r--r-- | content/files/girlfriend-of-steel-re/002-ghidra.png | bin | 214749 -> 321993 bytes | |||
| -rw-r--r-- | content/posts/girlfriend-of-steel-re.md | 10 | ||||
| -rw-r--r-- | hugo.toml | 3 | ||||
| -rw-r--r-- | static/css/syntax.css | 78 | ||||
| -rw-r--r-- | themes/hugo-xmin/layouts/partials/header.html | 1 |
7 files changed, 88 insertions, 4 deletions
diff --git a/content/files/girlfriend-of-steel-re/000-weeb-header.jpg b/content/files/girlfriend-of-steel-re/000-weeb-header.jpg Binary files differnew file mode 100644 index 0000000..8c7b8dd --- /dev/null +++ b/content/files/girlfriend-of-steel-re/000-weeb-header.jpg diff --git a/content/files/girlfriend-of-steel-re/001-scylla.png b/content/files/girlfriend-of-steel-re/001-scylla.png Binary files differindex cb11767..a5ded5f 100644 --- a/content/files/girlfriend-of-steel-re/001-scylla.png +++ b/content/files/girlfriend-of-steel-re/001-scylla.png diff --git a/content/files/girlfriend-of-steel-re/002-ghidra.png b/content/files/girlfriend-of-steel-re/002-ghidra.png Binary files differindex 581f0ba..706f6ac 100644 --- a/content/files/girlfriend-of-steel-re/002-ghidra.png +++ b/content/files/girlfriend-of-steel-re/002-ghidra.png diff --git a/content/posts/girlfriend-of-steel-re.md b/content/posts/girlfriend-of-steel-re.md index f02b56d..35db72b 100644 --- a/content/posts/girlfriend-of-steel-re.md +++ b/content/posts/girlfriend-of-steel-re.md @@ -4,6 +4,8 @@ date = 2026-04-22T20:30:53-05:00 draft = true +++ + + Last year, I started reverse enginering _Neon Genesis Evangelion: Girlfriend of Steel_ with the intention of writing a replacement engine that runs on modern computers. I ended up losing interest, but not before cracking a few of the game data formats. I'm going to document them here, that way anyone who takes a similar interest in restoration or modding can have a head start. @@ -36,14 +38,16 @@ MD5: `536adbefc80a84378b65224fddf122e7` SHA-1: `77a03fb1823cb96189ac50b9afece893 ## Getting around DRM -Special edition is secured with SecuROM. It's completely busted, so you'll need to run the game in a Windows XP VM with 3D accleration. I used VMWare. +Special edition is secured with [SafeDisc](https://en.wikipedia.org/wiki/SafeDisc). It's completely broken on modern Windows, so you'll need to use a virtual machine to run the game. +I had good success with Windows XP in VMWare with 3D acceleration enabled. -Once the game is running in the VM (lots of fiddling, unfortunately) the executable can be dumped with Scylla x86. +Once the game is running in the VM (lots of fiddling, unfortunately) the executable can be dumped with [Scylla x86](https://x64dbg.com/). To save you the headache, here's the dump: [mana01_dump.tar.gz](/files/girlfriend-of-steel-re/mana01_dump.tar.gz)  -Once dumped, throw it in your favorite reverse engineering tool. Here's a function that does something with script parsing: +Although it doesn't run, the dump is a correct PE file. +Ghidra is able to create proper data and code cross-references. Here's a function that parses script keywords:  @@ -8,4 +8,5 @@ theme = 'hugo-xmin' [markup.highlight] style = "github" - noClasses = false
\ No newline at end of file + noClasses = false + codeFences = true
\ No newline at end of file diff --git a/static/css/syntax.css b/static/css/syntax.css new file mode 100644 index 0000000..6e26ed4 --- /dev/null +++ b/static/css/syntax.css @@ -0,0 +1,78 @@ +/* Generated using: hugo gen chromastyles --style=github */ + +/* Background */ .bg { background-color:#f7f7f7; } +/* PreWrapper */ .chroma { background-color:#f7f7f7;-webkit-text-size-adjust:none; } +/* Error */ .chroma .err { color:#f6f8fa;background-color:#82071e } +/* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit } +/* LineTableTD */ .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; } +/* LineTable */ .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; } +/* LineHighlight */ .chroma .hl { background-color:#dedede } +/* LineNumbersTable */ .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } +/* LineNumbers */ .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } +/* Line */ .chroma .line { display:flex; } +/* Keyword */ .chroma .k { color:#cf222e } +/* KeywordConstant */ .chroma .kc { color:#cf222e } +/* KeywordDeclaration */ .chroma .kd { color:#cf222e } +/* KeywordNamespace */ .chroma .kn { color:#cf222e } +/* KeywordPseudo */ .chroma .kp { color:#cf222e } +/* KeywordReserved */ .chroma .kr { color:#cf222e } +/* KeywordType */ .chroma .kt { color:#cf222e } +/* NameAttribute */ .chroma .na { color:#1f2328 } +/* NameClass */ .chroma .nc { color:#1f2328 } +/* NameConstant */ .chroma .no { color:#0550ae } +/* NameDecorator */ .chroma .nd { color:#0550ae } +/* NameEntity */ .chroma .ni { color:#6639ba } +/* NameLabel */ .chroma .nl { color:#900;font-weight:bold } +/* NameNamespace */ .chroma .nn { color:#24292e } +/* NameOther */ .chroma .nx { color:#1f2328 } +/* NameTag */ .chroma .nt { color:#0550ae } +/* NameBuiltin */ .chroma .nb { color:#6639ba } +/* NameBuiltinPseudo */ .chroma .bp { color:#6a737d } +/* NameVariable */ .chroma .nv { color:#953800 } +/* NameVariableClass */ .chroma .vc { color:#953800 } +/* NameVariableGlobal */ .chroma .vg { color:#953800 } +/* NameVariableInstance */ .chroma .vi { color:#953800 } +/* NameVariableMagic */ .chroma .vm { color:#953800 } +/* NameFunction */ .chroma .nf { color:#6639ba } +/* NameFunctionMagic */ .chroma .fm { color:#6639ba } +/* LiteralString */ .chroma .s { color:#0a3069 } +/* LiteralStringAffix */ .chroma .sa { color:#0a3069 } +/* LiteralStringBacktick */ .chroma .sb { color:#0a3069 } +/* LiteralStringChar */ .chroma .sc { color:#0a3069 } +/* LiteralStringDelimiter */ .chroma .dl { color:#0a3069 } +/* LiteralStringDoc */ .chroma .sd { color:#0a3069 } +/* LiteralStringDouble */ .chroma .s2 { color:#0a3069 } +/* LiteralStringEscape */ .chroma .se { color:#0a3069 } +/* LiteralStringHeredoc */ .chroma .sh { color:#0a3069 } +/* LiteralStringInterpol */ .chroma .si { color:#0a3069 } +/* LiteralStringOther */ .chroma .sx { color:#0a3069 } +/* LiteralStringRegex */ .chroma .sr { color:#0a3069 } +/* LiteralStringSingle */ .chroma .s1 { color:#0a3069 } +/* LiteralStringSymbol */ .chroma .ss { color:#032f62 } +/* LiteralNumber */ .chroma .m { color:#0550ae } +/* LiteralNumberBin */ .chroma .mb { color:#0550ae } +/* LiteralNumberFloat */ .chroma .mf { color:#0550ae } +/* LiteralNumberHex */ .chroma .mh { color:#0550ae } +/* LiteralNumberInteger */ .chroma .mi { color:#0550ae } +/* LiteralNumberIntegerLong */ .chroma .il { color:#0550ae } +/* LiteralNumberOct */ .chroma .mo { color:#0550ae } +/* Operator */ .chroma .o { color:#0550ae } +/* OperatorWord */ .chroma .ow { color:#0550ae } +/* Punctuation */ .chroma .p { color:#1f2328 } +/* Comment */ .chroma .c { color:#57606a } +/* CommentHashbang */ .chroma .ch { color:#57606a } +/* CommentMultiline */ .chroma .cm { color:#57606a } +/* CommentSingle */ .chroma .c1 { color:#57606a } +/* CommentSpecial */ .chroma .cs { color:#57606a } +/* CommentPreproc */ .chroma .cp { color:#57606a } +/* CommentPreprocFile */ .chroma .cpf { color:#57606a } +/* GenericDeleted */ .chroma .gd { color:#82071e;background-color:#ffebe9 } +/* GenericEmph */ .chroma .ge { color:#1f2328 } +/* GenericInserted */ .chroma .gi { color:#116329;background-color:#dafbe1 } +/* GenericOutput */ .chroma .go { color:#1f2328 } +/* GenericUnderline */ .chroma .gl { text-decoration:underline } +/* TextWhitespace */ .chroma .w { color:#fff } + +/* Override background and border to match site theme */ +.chroma { background-color: #f0ede7 !important; } +.highlight { border: 1px solid #555; } diff --git a/themes/hugo-xmin/layouts/partials/header.html b/themes/hugo-xmin/layouts/partials/header.html index 970ccec..c7ab268 100644 --- a/themes/hugo-xmin/layouts/partials/header.html +++ b/themes/hugo-xmin/layouts/partials/header.html @@ -6,6 +6,7 @@ <title>{{ .Title }} | {{ .Site.Title }}</title> <link rel="stylesheet" href="{{ "css/style.css" | relURL }}" /> <link rel="stylesheet" href="{{ "css/fonts.css" | relURL }}" /> + <link rel="stylesheet" href="{{ "css/syntax.css" | relURL }}" /> </head> <body> |