| Age | Commit message (Collapse) | Author |
|
than the item limit but still not a complete list. Add the + indicator on the other categories if this condition is detected.
|
|
|
|
|
|
|
|
- Fix project file filter not blacklisting warp files
- Fix project name not being used for default file save name
- Prevent adding the same file to the available sources
|
|
This previously was not allowed as the information would sometimes include a zero based segment, however this is still preferable in the case of firmware, where sections will not be available by default. This improves the usability of WARP with firmware by removing the requirement of filling section information prior to function analysis.
|
|
This is going to be disabled by default on this upcoming stable, however users may enable it once we deploy the public server. The data from the server is done through `Container::fetch_functions` independent of the nonblocking function lookup functions.
The sidebar has been updated to drive fetching so that when users navigate to a new function the fetcher will kick off. This fetcher operates on a separate thread, in the event of a user navigating to many functions before the current fetch has completed they all will be batched together in a single fetch.
Networked container currently is limited to just function prototypes, other type information separate from the function object will be omitted.
|
|
|
|
Previously we only really had a way to access the platform system call information, this was missing the system call information found in type libraries
Fixes https://github.com/Vector35/binaryninja-api/issues/7089
|
|
|
|
|
|
|
|
|
|
|
|
Was previously not exposed, we want it for unit tests.
|
|
With the new instruction retrieval we are getting the instructions at the end of the lifted function which are not really apart of the function, but they share the address of the last ret/jump.
|
|
This caused project commands to throw when there valid callback was called outside the context of a project
|
|
|
|
The python API was kept the same seeing as we are close to the release, will likely start deprecating some of those API's soon.
|
|
update plugin documentation now that binexport is shipped
add binexport documentation
|
|
|
|
|
|
|
|
pluginManager.debug
|
|
This reverts commit 5bafe5c7bdb0b56037a0b5c573236f9c6367353a.
|
|
|
|
|
|
analysis.objectiveC.resolveDynamicDispatch is enabled
|
|
Rather than introducing duplicate definitions of these types, use a
NamedTypeReference that will be resolved to the type from the libobjc
type library when it is loaded.
This prevents these types from showing up as id_1 / SEL_1 in some places
rather than as their expected names.
|
|
|
|
objc_msgSend stub
|
|
The `__objc_ivar` section contains [values of type `long` for all
architectures except arm64, where it contains `int`][1].
This fixes problems with resolving non-fragile ivar accesses to struct
field accesses on arm64 and 32-bit architectures.
[1]: https://github.com/llvm/llvm-project/blob/535d6917ec3308ade866f205644b740666312342/clang/lib/CodeGen/CGObjCMac.cpp#L5628-L5629
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`UpdateInfoFetcher` performs fetches asynchronously and needs to ensure
it remains alive for the duration of the fetch. The fetch may not
complete before its creator is destroyed, so `UpdateInfoFetcher` needs
to control its own lifetime via `std::enable_shared_from_this`.
|
|
|
|
Avoid copying the vector of symbols where possible. When no filter
string is applied we no longer copy the entire vector symbols by having
the symbols used for display be indirected via a pointer. It points
either to the unfiltered symbols or the filtered symbols.
Some unncessary copies have been removed by using `std::move` where
appropriate.
Filtering has been updated to avoid `std::vector::reserve` /
`std::vector::shrink_to_fit` in favor of letting the filtered vector
control its own growth and reuse its buffer. This avoids allocating a
~100MB buffer every time we update the filter only to later reallocate
and move the contents into a smaller buffer. Instead the buffer grows
via `std::vector`'s usual growth algorithm and it is preserved across
filter calls to avoid unnecessarily reallocating it, and only shrink the
buffer if it has shrunk significantly vs previous iterations.
|
|
We're copying `std::string` objects that know their length. There's no
reason to force a call to `strlen`.
|
|
`GetRegionAt` was really providing the semantics of
`GetRegionContaining` due to `m_regions` being an `AddressRangeMap` and
using transparent comparators to allow `find` to work with any address
in the range.
`GetRegionAt` is updated to verify that the start address of the region
that was found matches the requested address. `GetRegionContaining` is
updated to use `AddressRangeMap::find` rather than doing a linear search
over all regions.
|
|
The `ExportsTreeView` now asks the model to pause / resume updates when
its visibility changes. When paused, all notifications from the view are
ignored. When resumed, notifications set a flag to indicate that an
update is needed and resume the update timer if it is not already
active. The timer is stopped after an update is processed.
There's some extra complexity here to avoid emitting a signal for every
`BinaryView` notification that is processed. These notifications are
typically generated on background threads. The overhead of emitting a
signal and it being routed to the main thread adds up given the number
of notifications involved when loading a large binary.
|
|
|
|
|
|
on references
|