|
1:首先我们拿到一个apk要分析它的构造

很明显我们要分析lua.so 所以我们要把这个so把他载入IDA

分析出导出函数以后 HOOK这个lua函数就能实现脚本的dump了
3:贴上我dumplua的代码和dump出来的脚本


4. 那么dump出来了脚本以后就可以测试各种棋牌的溢出 以及逻辑漏洞等 比如无限金币 透视看牌 强制站起 等等
5. 本人后续会不停跟进游戏以及各种软件安全这方面 希望这些文章能给各种新人带来一些帮助,感兴趣的也可以私下跟我探讨, 一起学习。
#ifndef ADBPROCESS_H
#define ADBPROCESS_H
#include <QObject>
class AdbProcessImpl;
namespace qsc {
class AdbProcess : public QObject
{
Q_OBJECT
public:
enum ADB_EXEC_RESULT
{
AER_SUCCESS_START, // 启动成功
AER_ERROR_START, // 启动失败
AER_SUCCESS_EXEC, // 执行成功
AER_ERROR_EXEC, // 执行失败
AER_ERROR_MISSING_BINARY, // 找不到文件
};
explicit AdbProcess(QObject *parent = nullptr);
virtual ~AdbProcess();
static void setAdbPath(const QString& adbPath);
void execute(const QString &serial, const QStringList &args);
void forward(const QString &serial, quint16 localPort, const QString &deviceSocketName);
void forwardRemove(const QString &serial, quint16 localPort);
void reverse(const QString &serial, const QString &deviceSocketName, quint16 localPort);
void reverseRemove(const QString &serial, const QString &deviceSocketName);
void push(const QString &serial, const QString &local, const QString &remote);
void install(const QString &serial, const QString &local);
void removePath(const QString &serial, const QString &path);
bool isRuning();
void setShowTouchesEnabled(const QString &serial, bool enabled);
void kill();
QStringList arguments();
QStringList getDevicesSerialFromStdOut();
QString getDeviceIPFromStdOut();
QString getDeviceIPByIpFromStdOut();
QString getStdOut();
QString getErrorOut();
signals:
void adbProcessResult(ADB_EXEC_RESULT processResult);
private:
AdbProcessImpl* m_adbImpl = nullptr;
};
}
#endif // ADBPROCESS_H
#pragma once
#include <QMouseEvent>
#include &#34;QtScrcpyCoreDef.h&#34;
namespace qsc {
class DeviceObserver {
protected:
DeviceObserver() {
}
virtual ~DeviceObserver() {
}
public:
virtual void onFrame(int width, int height, uint8_t* dataY, uint8_t* dataU, uint8_t* dataV, int linesizeY, int linesizeU, int linesizeV) {
Q_UNUSED(width);
Q_UNUSED(height);
Q_UNUSED(dataY);
Q_UNUSED(dataU);
Q_UNUSED(dataV);
Q_UNUSED(linesizeY);
Q_UNUSED(linesizeU);
Q_UNUSED(linesizeV);
}
virtual void updateFPS(quint32 fps) { Q_UNUSED(fps); }
virtual void grabCursor(bool grab) {Q_UNUSED(grab);}
virtual void mouseEvent(const QMouseEvent *from, const QSize &frameSize, const QSize &showSize) {
Q_UNUSED(from);
Q_UNUSED(frameSize);
Q_UNUSED(showSize); |
|