Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disassembly improvements #17

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/main/java/kaiju/tools/disasm/DisasmStrategy.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<AddressRange, Integer> makeAlignment(Listing listing, final Address address, TaskMonitor monitor) {
default Pair<AddressRange, Integer> 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<AddressRange, Integer>(range, 1);
} catch (final CodeUnitInsertionException e) {
Expand Down Expand Up @@ -150,7 +150,7 @@ default Pair<AddressRange, Integer> 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<AddressRange, Integer>(range, 1);
} catch (final CodeUnitInsertionException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,13 @@ public Pair<AddressRange, Integer> 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);
Expand Down
Loading