Sketchup 逆向工程(四)分析结果的利用 钩子 外挂 代码注入

系列文章

一、逆向工程
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模型(五)绘制三角面

三、成果
疫情期间关在家里实在没事干,破解了Sketchup,成功做出可以读取并显示.skp文件的程序SuViewer

前言

Sketchup作为目前设计院最为流行的设计软件(非工程制图软件),深受设计师的喜爱,软件小巧,而功能强大,有不少为之开发的插件应运而生,不过呢,关于底层数据结构和工作原理相关的文章少之又少,本文意在填补一下这方面的空缺,通过逆向软件分析,展示软件内部奥秘。本文用到的工具:IDA Pro,Immunity Debugger,Visual Studio (逆向工程三件套)提示:数据结构属于机密数据:

正文

用IDA Pro分析得出的数据结构,只要正确,马上可以拿来利用,包括(钩子,外挂,代码注入

typedef struct { void* ptr; } SULoopRef;
typedef struct { void* ptr; } CEdgeUse;

SU_RESULT(*SUFaceGetOuterLoop)(SUFaceRef face, SULoopRef* loop);
SU_RESULT(*SULoopGetEdgeUses)(SULoopRef loop, size_t len, SUEdgeUseRef edge_uses[], size_t* count);

这是之前用的SketchupAPI,由于官方不开放源代码和数据结构,返回的对象都是个void*指针,虽然明知道这个就是内部数据,但是得到的指针还是漆黑一片

这就需要对数据结构进行逆向分析,也是软件逆向工程最重要,也是工作量最大的是(算法分析还排其次)

下面是对分析的数据结构进行定义

// 分析得出的数据结构
struct  CLoop
{
	CEntity Entity;
	CFace* parent_face;
	CEdgeUse* edge_use;
	bool is_outerloop;
	bool is_convex;
	__int16 pad;
};

struct  CEdgeUse
{
	CEntity Entity;
	CEdge* edge;
	bool is_edge_reversed;
	CLoop* parent_cloop;
	CEdgeUse* link_prev;
	CEdgeUse* link_next;
	CEdgeUse* link_partners;
	int unknow11;
};

// 重新定义的API
typedef struct { CVertex* ptr; } CLoop;
typedef struct { CVertex* ptr; } CEdgeUse;

SU_RESULT(*SUFaceGetOuterLoop)(SUFaceRef face, SULoopRef* loop);
SU_RESULT(*SULoopGetEdgeUses)(SULoopRef loop, size_t len, SUEdgeUseRef edge_uses[], size_t* count);

稍微修改一下sketchup api的头文件slapi.h

写一段测试代码,进入调试

现在返回的指针,里面的数据就全部能看到了

现在就可以用实际的测试数据,来验证了

已经能看到数据结构了

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值