CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

Java password removal.

2023-05-02 12:33:00 | python
JAVAで書かれたexeファイルからパスワード入力を求めるソースコードを検出して削除するPythonプログラムを書いて
Javaで書かれたexeファイルからパスワード入力を求めるソースコードを検出して削除するPythonプログラムを書くには、以下の手順に従うことができます。
exeファイルをバイナリ形式で読み込む
バイナリファイルからJavaコードを抽出する
抽出されたJavaコードの中から、パスワード入力を求めるソースコードを検出する
検出されたソースコードを削除する
削除したJavaコードを再びバイナリ形式に変換する
新しいexeファイルを書き出す
以下は、この手順を実現するPythonプログラムの例です。
import os
# exeファイルのパスを指定する
exe_path = "path/to/exe/file.exe"
# exeファイルをバイナリ形式で読み込む
with open(exe_path, "rb") as f:
binary_data = f.read()
# バイナリファイルからJavaコードを抽出する
java_code = ""
start_pattern = b"Êþº¾" # Javaバイトコードのシグネチャ
end_pattern = b"" # クラスファイルの終了パターン
start_idx = binary_data.find(start_pattern)
end_idx = binary_data.find(end_pattern, start_idx)
if start_idx >= 0 and end_idx >= 0:
java_code = binary_data[start_idx:end_idx]
# 抽出されたJavaコードの中から、パスワード入力を求めるソースコードを検出する
password_pattern = b"String password = getPassword();"
if password_pattern in java_code:
# 検出されたソースコードを削除する
java_code = java_code.replace(password_pattern, b"")
# 削除したJavaコードを再びバイナリ形式に変換する
new_binary_data = binary_data[:start_idx] + java_code + binary_data[end_idx:]
# 新しいexeファイルを書き出す
new_exe_path = os.path.splitext(exe_path)[0] + "_modified.exe"
with open(new_exe_path, "wb") as f:
f.write(new_binary_data)
else:
print("パスワード入力を求めるソースコードは見つかりませんでした。")
このプログラムでは、まず指定されたexeファイルをバイナリ形式で読み込みます。次に、Javaバイトコードのシグネチャとクラスファイルの終了パターンを使ってJavaコードを抽出し、その中からパスワード入力を求めるソースコードを検出します。検出されたソースコードを削除した後、元のバイナリデータのJavaコード部分を削除されたJavaコードに置き換え、新しいバイナリデータを作成します。最後に、新しいバイナリデータを使って新しいexeファイルを書き出します。
このプログラムは、指定されたexeファイルにJavaコードが含まれていることを前提としています。また、パスワード入力を求めるソースコードが正確に「String password = getPassword();」という形式で書かれている場合にのみ検出・削除を行います。もし、パスワード入力を求める別の形式のソースコードが使われていた場合には、このプログラムでは検出できない可能性があります。
なお、このような操作は、法的な観点からも慎重に行う必要があります。もし、自分自身が作成したexeファイルのパスワード入力機能を削除する場合でも、そのexeファイルの使用許諾書などに違反する可能性があるため、事前に確認することが望ましいです。また、他人が作成したexeファイルに対してこのような操作を行う場合には、著作権やプライバシーに関する問題が発生する可能性があるため、慎重に判断する必要があります。
P.S.
j2sdk-1_4_2_10-nb-4_1-win-ml .exeファイルで試してみたら「パスワード入力を求めるソースコードは見つかりませんでした。」とのメッセージが出てエラーが出ずに動作することが確認できた。
実際のランサムウェアでは、何の言語で書かれているか分からず、しかも分かったとしても暗号化されており、もっと複雑で分かりにくい形式で書かれていると思われる。
ChatGPT good job!