
本文共 4132 字,大约阅读时间需要 13 分钟。
������RedisDesktopManager������������������-���2
������������������RDM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������
- ������
- x64dbg
- ������������RedisDesktopManager
������
���������������Wireshark������������������������Wirshark���������������������(������vm������������������������������������������������������������������)
������������������http������������������/get-update
���������
���rdm.exe
������������x64dbg
��������������� ������������������������->������������->���������������������������������������������get-update
���
������������������������������������������RDM2020.5���������Updater::Updater() ���������������
���������github������������������
// ============= app.cpp ============void Application::OnNewUpdateAvailable(QString& url) { QMessageBox::information( nullptr, "New update available", QCoreApplication::translate( "RDM", "Please download new version of RDM: %1") .arg(url));}Application::Application(int& argc, char** argv) : QApplication(argc, argv), m_engine(this), m_qmlUtils(QSharedPointer(new QmlUtils())), m_events(QSharedPointer (new Events())) { // Init components required for models and qml initAppInfo(); initProxySettings(); processCmdArgs(); initAppFonts(); initRedisClient();#ifndef RDM_APPSTORE initUpdater();#endif installTranslator(); initPython();}void Application::initUpdater() { // ������new Updater()���������Updater::Updater()������������ m_updater = QSharedPointer (new Updater()); connect(m_updater.data(), SIGNAL(updateUrlRetrived(QString&)), this, SLOT(OnNewUpdateAvailable(QString&)));}// =============== updater.cpp ===================void Updater::requestFinished(QNetworkReply* response){ if (response->error() != QNetworkReply::NoError || response->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { return; } QString result(response->readAll()); if (!result.isEmpty()) { emit updateUrlRetrived(result); }}Updater::Updater(){ manager = new QNetworkAccessManager(); QObject::connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*))); QString platform("unknown"); #ifdef Q_OS_WIN32 platform = "windows"; #endif #ifdef Q_OS_LINUX platform = "linux"; #endif #ifdef Q_OS_MACX platform = "osx"; #endif QUrl updateUrl( QString("http://%1/get-update?version=%2&platform=%3") .arg("rdm.dev") .arg(QCoreApplication::applicationVersion()) .arg(platform) ); manager->get(QNetworkRequest(updateUrl));}
������������������������������������
Application::Application()
=> Application::initUpdater()
=>Updater::Updater()
=> ������������,���������������������Updater::requestFinished()
=> requestFinished������������������������ ������
=> updateUrlRetrived(result)
=> ��������������� Application::OnNewUpdateAvailable(QString& url) => ������MessageBox������������
������������������������������������������������00007FF76E8AF439
���������Updater::Updater()������������������
���������������������������nop ���Updater::Updater() ������������������������ manager->get(QNetworkRequest(updateUrl));
���00007FF76E8AF439
���������������������������������������������������������������������������
������������������Updater::Updater()
���������������������nop���Updater::Updater()
���������
nop���
���������������rdm.exe
������������
������
������
���������������MessageBox
������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������github���������2020.5���������������������������������������������������������������������������������������������������������������������������������get-update
������������������
发表评论
最新留言
关于作者
