Cleanup & WIP tooling
This commit is contained in:
93
java/ghidra/Test.java
Normal file
93
java/ghidra/Test.java
Normal file
@@ -0,0 +1,93 @@
|
||||
// @category _Reman3
|
||||
// @menupath Reman3.Test
|
||||
|
||||
import ghidra.app.script.GhidraScript;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.data.DataType;
|
||||
import ghidra.program.model.data.StandAloneDataTypeManager;
|
||||
import re3lib.RecompileConfig;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
// SQLite imports
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
|
||||
public class Test extends GhidraScript {
|
||||
// Will rebuild all functions
|
||||
public boolean rebuildAllGlobals = true;
|
||||
FunctionDatabase functionDB;
|
||||
|
||||
@Override
|
||||
public void run() throws Exception {
|
||||
RecompileConfig.INSTANCE = new RecompileConfig(this);
|
||||
|
||||
// Example SQLite usage
|
||||
testSQLite();
|
||||
}
|
||||
|
||||
private void testSQLite() throws Exception {
|
||||
String dbPath = "jdbc:sqlite:" + RecompileConfig.INSTANCE.outputDir + "/functions.db";
|
||||
|
||||
try (Connection conn = DriverManager.getConnection(dbPath)) {
|
||||
println("Connected to SQLite database: " + dbPath);
|
||||
|
||||
// Create a simple table
|
||||
try (Statement stmt = conn.createStatement()) {
|
||||
stmt.execute("CREATE TABLE IF NOT EXISTS functions (" +
|
||||
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
||||
"address TEXT NOT NULL, " +
|
||||
"name TEXT NOT NULL, " +
|
||||
"file_path TEXT)");
|
||||
println("Functions table created/verified");
|
||||
}
|
||||
|
||||
// Insert example data
|
||||
String insertSQL = "INSERT INTO functions (address, name, file_path) VALUES (?, ?, ?)";
|
||||
try (PreparedStatement pstmt = conn.prepareStatement(insertSQL)) {
|
||||
pstmt.setString(1, "0x00401000");
|
||||
pstmt.setString(2, "main");
|
||||
pstmt.setString(3, "/path/to/main.cxx");
|
||||
pstmt.executeUpdate();
|
||||
println("Inserted example function");
|
||||
}
|
||||
|
||||
// Query data
|
||||
try (Statement stmt = conn.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM functions")) {
|
||||
while (rs.next()) {
|
||||
println("Function: " + rs.getString("name") +
|
||||
" at " + rs.getString("address") +
|
||||
" in " + rs.getString("file_path"));
|
||||
}
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
println("SQLite error: " + e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void scanDirectory(File directory, FunctionDatabase.Type type) throws Exception {
|
||||
File[] files = directory.listFiles((dir, name) -> name.endsWith(".cxx"));
|
||||
if (files == null)
|
||||
return;
|
||||
|
||||
for (File file : files) {
|
||||
scanFile(file, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
java/ghidra/sqlite-jdbc-3.49.1.0.jar
Normal file
BIN
java/ghidra/sqlite-jdbc-3.49.1.0.jar
Normal file
Binary file not shown.
Reference in New Issue
Block a user