binaryninja: 6.0 update

This commit is contained in:
Romain Thomas
2026-08-22 10:10:32 +02:00
parent 1c02380920
commit 4c9c42c483
4 changed files with 16 additions and 21 deletions
@@ -151,7 +151,8 @@ Ref<Type> TypeBuilder::get_or_create(const std::string& name) {
#if BN_BITFIELD_SUPPORT
builder.SetPacked(true)
.AddMemberAtBitOffset(u32(), "Type", /*bitOffset=*/0, /*bitWidth=*/2)
.AddMemberAtBitOffset(u32(), "RVA", /*bitOffset=*/2, /*bitWidth=*/30);
.AddMemberAtBitOffset(u32(), "RVA", /*bitOffset=*/2, /*bitWidth=*/30)
.AddMember(u32(), "Length");
#else
builder.AddMember(u32(), "RVAType").AddMember(u32(), "Length");
#endif
@@ -219,6 +220,8 @@ Ref<Type> TypeBuilder::get_or_create(const std::string& name) {
.AddMemberAtBitOffset(u32(), "ExtendedEpilogCount", /*bitOffset=*/0,
/*bitWidth=*/16)
.AddMemberAtBitOffset(u32(), "ExtendedCodeWords", /*bitOffset=*/16,
/*bitWidth=*/8)
.AddMemberAtBitOffset(u32(), "Reserved", /*bitOffset=*/24,
/*bitWidth=*/8);
#else
builder.AddMember(u32(), "ExtendedHeaderData");
@@ -258,9 +258,9 @@ Ref<Type> LoadConfiguration::process(const LIEF::PE::CHPEMetadataARM64& arm64) {
auto S = type_builder_.get_as<Structure>(ty);
assert(S != nullptr);
uint64_t chpe_metadata_pointer =
translate_addr(*load_config_->chpe_metadata_pointer());
define_struct_at(chpe_metadata_pointer, ty, "__image_arm64ec_metadata");
if (std::optional<uint64_t> ptr = load_config_->chpe_metadata_pointer()) {
define_struct_at(translate_addr(*ptr), ty, "__image_arm64ec_metadata");
}
if (arm64.code_map() > 0) {
uint64_t code_map_addr = translate_addr(get_va(arm64.code_map()));
+1 -1
View File
@@ -32,7 +32,7 @@ int main(int argc, const char** argv) {
analyzer->run();
fs::path file_path = bv->GetFile()->GetDatabase()->GetFile()->GetFilename();
fs::path file_path = bv->GetFile()->GetFilename();
std::string filename = file_path.filename().string();
fs::path new_bndb = file_path.parent_path() / ("updated_" + filename);
@@ -6,26 +6,18 @@
#include "binaryninja/binaryninjaapi.h"
// Bitfield support has been added in BinaryNinja 5.2 (Io)
#if BN_VERSION_MAJOR >= 5 && BN_VERSION_MINOR >= 2
#define BN_BITFIELD_SUPPORT 1
#else
#define BN_BITFIELD_SUPPORT 0
#endif
#define BN_VERSION_AT_LEAST(major, minor) \
(BN_VERSION_MAJOR > (major) || \
(BN_VERSION_MAJOR == (major) && BN_VERSION_MINOR >= (minor)))
#if BN_VERSION_MAJOR >= 5 && BN_VERSION_MINOR >= 4
#define BN_FRAGMENT_TYPE_CLASS_SUPPORT 1
#else
#define BN_FRAGMENT_TYPE_CLASS_SUPPORT 0
#endif
// Bitfield support has been added in BinaryNinja 5.2 (Io)
#define BN_BITFIELD_SUPPORT BN_VERSION_AT_LEAST(5, 2)
#define BN_FRAGMENT_TYPE_CLASS_SUPPORT BN_VERSION_AT_LEAST(5, 4)
// FunctionParameter switched from a flat `Variable location` to a `ValueLocation
// location` in BinaryNinja 5.4
#if BN_VERSION_MAJOR >= 5 && BN_VERSION_MINOR >= 4
#define BN_VALUE_LOCATION_SUPPORT 1
#else
#define BN_VALUE_LOCATION_SUPPORT 0
#endif
#define BN_VALUE_LOCATION_SUPPORT BN_VERSION_AT_LEAST(5, 4)
namespace binaryninja::api_compat {