ivg on master
adds a missing module to the OA… (compare)
ivg on master
loads packages before plugins t… (compare)
ivg on master
allows to use bap instead of ba… (compare)
ivg on master
fixes installation from opam (#… (compare)
ivg on master
improves bap-configurator key h… (compare)
because in this case we did not now at initially to increase.. so there is no cutoff and timeout that fits all binaries right?
The bigger the better. The more cutoff the more time you will spend on the same branch (but you will progress forward slower), the more timeout the more complex formulas you will be able to solve, but you will again progress slower. So if you have an infinite amount of time you can put both to infinity.
(executor-debug "46: Forked a new machine")
(executor-debug "46: SAT")
(executor-debug "46: &-desc = #xffffffffffffffff")
(executor-debug "46: *-desc = #xffffffffffffffff")
(executor-debug "46: \\\b-desc = #xffffffffffffffff")
(executor-debug "46: \\\
\n-desc = #xffffffffffffffff")
(executor-debug "46: \\\014-desc = #xffffffffffffffff")
(executor-debug "46: \\ -desc = #xffffffffffffffff")
(executor-debug "46: \\\127ELF\\\002\\\001\\\001-desc = #x0000000000000003")
(executor-debug "46: \\\127ELF\\\002\\\001\\\001-size = #x0000000000000000")
(executor-debug "46: \\\135-desc = #xffffffffffffffff")
(executor-debug "46: \\\136-desc = #xffffffffffffffff")
(executor-debug "46: \\\137-desc = #xffffffffffffffff")
(executor-debug "46: \\\148-desc = #xffffffffffffffff")
(executor-debug "46: \\\149-desc = #xffffffffffffffff")
(executor-debug "46: \\\152-desc = #xffffffffffffffff")
(executor-debug "46: \\\161-desc = #xffffffffffffffff")
(executor-debug "46: \\\167-desc = #xffffffffffffffff")
(executor-debug "46: \\\173-desc = #xffffffffffffffff")
(executor-debug "46: \\\177-desc = #xffffffffffffffff")
(executor-debug "46: \\\184-desc = #xffffffffffffffff")
(executor-debug "46: \\\185-desc = #xffffffffffffffff")
(executor-debug "46: \\\188-desc = #xffffffffffffffff")
(executor-debug "46: \\\197-desc = #xffffffffffffffff")
(executor-debug "46: \\\226-desc = #xffffffffffffffff")
(executor-debug "46: \\\231-desc = #xffffffffffffffff")
(executor-debug "46: \\\236-desc = #xffffffffffffffff")
(executor-debug "46: \\\237-desc = #xffffffffffffffff")
(executor-debug "46: \\\239-desc = #xffffffffffffffff")
(executor-debug "46: \\\240-desc = #xffffffffffffffff")
(executor-debug "46: \\\243-desc = #xffffffffffffffff")
(executor-debug "46: ]-desc = #xffffffffffffffff")
(executor-debug "46: _-desc = #xffffffffffffffff")
(executor-debug "46: _8-desc = #xffffffffffffffff")
(executor-debug "46: A-desc = #xffffffffffffffff")
(executor-debug "46: E-desc = #xffffffffffffffff")
(executor-debug "46: f-desc = #xffffffffffffffff")
(executor-debug "46: M-desc = #xffffffffffffffff")
(executor-debug "46: S-desc = #xffffffffffffffff")
(executor-debug "46: t-desc = #xffffffffffffffff")
(executor-debug "46: u-desc = #xffffffffffffffff")
(executor-debug "46: Z-desc = #xffffffffffffffff")
(executor-debug "46: mem[0x40C9] = #x01")
(executor-debug "46: mem[0x40CA] = #x01")
(executor-debug "46: mem[0x40CB] = #x01")
(executor-debug "46: mem[0x40CC] = #x01")
(executor-debug "46: mem[0x40CD] = #x01")
(executor-debug "46: mem[0x40CE] = #x01")
Yesterday it was:
for (i = 0; i < 40 && *str; ++str, ++i){
gen_hash = (*str) + (gen_hash << 6) + (gen_hash << 16) - gen_hash;
}
Now it is:
for (i = 0; i < len && *str; ++str, ++i){
gen_hash = (*str) + (gen_hash << 6) + (gen_hash << 16) - gen_hash;
}
The len variable is determined when a file is opened based upon what contents that file has
Possibly I am rusty after some time of having not read those papers. I didn't know you weren't at CMU anymore.
I am familiar with your paper and tagless final style and the Theory documentation. I suppose I haven't exercised Theory as much as I have a lot of the rest of the BAP API. So, although I see it, I don't see it in use. Let's say you were familiar with a particular car part. Well, in that case, you could know what could be done with it from what it's functionality is. Theory seems really general with many use cases, so it's not quite like a specific car part. I just wasn't sure what your exact use case was.
getline(buf,len,stdin)
getline(buf,len,stdin)
to the program.
Hi, I've been using BAP to analyse Windows binaries as follows:
bap ./binary.dll -dbir --optimization-level=3
After upgrading to BAP 2.5.0 yesterday (late to the game I know) I get the following error:
Failed to build the project: attribute "llvm:symbol-entry" didn't provide a
value for the field "value"
This is definitely new :(
For reference this is the output of file binary.dll
binary.dll: PE32+ executable (DLL) (GUI) x86-64, for MS Windows
getline
maybe there is no API and stub for it: https://github.com/BinaryAnalysisPlatform/bap/blob/master/plugins/api/api/c/posix.h
~/.opam/<my-switch>/share/bap/api/c/
getline
using Primus Lisp
--primus-print-observations=linker-unresolved
and see if it does that when it tries to call getline
Yes, everything is working. The SE gives me multiple solutions. The solutions do make the program branch the if-statement and output "access granted". The only question left is why the SE is not functioning properly (starting, fork one and quit) when I add the line
getline(buf,len,stdin)
to the program.
Probably because it covered everything. If you didn't have a branch then what do you expect? SE will not just reran randomly if there is no control-flow dependency on the symbolic input. Also, don't forget that SE will search not only for the bug that you want it to search, but for any other bug in your code. So make sure that you check the return codes of all functions.
getline
is not supported
Hi, I've been using BAP to analyse Windows binaries as follows:
bap ./binary.dll -dbir --optimization-level=3
After upgrading to BAP 2.5.0 yesterday (late to the game I know) I get the following error:
Failed to build the project: attribute "llvm:symbol-entry" didn't provide a
value for the field "value"This is definitely new :(
For reference this is the output of
file binary.dll
binary.dll: PE32+ executable (DLL) (GUI) x86-64, for MS Windows
I'm not sure how I managed to do this in the past as it fails with the same error in all the previous versions (2.2., 2.3., 2.4.*). I guess it has something to do with the llvm version?
@matt.griffin_gitlab, can you clean the caches (bap --cache-clean) and try again. Most likely it won't help, but just to be sure. If it will not help, then please create an issue and don't forget to inlude bap --llvm-version
output. It would be nice, if you will attach the binary for reproduction. If it is not possible, then attach the output of bap specification binary.dll
(you may redact sensitive data, if you need).
As a workaround, you can experiment with llvm versions. As a hacky workaround, you can remove llvm:symbol-entries
, e.g.,
bap specification binary.dll | grep -v llvm:symbol-entry > binary.ogre
bap ./binary.dll --loader=./binary.ogre
though it may result in an incomplete disassembly. A more sophisticated workaround with some sed magic, is to add a dummy 0 value for each llvm:symbol-entry.
bap --llvm-version
on your machine and in the docker container?