首页
社区
课程
招聘
[求助]非windows API的断点思路
发表于: 2009-2-14 21:13 4140

[求助]非windows API的断点思路

2009-2-14 21:13
4140
正在学习破解,现在很困惑的一个问题是
由于破解的程序没有用Windows API的对话框呀之类的东西

所以没法 break 在GetMessage呀之类的函数

通过查找字符串找到了错误跳转的地方。

就是输入序列号不对的跳转代码

但想找到输入 序列号,按确认的代码段

怎么倒着往上找比较好?

倒着走有什么经验之谈么?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
可以用IDA来分析函数,参照流程图和函数交叉引用来寻找。

不过我不明白你说的无法用API断点的事。程序对系统服务的调用,通常是调用API函数。虽然理论上可以直接使用内核的系统调用接口来编程,但对于实际的应用程序,这几乎是不可能的。

最难弄的也就是API调用的变形调用了,比如抽取函数开头的代码等。但只要采取适当的措施,还是可以在程序调用特定的API时断下来的。
2009-2-14 22:42
0
雪    币: 235
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
例如可能底层是opengl的函数。。。我又不熟悉。。。
2009-2-14 23:46
0
雪    币: 235
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
不知道能不能从点击鼠标左键断。。貌似这样又离真实的鼠标点击后事件太远。。不太容易看懂代码。。
2009-2-15 00:12
0
雪    币: 235
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
哪位大哥帮我给点提示,如何从点鼠标左键这步到出错误信息直接来个断点

点击鼠标左键怎么断呢?
2009-2-15 00:14
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
发上来研究研究
2009-2-15 00:16
0
雪    币: 235
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
.text:0075B050                 push    ebp
.text:0075B051                 mov     ebp, esp
.text:0075B053                 push    0FFFFFFFFh
.text:0075B055                 push    offset unk_D5E6E9
.text:0075B05A                 mov     eax, large fs:0
.text:0075B060                 push    eax
.text:0075B061                 mov     large fs:0, esp
.text:0075B068                 sub     esp, 2F4h
.text:0075B06E                 push    ebx
.text:0075B06F                 push    esi
.text:0075B070                 push    edi
.text:0075B071                 mov     esi, ecx
.text:0075B073                 call    loc_407DAB
.text:0075B078                 mov     ecx, eax
.text:0075B07A                 call    loc_40CAE5
.text:0075B07F                 xor     ebx, ebx
.text:0075B081                 lea     ecx, [ebp-24h]
.text:0075B084                 mov     byte_1AA7C61, bl
.text:0075B08A                 mov     byte_1AA7BE4, 1
.text:0075B091                 call    loc_422E30
.text:0075B096                 mov     eax, [esi+78h]
.text:0075B099                 mov     [ebp-4], ebx
.text:0075B09C                 dec     eax
.text:0075B09D                 cmp     eax, 0Bh        ; switch 12 cases
.text:0075B0A0                 ja      loc_75B71B      ; default
.text:0075B0A6                 jmp     ds:off_75B790[eax*4] ; switch jump
.text:0075B0AD                 push    offset aInvalidNum ; case 0x0
.text:0075B0B2                 lea     ecx, [ebp-180h]
.text:0075B0B8                 call    loc_419E4D
.text:0075B0BD                 lea     eax, [ebp-180h]
.text:0075B0C3                 lea     ecx, [ebp-1C8h]
.text:0075B0C9                 push    eax

我这是 IDA pro 4.9 中的代码, 我根据 错误信息 找到了“aInvalidNum”
可以看到这里是根据不同的结果走不同的分支
我这里走到了 aInvalidNum , 我并不想直接改这里让程序走正确分支

我是想找判断的地方,也许类似 注册机的 计算注册码的函数

有什么好的思路么。。。

鼠标左键点击处break 到这直接可能还有很多代码。。。

另外。。我是初学者。。。谁教我下鼠标左键断点怎么才能设。。。谢谢
2009-2-15 00:35
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
8
2009-2-15 00:37
0
雪    币: 235
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
前面的三个函数 loc_407DAB loc_422E30 loc_75B71B      
貌似都不是我想要找的函数。。

对了,突然有了另一个灵感

这个计算是一定要走网络的。所以应该在 socket 发送处能来个断点。

这样离点击鼠标的断点应该比 aInvalidNum 的断点更近

需要找的范围更小。

谁帮忙教教我 鼠标左键点击 会触发什么windows API,  TCP 的socket send 会触发什么函数。

应该不会是用的wincap做的网络连接,所以这两个API 应该是windows的API

哪位大大帮我给点提示
2009-2-15 00:40
0
雪    币: 235
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
谢谢楼上

WM_LBUTTONUP 应该就是鼠标左键放开的断点了,试试

IDA还用的不熟悉。呵呵呵
2009-2-15 00:42
0
雪    币: 235
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
嗯,那么我可以试验 WSAStartup 和send 函数。。

我怎么老记得windows 的send 不是和 linux 一样名字呢。。。。
2009-2-15 00:53
0
游客
登录 | 注册 方可回帖
返回
//