首页
社区
课程
招聘
[原创]PyQt开发反编译工具学习记录篇
发表于: 2014-9-8 15:14 18826

[原创]PyQt开发反编译工具学习记录篇

2014-9-8 15:14
18826

中秋假期转眼间过去两天了,这次没出去玩,就留在家里学习下PyQt的开发知识。这里仅记录一下学习的相关记录,留下存档,便于以后翻阅。主要的目的是编写一个反编译和回编译的工具,稍后可以慢慢随着需求补充上一些搜索和修改的功能,处理一些游戏的自动破解,类似MM和一些其他支付都有特征可参考,适合做自动化处理。

0x1:第一天,环境配置,简单测试代码

PyQt的简介

PyQt是一个创建GUI应用程序的工具包,它是Python编程语言和Qt库的成功融合,Qt库是目前最强大的库之一。PyQt是由Phil Thompson 开发,实现了一个Python模块集。它有超过300类,将近6000个函数和方法,它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。 PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL的版本只能用在Unix上,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。

环境的配置

我们这里使用的Python版本为2.7.8 ,对应的PyQt版本为4.11.1,下面是这两个的官网:

https://www.python.org/downloads/
http://pyqt.sourceforge.net

下面我整理好放到百度网盘的:

http://pan.baidu.com/s/1dD1o5qT

两个软件选择32位的,可以运行在64位电脑环境下,win7/win8都已经测试没问题。
一些学习网站的整理:

http://www.riverbankcomputing.com
http://wiki.woodpecker.org.cn/moin/PyQt
http://www.commandprompt.com/community/pyqt/book1
http://wiki.python.org/moin/PyQt
http://code.google.com/p/pyqt-doc-cn/

第一个测试代码的编写

然后就开始第一个测试代码的编写:

import sys

'''这里我们进行必须的引用。基础的GUI控件位于QtGui模块中。'''
from PyQt4 import QtGui

'''每一个PyQT4应用必须创建一个应用对象。应用对象位于QtGui模块中。sys.argv参数是从命令行返回的一个参数列表。Python脚本可以从shell来运行。这是一种我们启动脚本的方法。'''
app = QtGui.QApplication(sys.argv)

'''QWidget控件是PyQT4中所有用户接口对象的基类。我们为QWidget提供了缺省的构造程序。缺省的构造程序没有父类。一个没有父类的控件叫做窗口。'''
widget = QtGui.QWidget()

'''resize()方法可以调整控件的尺寸。这里是250px宽,150px高。'''
widget.resize(250, 150)

'''这里我们指定我们窗口的标题。标题在标题栏里显示。'''
widget.setWindowTitle('Love Guige,Love Python')

'''show() 方法将控件显示在屏幕上。'''
widget.show()

'''sys.exit()方法可以确保一个干净的退出。环境参数会显示出应用程序是何种方式结束的'''
sys.exit(app.exec_())
import os

#####设置apk路径,我们这里先使用固定路径#####

apk_path=os.getcwd()+"\\aa.apk"

def apkD(apk_path):

    ###打印一下路径,看看是否正确#####
    print(apk_path)

    ###apktool的命令使用#####
    apkToD='java -jar apktool.jar d '+apk_path

    ###查看一下命令,是否正确,有写错###
    print(apkToD)

    ###调用os的system命令来执行cmd的相关命令###
    os.system(apkToD)

apkD(apk_path)
################################## 自定义按钮类 ####################################
class MyButton(QtGui.QToolButton):
    '''自定义按钮类'''
    ############################## 构造、析构函数 ##################################
    def __init__(self,parent=None):
        '''构造函数'''
        # 调用父类构造函数
        super(MyButton,self).__init__(parent)
        # 设置按钮尺寸
        self.setFixedSize(QtCore.QSize(800,120))
        # 设置按钮背景颜色
        self.setStyleSheet('''background-color:red;''')
    ################################ 事件 #########################################
    def mousePressEvent(self,event):
        '''鼠标按下事件'''
        # 判断是否为鼠标左键按下
        if event.button() == QtCore.Qt.LeftButton:
            # 发射点击信号
            self.clicked.emit(True)
            # 传递至父窗口响应鼠标按下事件
            self.parent().mousePressEvent(event)
import sys
import os
from PyQt4 import QtGui
from PyQt4 import QtCore

###apk的位置,当前类下,我们这里先放到当前文件所在目录###
apk_path=os.getcwd()+"\\aa.apk"

################################# 自定义窗口类 #####################################
class MyWindow(QtGui.QWidget):
    '''自定义窗口类'''
    ############################# 构造、析构函数 #################################
    def __init__(self,parent=None):
        '''构造函数'''
        # 调用父类构造函数
        super(MyWindow,self).__init__(parent)
        # 设置窗口固定尺寸
        self.setFixedSize(QtCore.QSize(800,600))
        # 创建主控件
        bodyWidget = QtGui.QWidget(self)
        # 创建主布局
        mainLayout = QtGui.QVBoxLayout(bodyWidget)

        # 创建自定义按钮
        button = MyButton(self)
        # 设置文本内容
        button.setText("Apk_Decode")
        # 添加控件
        mainLayout.addWidget(button)
        # 设置按钮点击连接槽函数
        button.clicked.connect(self.OnClick)
    ############################### 命令 ########################################
    def OnClick(self):
        '''响应点击'''
        QtGui.QMessageBox.about(self,"apk_d","apk is decoding")

    ############################### 反编译方法 ########################################
    def apk_decode(self,path):
        print(path)
        apkToD='java -jar apktool.jar d '+path
        print(apkToD)
        os.system(apkToD)
        
    ################################ 事件 ########################################
    def mousePressEvent(self,event):
        '''鼠标按下事件'''
        # 判断是否为鼠标左键按下
        if event.button() == QtCore.Qt.LeftButton:
            # 设置窗口背景颜色
            self.setStyleSheet('''''')
            self.apk_decode(apk_path)
            

        
        
################################## 自定义按钮类 ####################################
class MyButton(QtGui.QToolButton):
    '''自定义按钮类'''
    ############################## 构造、析构函数 ##################################
    def __init__(self,parent=None):
        '''构造函数'''
        # 调用父类构造函数
        super(MyButton,self).__init__(parent)
        # 设置按钮尺寸
        self.setFixedSize(QtCore.QSize(800,120))
        # 设置按钮背景颜色
        self.setStyleSheet('''background-color:red;''')
    ################################ 事件 #########################################
    def mousePressEvent(self,event):
        '''鼠标按下事件'''
        # 判断是否为鼠标左键按下
        if event.button() == QtCore.Qt.LeftButton:
            # 发射点击信号
            self.clicked.emit(True)
            # 传递至父窗口响应鼠标按下事件
            self.parent().mousePressEvent(event)
        
################################## 主函数 ##########################################
if __name__ == "__main__":
    '''主函数'''
    # 声明变量
    app = QtGui.QApplication(sys.argv)
    # 创建窗口
    window = MyWindow()
    # 设置窗口显示
    window.show()
    #应用程序事件循环
    sys.exit(app.exec_())

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (11)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习学习 顶一下
2014-9-8 15:18
0
雪    币: 756
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持鬼哥!!!!
2014-9-8 15:18
0
雪    币: 215
活跃值: (51)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
前排支持鬼哥了。推荐增加JDK的东西,因为最新的apktool 已经有-o参数了
2014-9-8 15:20
0
雪    币: 275
活跃值: (254)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
不明觉厉,支持!!
2014-9-8 15:30
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
小鬼霸气。 又研究新玩意了。
2014-9-8 15:56
0
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
7
顶顶更健康~
2014-9-8 19:32
0
雪    币: 233
活跃值: (148)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
8
好好学习,天天向上,顶。
2014-9-9 10:13
0
雪    币: 1
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习学习 顶一下 !
2014-9-9 16:32
0
雪    币: 85
活跃值: (51)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
珍爱生命,请用python```
2014-9-10 03:31
0
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
11
学习了,多谢分享~~
2014-9-10 12:17
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习...谢谢分享....
2014-9-12 10:09
0
游客
登录 | 注册 方可回帖
返回
//