mirror of
https://github.com/rizinorg/cutter.git
synced 2024-12-18 19:06:10 +00:00
Improve cmdRaw
This commit is contained in:
parent
557fb323e7
commit
2cefc7444c
@ -398,30 +398,30 @@ QString CutterCore::cmdRawAt(const char *cmd, RVA address)
|
|||||||
RVA oldOffset = getOffset();
|
RVA oldOffset = getOffset();
|
||||||
seekSilent(address);
|
seekSilent(address);
|
||||||
|
|
||||||
{
|
res = cmdRaw(cmd);
|
||||||
CORE_LOCK();
|
|
||||||
r_cons_push ();
|
|
||||||
|
|
||||||
// r_cmd_call does not return the output of the command
|
|
||||||
r_cmd_call(core->rcmd, cmd);
|
|
||||||
|
|
||||||
// we grab the output straight from r_cons
|
|
||||||
res = r_cons_get_buffer();
|
|
||||||
|
|
||||||
// cleaning up
|
|
||||||
r_cons_pop ();
|
|
||||||
r_cons_echo (NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
seekSilent(oldOffset);
|
seekSilent(oldOffset);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CutterCore::cmdRaw(const QString &str)
|
QString CutterCore::cmdRaw(const char *cmd)
|
||||||
{
|
{
|
||||||
QString cmdStr = str;
|
QString res;
|
||||||
cmdStr.replace('\"', QStringLiteral("\\\""));
|
CORE_LOCK();
|
||||||
return cmd(cmdStr.prepend('\"').append('\"'));
|
r_cons_push ();
|
||||||
|
|
||||||
|
// r_cmd_call does not return the output of the command
|
||||||
|
bool success = r_cmd_call(core->rcmd, cmd);
|
||||||
|
|
||||||
|
qInfo() << "---" << success << "----\n";
|
||||||
|
// we grab the output straight from r_cons
|
||||||
|
res = r_cons_get_buffer();
|
||||||
|
|
||||||
|
// cleaning up
|
||||||
|
r_cons_pop ();
|
||||||
|
r_cons_echo (NULL);
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonDocument CutterCore::cmdj(const char *str)
|
QJsonDocument CutterCore::cmdj(const char *str)
|
||||||
@ -794,7 +794,7 @@ void CutterCore::applyStructureOffset(const QString &structureOffset, RVA offset
|
|||||||
offset = getOffset();
|
offset = getOffset();
|
||||||
}
|
}
|
||||||
|
|
||||||
this->cmdRaw("aht " + structureOffset + " @ " + QString::number(offset));
|
this->cmdRawAt("aht " + structureOffset, QString::number(offset));
|
||||||
emit instructionChanged(offset);
|
emit instructionChanged(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,10 +72,23 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool asyncCmd(const char *str, QSharedPointer<R2Task> &task);
|
bool asyncCmd(const char *str, QSharedPointer<R2Task> &task);
|
||||||
bool asyncCmd(const QString &str, QSharedPointer<R2Task> &task) { return asyncCmd(str.toUtf8().constData(), task); }
|
bool asyncCmd(const QString &str, QSharedPointer<R2Task> &task) { return asyncCmd(str.toUtf8().constData(), task); }
|
||||||
QString cmdRaw(const QString &str);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Execute a command \a cmd at \a address. The function will preform a silent seek to the address
|
* @brief Execute a radare2 command \a cmd. By nature, the API
|
||||||
|
* is executing raw commands, and thus ignores multiple commands and overcome command injections.
|
||||||
|
* @param cmd - a raw command to execute. If multiple commands will be passed (e.g "px 5; pd 7 && pdf") then
|
||||||
|
* only the first command will be executed.
|
||||||
|
* @return the output of the command
|
||||||
|
*/
|
||||||
|
QString cmdRaw(const char *cmd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief a wrapper around cmdRaw(const char *cmd,).
|
||||||
|
*/
|
||||||
|
QString cmdRaw(const QString &cmd) { return cmdRaw(cmd.toUtf8().constData()); };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Execute a radare2 command \a cmd at \a address. The function will preform a silent seek to the address
|
||||||
* without triggering the seekChanged event nor adding new entries to the seek history. By nature, the
|
* without triggering the seekChanged event nor adding new entries to the seek history. By nature, the
|
||||||
* API is executing raw commands, and thus ignores multiple commands and overcome command injections.
|
* API is executing raw commands, and thus ignores multiple commands and overcome command injections.
|
||||||
* @param cmd - a raw command to execute. If multiple commands will be passed (e.g "px 5; pd 7 && pdf") then
|
* @param cmd - a raw command to execute. If multiple commands will be passed (e.g "px 5; pd 7 && pdf") then
|
||||||
@ -89,6 +102,7 @@ public:
|
|||||||
* @brief a wrapper around cmdRawAt(const char *cmd, RVA address).
|
* @brief a wrapper around cmdRawAt(const char *cmd, RVA address).
|
||||||
*/
|
*/
|
||||||
QString cmdRawAt(const QString &str, RVA address) { return cmdRawAt(str.toUtf8().constData(), address); }
|
QString cmdRawAt(const QString &str, RVA address) { return cmdRawAt(str.toUtf8().constData(), address); }
|
||||||
|
|
||||||
QJsonDocument cmdj(const char *str);
|
QJsonDocument cmdj(const char *str);
|
||||||
QJsonDocument cmdj(const QString &str) { return cmdj(str.toUtf8().constData()); }
|
QJsonDocument cmdj(const QString &str) { return cmdj(str.toUtf8().constData()); }
|
||||||
QStringList cmdList(const char *str) { return cmd(str).split(QLatin1Char('\n'), QString::SkipEmptyParts); }
|
QStringList cmdList(const char *str) { return cmd(str).split(QLatin1Char('\n'), QString::SkipEmptyParts); }
|
||||||
|
Loading…
Reference in New Issue
Block a user