Comments (6)
To implement this we need to keep in memory all the conditional jumps executed. We can keep the TritonInstruction, or only the information we need like the RIP symbolic expression ID and address when the jump is taken/not taken.
For now I keeping all the TritonInstructions in a map:
std::map<triton::__uint, std::list<triton::arch::Instruction *>> instructions_executed_map;
I think keeping all the instructions is not very memory consuming compare to keep all the symbolic expressions. And having all the instructions could be useful for other functionalities like the slicing #23, or if the user wants to know the symbolic expressions for a given address.
Other important thing is that a condition could be executed more than one time. So we need to have a list per every address.
Then we should show besides the "Negate condition" menu a submenu with all the times the condition was executed, so the user could negate a condition at a given point.
For example, if we have a loop and we want the loop to be executed 10 times, we only want to negate the 10th condition.
from ponce.
We still need to deal with a same address executed multiple times.
from ponce.
When we are solving we should differenciate between solving online or offline.
Offline is when the user has execute all the program and after that is trying to invert a condition. But this condition could has been executed multiple times so we need to offer him which one he wants to negate.
Online is when the user is debugging an app and he wants to invert a condition. In that case we don't need to ask him for the condition, he want to invert the current condition at the last execution point.
from ponce.
@illera88 done right? Or there is some pending thing to do here? Maybe change the name of the negate runtime. Right now it is:
Negate condition
Negate Inject Restore
Maybe we could use:
Negate & Inject
Negate, Inject & Restore snapshot
Is it ok?
from ponce.
yes! I like the second one.
Change the name and close
from ponce.
This is still not working when the condition is in a loop.
from ponce.
Related Issues (20)
- When using Taint Engine tainted operands are not shown HOT 3
- Use vcpkg to build z3 on linux github action HOT 2
- Make sure we do not restart engines after disable Ponce HOT 1
- Provide solution for large number of solve actions
- Build link doesn't work HOT 4
- IDA 7.5 plugin for MAC doesn't work HOT 2
- Access violation exception causing crash in IDA Pro 7.5 HOT 7
- Is there a python version HOT 1
- Unable to configure solver timeout from configuration HOT 3
- IDA 7.5 plugin for Windows doesn't work HOT 1
- Triton "addCallback" API has changed HOT 3
- IDA 7.5 using Ponce v0.31 will warn "Duplicate field id 3" HOT 1
- SOFTWARE_NX_FAULT_c0000005_Ponce64.dll!Unknown HOT 1
- Crashed HOT 1
- IDA Pro crash due to invalid pointer dereference HOT 2
- Ponce v0.3.4 causing crash in IDA 7.7.220118 HOT 1
- Unsupported error for every instruction HOT 1
- Ponce standard instructions not supported windbg HOT 4
- Unhandled C++ exception: x8664Cpu::setConcreteRegisterValue() HOT 1
- Maybe it's a bug? I symbolized 15 SymVars, but in the end it could only solve 13 ones. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ponce.