一、逆向工程
Sketchup 逆向工程(一)破解.skp文件数据结构
Sketchup 逆向工程(二)分析三维模型数据结构
Sketchup 逆向工程(三)软件逆向工程从何处入手
Sketchup 逆向工程(四)破解的乐趣 钩子 外挂 代码注入
二、OpenGL渲染模型
Python+OpenGL绘制3D模型(一)Python 和 PyQt环境搭建
Python+OpenGL绘制3D模型(二)程序框架PyQt5
Python+OpenGL绘制3D模型(三)程序框架PyQt6
Python+OpenGL绘制3D模型(四)绘制线段
Python+OpenGL绘制3D模型(五)绘制三角型
Python+OpenGL绘制3D模型(六)材质文件载入和贴图映射
Python+OpenGL绘制3D模型(七)制作3dsmax导出插件
Python+OpenGL 杂谈(一)
三、成果
疫情期间关在家里实在没事干,破解了Sketchup,成功做出可以读取并显示.skp文件的程序SuViewer
Sketchup作为目前设计院最为流行的设计软件(非工程制图软件),深受设计师的喜爱,软件小巧,而功能强大,有不少为之开发的插件应运而生,不过呢,关于底层数据结构和工作原理相关的文章少之又少,本文意在填补一下这方面的空缺,通过逆向软件分析,展示软件内部奥秘。本文用到的工具:IDA Pro,Immunity Debugger,Visual Studio (逆向工程三件套)数据结构属于知识产权的核心机密:
在上一节,我们创建了一个OpenGL窗口,并绘制了3条线组成的小十字,从后面开始,我们的绘图程序放在一个独立的文件里,只有一个对外的接口 draw(gl),之前的代码中,在paintEvent中调用主绘图函数,这样代码的,绘图和框架,分的就非常清晰
第一步,新建一个Draw1.py,修改tOpenGL.py中调用绘图函数
# tOpenGL.py
from Draw1 import draw
def paintEvent(self, event):
...
# Step 2
self.SetupMatrix()
# Step 3
draw(self.gl)
#self.drawTarget(self.gl)
第二部,编写绘图函数
def draw(gl):
gl.glBegin(gl.GL_LINES)
gl.glVertex3d(-1, 0, 0 )
gl.glVertex3d(+1, 0, 0 )
gl.glEnd()
gl.glBegin(gl.GL_LINES)
gl.glVertex3d(-1, 0, 2 )
gl.glVertex3d(+1, 0, 2 )
gl.glEnd()
gl.glBegin(gl.GL_LINES)
gl.glVertex3d(-1, 0, 0 )
gl.glVertex3d(-1, 0, 2 )
gl.glEnd()
gl.glBegin(gl.GL_LINES)
gl.glVertex3d(+1, 0, 0 )
gl.glVertex3d(+1, 0, 2 )
gl.glEnd()
第三部,运行 python tOpenGL.py
目标是一个完善的Viewer,能够显示Sketchup的.skp文件中的3D模型
Corona渲染器照片级渲染效果