From ff52f4ce01472485617074a78375964da1ae0564 Mon Sep 17 00:00:00 2001 From: "Edward J. Schwartz" Date: Thu, 14 Nov 2024 11:15:07 -0500 Subject: [PATCH 1/2] Allow makeAlignment to make larger chunks --- src/main/java/kaiju/tools/disasm/DisasmStrategy.java | 6 +++--- .../java/kaiju/tools/disasm/impl/X86ImproverStrategy.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/kaiju/tools/disasm/DisasmStrategy.java b/src/main/java/kaiju/tools/disasm/DisasmStrategy.java index 0e01008..bc164a2 100644 --- a/src/main/java/kaiju/tools/disasm/DisasmStrategy.java +++ b/src/main/java/kaiju/tools/disasm/DisasmStrategy.java @@ -66,14 +66,14 @@ public interface DisasmStrategy extends KaijuLogger { * this is a default implementation that shouldn't rely on * architecture, but can be overriden if needed for some reason. */ - default Pair makeAlignment(Listing listing, final Address address, TaskMonitor monitor) { + default Pair makeAlignment(Listing listing, final Address address, long length, TaskMonitor monitor) { DataType alignmentType = GhidraTypeUtilities.findGhidraType("Alignment"); try { - Data alignData = listing.createData(address, alignmentType); + Data alignData = listing.createData(address, alignmentType, (int) length); final Address minAddr = alignData.getMinAddress(); final Address maxAddr = alignData.getMaxAddress(); final AddressRange range = new AddressRangeImpl(minAddr, maxAddr); - debug(this, "Created alignment at: " + range); + debug(this, "Created alignment of " + range.getLength() + " bytes at: " + range); //alignmentAddresses.add(range); return new Pair(range, 1); } catch (final CodeUnitInsertionException e) { diff --git a/src/main/java/kaiju/tools/disasm/impl/X86ImproverStrategy.java b/src/main/java/kaiju/tools/disasm/impl/X86ImproverStrategy.java index c8aa572..a025691 100644 --- a/src/main/java/kaiju/tools/disasm/impl/X86ImproverStrategy.java +++ b/src/main/java/kaiju/tools/disasm/impl/X86ImproverStrategy.java @@ -90,13 +90,13 @@ public Pair analyzeGap(final AddressRange range) { switch (previousBlockType) { case CODE: if (b == 0xCC) { - return makeAlignment(listing, minAddr, monitor); + return makeAlignment(listing, minAddr, range.getLength(), monitor); } else { return makeCode(currentProgram, listing, minAddr, monitor); } case DATA: if (b == 0x00) - return makeAlignment(listing, minAddr, monitor); + return makeAlignment(listing, minAddr, range.getLength(), monitor); break; case ALIGNMENT: debug(this, "I'm a little surprised to find alignment at " + minAddr); From 7db03d87e64c166c137ae403cf62ddbbb2a6d2e9 Mon Sep 17 00:00:00 2001 From: "Edward J. Schwartz" Date: Thu, 14 Nov 2024 11:29:34 -0500 Subject: [PATCH 2/2] Spelling --- src/main/java/kaiju/tools/disasm/DisasmStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/kaiju/tools/disasm/DisasmStrategy.java b/src/main/java/kaiju/tools/disasm/DisasmStrategy.java index bc164a2..2680ab6 100644 --- a/src/main/java/kaiju/tools/disasm/DisasmStrategy.java +++ b/src/main/java/kaiju/tools/disasm/DisasmStrategy.java @@ -150,7 +150,7 @@ default Pair makeString(Program currentProgram, Listing l final Address maxAddr = stringData.getMaxAddress(); final AddressRange range = new AddressRangeImpl(minAddr, maxAddr); debug(this, "Created string at: " + range); - currentProgram.getBookmarkManager().setBookmark(address, "string", "KaijuDiasmImprovements", "created a string at this address"); + currentProgram.getBookmarkManager().setBookmark(address, "string", "KaijuDisasmImprovements", "created a string at this address"); //stringAddresses.add(range); return new Pair(range, 1); } catch (final CodeUnitInsertionException e) {