1. バイナリ列から表してるものを推測する
2. プログラムを静的または動的に解析して、挙動を読み取る
両方組み合わせて補完しあうのが普通
1. についてはアーカイブなら「識別子(ファイル名やそのハッシュ等)」、「開始位置」、「ファイルサイズ」の配列があるだろう、といったことから
「ここは16バイト単位で続いてるっぽいな、先頭4バイトは単調増加してるから開始位置を表していそうだな」みたいな推測を立てられる
立てられないこともある
2. については特に暗号化方式の解析に必要になることが多い
エロゲなら大体32ビットのネイティブコードなのでx86の命令(アセンブリ)の知識が必要になる
またC++で書かれてることが多いので、C/C++の基本的な知識と、それらがどういうふうにx86命令列にコンパイルされるか、についても把握しておくと読み解きやすくなる
(ただし、Unity製ならx86よりも.NETの知識が要求されることがある等、例外もいくつかある)
他に、解析が完了したあとそれを元に抽出プログラムを書くなら何らかのプログラミング言語を扱える必要がある
それで、この辺のスキルの身につけ方だけど
・バイナリエディタを扱えるようになる
・C/C++の基礎をできるようにする
・デバッガ(x64dbg等)の使い方を覚える
・レジスタやヒープやスタックや呼び出し規約について理解していく
といいのかなーと思ってる
時間をかけてある程度数をこなさないと難しいと思う