From d96ae1a284bd65fb855b0aedcbc9fbdf5c98d7c1 Mon Sep 17 00:00:00 2001 From: sad-dev <55233728+sad-dev@users.noreply.github.com> Date: Tue, 12 Mar 2024 10:58:37 +0800 Subject: [PATCH 1/4] Fix VarnodeBank.locRange(AddressSpace) not returning negative addresses --- .../src/main/java/ghidra/program/model/pcode/VarnodeBank.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java index de0d875c8a..5085b16618 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java @@ -210,7 +210,7 @@ public class VarnodeBank { } public Iterator locRange(AddressSpace spaceid) { - VarnodeAST searchvn1 = new VarnodeAST(spaceid.getAddress(0),0,0); + VarnodeAST searchvn1 = new VarnodeAST(spaceid.getMinAddress(),0,0); searchvn1.setInput(true); VarnodeAST searchvn2 = new VarnodeAST(spaceid.getMaxAddress(), Integer.MAX_VALUE, 0); return locTree.subSet(searchvn1, searchvn2).iterator(); From 1f06e090d2fd99e2f4acd487a069cdbe36dcc6ec Mon Sep 17 00:00:00 2001 From: sad-dev <55233728+sad-dev@users.noreply.github.com> Date: Tue, 12 Mar 2024 11:02:57 +0800 Subject: [PATCH 2/4] Add helper method PcodeSyntaxTree.locRange(Address min, Address max) --- .../ghidra/program/model/pcode/PcodeSyntaxTree.java | 10 ++++++++++ .../java/ghidra/program/model/pcode/VarnodeBank.java | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java index 6a362e5ca4..f51e078e51 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java @@ -173,6 +173,16 @@ public class PcodeSyntaxTree implements PcodeFactory { return vbank.locRange(addr); } + /** + * return all Varnodes that start at a given Address + * @param min -- Minimum Address of Varnodes + * @param max -- Maximum Address of Varnodes + * @return -- Iterator to Varnodes + */ + public Iterator getVarnodes(Address min, Address max) { + return vbank.locRange(min, max); + } + /** * return all Varnodes of a given size that start at a given Address * @param sz -- Size of Varnodes diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java index 5085b16618..ec520160be 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java @@ -223,6 +223,13 @@ public class VarnodeBank { searchvn2.setInput(true); return locTree.subSet(searchvn1,searchvn2).iterator(); } + + public Iterator locRange(Address min, Address max) { + VarnodeAST searchvn1 = new VarnodeAST(min,0,0); + searchvn1.setInput(true); + VarnodeAST searchvn2 = new VarnodeAST(max, Integer.MAX_VALUE,0); + return locTree.subSet(searchvn1,searchvn2).iterator(); + } public Iterator locRange(int sz,Address addr) { VarnodeAST searchvn1 = new VarnodeAST(addr,sz,0); From 08b54178a0eb45e22e43471395a330ee87d8a176 Mon Sep 17 00:00:00 2001 From: sad-dev <55233728+sad-dev@users.noreply.github.com> Date: Tue, 12 Mar 2024 11:15:40 +0800 Subject: [PATCH 3/4] Edit copy pasted function description --- .../main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java index f51e078e51..0f3066c147 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java @@ -174,7 +174,7 @@ public class PcodeSyntaxTree implements PcodeFactory { } /** - * return all Varnodes that start at a given Address + * return all Varnodes bounded between two Addresses * @param min -- Minimum Address of Varnodes * @param max -- Maximum Address of Varnodes * @return -- Iterator to Varnodes From d29f0c748eb06d765f040a28fa730c32f7c60fc3 Mon Sep 17 00:00:00 2001 From: James <49045138+ghidracadabra@users.noreply.github.com> Date: Tue, 19 Nov 2024 19:52:03 +0000 Subject: [PATCH 4/4] GP-5144 pr 6307 --- .../main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java | 4 ++-- .../src/main/java/ghidra/program/model/pcode/VarnodeBank.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java index 0f3066c147..7ced5d8eeb 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeSyntaxTree.java @@ -4,9 +4,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java index ec520160be..de34b7e1fd 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/VarnodeBank.java @@ -4,9 +4,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.