首页
社区
课程
招聘
[求助]查找“3D4DA1D6 ”,找到了,下断,可怎么会总不中断呢?
发表于: 2010-9-25 21:35 13516

[求助]查找“3D4DA1D6 ”,找到了,下断,可怎么会总不中断呢?

2010-9-25 21:35
13516
用IDA pro 远程调试一linux的dameon
根据坛子里大侠的经验,我查找“3D4DA1D6 ”,找到了,下断,可怎么会总不中断呢?
请问高手,这是什么原因?

谢谢了!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 801
活跃值: (2393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可能的原因有两个:
1、如果是ecc加密,那么,程序就不会执行到有3D4DA1D6的地方
2、如果不是ecc加密,程序中有3D4DA1D6,而且代码形式类似的地方应该不止一处两处,试着把你所找到的所有含3D4DA1D6的地方都下上断点,然后再试试看
2010-9-25 23:07
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢老伙计,

      不过还是不行呀。
    1、没有ecc   2、所有的我都断了,还是不行。

说明:
试过ida pro 5.5 但要glibc2.4 ,好不容易在rhel4.8上升级了glibc,能用ida pro5.5了,但不中断。
又试ida pro 5  这回不要glibc2.4了,但仍不中断

呜。。。。
2010-9-26 10:50
0
雪    币: 801
活跃值: (2393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
809b449:       83 bd 64 fd ff ff 00       cmpl   $0x0,0xfffffd64(%ebp)
809b450:       0f 84 3a 07 00 00          je     809bb90 <strcpy@plt+0x51bd4>   <--- couldn't jump here !
809b456:       c7 45 ec cc 46 0c 08       movl   $0x80c46cc,0xffffffec(%ebp)    <--- we should continue here !

806c58f:       3a 04 11                   cmp    (%ecx,%edx,1),%al              <--- license key check point !

    你可以试着让程序在0x0809b449处不跳,然后3D4DA1D6就可以正常拦截了。
2010-9-26 15:17
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢老伙计

       我来研究一下。呵呵
2010-9-26 15:35
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我改了809b450    of 84 3a ....   为 809b450    of 85 3a ....   
变成了jnz

在ida pro 5.0中按F9 ,这下在ida中不出错了,但仍不中断。
我发现linux 端出现
Vendor daemon can't talk to lmgrd (Cannot connect to license server (-15,12:111 "C onnection refused"))
Closing incoming connection...

请教老伙计,请问,你是如何认定要在这儿不能跳转的? 呵呵
2010-9-26 16:08
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我试着在809b450 处 用F8 逐步调试,可以走,但不到806c58f,就出现linux端的 lmgrd 错误,呵呵。

看来,是不是哪儿设置错了?
2010-9-26 16:49
0
雪    币: 801
活跃值: (2393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
更正一下,前面所说许可逐字节比较的地址有误,应该是这样的:

806c58f:       3a 04 11                cmp    (%ecx,%edx,1),%al              <--- 错误,程序不会执行到这里
809c27f:       3a 04 11                cmp    (%ecx,%edx,1),%al              <--- 正确,程序在这里检查许可

    关于在 0x0809b450 处不跳转,你只要把
809b450:       0f 84 3a 07 00 00       je     809bb90 <strcpy@plt+0x51bd4>
    这条指令改成6个nop就可以了。另外,关于下断点的地方,不知你选对了没有,应该在如下两处:
809b6bd:       e8 e6 0c 00 00          call   809c3a8 <strcpy@plt+0x523ec>
809b6c2:       83 c4 04                add    $0x4,%esp        <--- set break point here ! $eax contains the ENCRYPTION_SEED1

809ba41:       e8 62 09 00 00          call   809c3a8 <strcpy@plt+0x523ec>
809ba46:       83 c4 04                add    $0x4,%esp        <--- set break point here ! $eax contains the ENCRYPTION_SEED2

    不信你试,一定能断下来

    我是在linux系统下直接使用DDD(gdb)调试的,你的调法我没用过,不好妄加评论。
2010-9-26 17:50
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
十分感谢老伙计的热心帮助。  我再试。
2010-9-27 09:52
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
看来我的那种方法不适应此类linux的反汇编,当然更有可能是我的设置有问题。
当然欢迎用过ida这种远程linux的方式的大侠多指点,在这先谢谢了。

暂时搁一边,先按 老伙计 的方法搞通后再来研究。找ddd .....
2010-9-27 10:43
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这个DDD 有点难入门。
我打开 program ,怎么什么也没有呀?
老伙计,帮忙写一个简单的操作过程,谢谢(呵呵,有点不好意思。但实在搞不定。搜了半天,也没找到一个关于这个与flexlm相关的ddd的说明,都是些c语言方面的调试。

我按了一下 run   ,加了参数 -c license.dat 是只到flexlm的一些相关信息。连二进制的码都不见。呵呵
2010-9-27 15:02
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
终于中断了,十分感谢老伙计。

不过,我没有用ddd ,实在找不着北。。  还是用了ida

原来我犯了个低级错误,每一次用ida pro 中的patch program 把二进制改了后,结果一运行,ida用的还是原来没改的。 ,后来,用ultraedit一改,呵呵。好了。
终于找到了seed

但我发现,这两个seed 只对license.dat中已有的feature有效,没有的,则好象不对,请问为什么?

不过还是有几个不明白的地方需要请教老伙计:
1、怎么知道要改809b450的这个地方的跳转的?
2、怎么知道那两个断点的位置。
我真的想知其所以然。呵呵

再一次感谢老伙计。
2010-9-27 18:09
0
雪    币: 801
活跃值: (2393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
      你的说法有误,这两个seed就是开发商最核心的秘密,通过它们制作的注册机,随便设定任何的FEATURE都可以生成与之对应的权威license key--就像是出自软件开发商之手,FLEXlm认证系统都可以检查通过。所以,这两个seed并不仅限于license.dat中已有的FEATURE。
      至于你问到的几个"怎么知道。。。",我只能说是基于经验和感觉,俗话说"熟能生巧",等你接触和研究这类问题足够多了以后自然也会有的。
2010-9-27 18:30
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
老伙计,你说的是对的。真的谢谢你。

我现在得认真潜下心来研究那几个怎么知道。呵呵。

谢谢啦!
2010-9-28 08:20
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我发现,关键的问题是让它停下来,只要停下来就好办了。
2010-9-28 11:00
0
雪    币: 324
活跃值: (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
程序正常运行中,不是所有程序都会在3D4DA1D6这里过。下面引用一段经典的话。。。

"The default value to clean the seeds variable is 3D4DA1D6h. A lot of vendors are lazy or foolish and don't change this default value. So, a very easy way is just search the pattern 3D4DA1D6h in disassembled codes. You'll get a lot of codes like this : mov [ebp-xxxx], 3D4DA1D6h. Just break on every instance containing this value and ....... run. If the program is checking the license, write down the value in [ebp-xxxx] when the first breakpoint is reached. It's your seed1 (not XORed with key5, it's original seed1). The second breakpoint you get, it's seed2. And trace a little back to the function entry, the keys (1~4) are in the parameters. Anyway, this method won't work for every case, but for beginner, it's easy to learn. ;-)."
2010-9-28 23:52
0
雪    币: 161
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
呵呵,谢谢老大。

最近几天在学习flexlm ,通过看雪这个平台,遇到了象"老伙计"及楼上 这么一些热心的人。

真的非常感谢。我再继续努力。
2010-9-29 09:02
0
雪    币: 324
活跃值: (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
要善于用多种方法得到自己想要的东西。。。
2010-10-12 14:14
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码