```python
>>> var_type, _ = bv.parse_type_string("""struct {
... uint32_t *blah;
... uint32_t *blah1;
... uint32_t *blah2;
... uint32_t *blah3;
... } Apple""")
>>> bv.define_user_type('Apple', var_type)
>>> x = StructuredDataView(bv, 'Apple', here)
>>> print(x)
struct Apple 0x140018b90 {
+0 uint32_t* blah = 0000000000000001
+8 uint32_t* blah1 = 0001f48800000000
+10 uint32_t* blah2 = 00018b9000018ee0
+18 uint32_t* blah3 = 0000000000000000
}
>>> StructuredDataView._members
OrderedDict([('blah', <uint32_t* blah, offset 0x0>), ('blah1', <uint32_t* blah1, offset 0x8>), ('blah2', <uint32_t* blah2, offset 0x10>), ('blah3', <uint32_t* blah3, offset 0x18>)])
```
|
|
|
revert on LinearDisassemglyLine so third-party plugins that leverage lineardisassemblylines can work again
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
opening in triage view
|
|
run from everywhere
|
|
|
|
|
|
basicblock and a typo in function.py
|
|
properties
|
|
|
|
|
|
|
|
|
|
|
|
updates if ui is missing as well
|
|
|
|
Expose the BNReplaceLowLevelILExpr core API via a new method on LowLevelILFunction, replace_expr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`BinaryView.find_next_data` wraps the call to DataBuffer with `str`. For python3 this gets passed to `DataBuffer` as a unicode string and not a byte string. `DataBuffer` does not convert str to bytes and creates a bad DataBuffer.
```python
>>> a = DataBuffer('abcd')
>>> str(a)
'abcd'
```
This PR encodes a python3 str to bytes using `charmap`. It verifies that `bytes != str` to only encode a python3 str and not a python2 str.
|