首页
社区
课程
招聘
分析OCX文件 有空的请来看看 顺便指教一下
发表于: 2004-4-22 10:58 15409

分析OCX文件 有空的请来看看 顺便指教一下

2004-4-22 10:58
15409
这是一个OCX控件
未注册时候总是附加一个讨厌的广告信息

Welcome to http://........

我用IDA PRO找到了这个字符串的位置  直接在文件上进行了修改
把这个字符串按照等长的替换
但是实际运行的时候还是出现问题

后来我干脆把这个字符串清零了   但是依然没有把这个串去掉

我找到的这个位置是:0029B4

我再用搜索的时候 却找不到 其他的位置还有这个咚咚了

难道是通过其他的方式编码了

对了  这里面的字符都是UNICODE编码

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

收藏
免费 1
支持
分享
最新回复 (32)
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
静态看不明白
是不是可以自己写一个小的程序来引用这个OCX控件
然后在合适的地方断点一下
来跟进去
要不然用OD没有办法来分析一个DLL啊
2004-4-22 13:50
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是不是可以找到把这个字符串附加上去的代码
然后把这个跳过去

看完天龙八部试一试
2004-4-22 20:33
0
雪    币: 195
活跃值: (347)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
字符串的上面应该都有函数调用或是JNZ JE一类的东西.如果没有则需要修改某个标志位.能不能把弹出的对话框抓下来发到论坛里看一下
2004-4-22 21:42
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
.text:110029B4                 push    edi
.text:110029B5                 add     [ebp+0], ah
.text:110029B8                 ins     byte ptr es:[edi], dx
.text:110029B9                 add     [ebx+0], ah
.text:110029BC                 outsd
.text:110029BD                 add     [ebp+0], ch
.text:110029C0                 add     gs:[eax], ah
.text:110029C3                 add     [eax+eax+6Fh], dh
.text:110029C7                 add     [eax], ah
.text:110029C9                 add     [eax+0], ch
.text:110029CC                 jz      short $+2
.text:110029CE                 jz      short $+2
.text:110029D0                 jo      short $+2
.text:110029D2                 cmp     al, [eax]
.text:110029D4                 das
.text:110029D5                 add     [edi], ch
.text:110029D7                 add     [edi+0], dh
.text:110029DA                 ja      short $+2
.text:110029DC                 ja      short $+2
.text:110029DE                 add     cs:[eax+eax+72h], dh
.text:110029E3                 add     [ecx+0], ah
.text:110029E6                 outsb
.text:110029E7                 add     [ebx+0], dh
.text:110029EA                 outsd
.text:110029EB                 add     [esi+0], ah
.text:110029EE                 jz      short $+2
.text:110029F0                 add     cs:[ebx+0], ah
.text:110029F4                 outsd
.text:110029F5                 add     [ebp+0], ch
.text:110029F8                 add     cs:[ebx+0], ah
.text:110029FC                 outsb
.text:110029FD                 add     [edi], ch
.text:110029FF                 add     [ebx+0], dh
.text:11002A02                 ins     dword ptr es:[edi], dx
.text:11002A03                 add     [ebx+0], dh

这段代码对应的就是那串讨厌的网址信息
2004-4-22 22:22
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 微笑一刀 发布
字符串的上面应该都有函数调用或是JNZ JE一类的东西.如果没有则需要修改某个标志位.能不能把弹出的对话框抓下来发到论坛里看一下


是这样的  这个控件是发送短信息用的
如果不注册话  你发送的信息内容前面就会被加上一个访问网址信息
注册之后就没有了
2004-4-22 22:25
0
雪    币: 195
活跃值: (347)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 gambol 发布


是这样的 这个控件是发送短信息用的
如果不注册话 你发送的信息内容前面就会被加上一个访问网址信息
注册之后就没有了

发送以后附带的是什么信息,能不能抓个图.因为不知道是什么信息分析起来麻烦.我总不能套用这个OCX写个软件在调试吧...
2004-4-22 22:58
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 微笑一刀 发布

发送以后附带的是什么信息,能不能抓个图.因为不知道是什么信息分析起来麻烦.我总不能套用这个OCX写个软件在调试吧...


用IDA PRO可以看到一个地方有
就是.text:110029b4处
有一个UNICODE字符串:“Welcome to http://www.tr........”
2004-4-23 07:36
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
还有就是
我把110029B4那里的字符串删除了 或者修改了  都没有效果
在实验的时候还是会出现那个字符串的
2004-4-23 07:38
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请教一个非常初级的问题
就是在静态分析代码的时候
怎么判断寄存器中的值啊?
尤其代码比较长的时候
2004-4-23 08:26
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
.text:1100E4A0                 push    ebp
.text:1100E4A1                 mov     ebp, esp
.text:1100E4A3                 sub     esp, 14h
.text:1100E4A6                 push    offset loc_11001696
.text:1100E4AB                 mov     eax, large fs:0
.text:1100E4B1                 push    eax
.text:1100E4B2                 mov     large fs:0, esp
.text:1100E4B9                 sub     esp, 194h
.text:1100E4BF                 push    ebx
.text:1100E4C0                 push    esi
.text:1100E4C1                 push    edi
.text:1100E4C2                 mov     [ebp+var_14], esp
.text:1100E4C5                 mov     [ebp+var_10], offset dword_110014F8
.text:1100E4CC                 xor     esi, esi
.text:1100E4CE                 mov     [ebp+var_C], esi
.text:1100E4D1                 mov     [ebp+var_8], esi
.text:1100E4D4                 mov     [ebp+var_20], esi
.text:1100E4D7                 mov     [ebp+var_28], esi
.text:1100E4DA                 mov     [ebp+var_2C], esi
.text:1100E4DD                 mov     [ebp+var_30], esi
.text:1100E4E0                 mov     [ebp+var_34], esi
.text:1100E4E3                 mov     [ebp+var_38], esi
.text:1100E4E6                 mov     [ebp+var_48], esi
.text:1100E4E9                 mov     [ebp+var_58], esi
.text:1100E4EC                 mov     [ebp+var_68], esi
.text:1100E4EF                 mov     [ebp+var_78], esi
.text:1100E4F2                 mov     [ebp+var_88], esi
.text:1100E4F8                 mov     [ebp+var_98], esi
.text:1100E4FE                 mov     [ebp+var_A8], esi
.text:1100E504                 mov     [ebp+var_B8], esi
.text:1100E50A                 mov     [ebp+var_C8], esi
.text:1100E510                 mov     [ebp+var_D8], esi
.text:1100E516                 mov     [ebp+var_E8], esi
.text:1100E51C                 mov     [ebp+var_F8], esi
.text:1100E522                 mov     edx, [ebp+arg_0]
.text:1100E525                 lea     ecx, [ebp+var_20]
.text:1100E528                 mov     edi, ds:__vbaStrCopy
.text:1100E52E                 call    edi ; __vbaStrCopy
.text:1100E530                 mov     edx, [ebp+arg_4]
.text:1100E533                 lea     ecx, [ebp+var_30]
.text:1100E536                 call    edi ; __vbaStrCopy
.text:1100E538                 mov     edx, [ebp+arg_8]
.text:1100E53B                 lea     ecx, [ebp+var_28]
.text:1100E53E                 call    edi ; __vbaStrCopy
.text:1100E540                 push    1
.text:1100E542                 call    ds:__vbaOnError
.text:1100E548                 mov     edx, offset dword_1100298C
.text:1100E54D                 lea     ecx, [ebp+var_34]
.text:1100E550                 call    edi ; __vbaStrCopy
.text:1100E552                 mov     ebx, [ebp+arg_C]
.text:1100E555                 mov     [ebx], si
.text:1100E558                 mov     eax, [ebp+var_28]
.text:1100E55B                 push    eax
.text:1100E55C                 mov     edi, ds:__vbaLenBstr
.text:1100E562                 call    edi ; __vbaLenBstr
.text:1100E564                 mov     [ebp+var_10C], eax
.text:1100E56A                 fild    [ebp+var_10C]
.text:1100E570                 fstp    [ebp+var_114]
.text:1100E576                 fld     [ebp+var_114]
.text:1100E57C                 cmp     dword_11015000, 0
.text:1100E583                 jnz     short loc_1100E58D
.text:1100E585                 fdiv    ds:dbl_11001490
.text:1100E58B                 jmp     short loc_1100E59E
2004-4-23 08:56
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
.text:1100E57C cmp dword_11015000, 0
.text:1100E583 jnz short loc_1100E58D
.text:1100E585 fdiv ds:dbl_11001490
.text:1100E58B jmp short loc_1100E59E

上面代码是不是就是来进行判断的啊

.data:11015000 ; Section 2. (virtual address 00015000)
.data:11015000 ; Virtual size                  : 00000DAC (   3500.)
.data:11015000 ; Section size in file          : 00001000 (   4096.)
.data:11015000 ; Offset to raw data for section: 00015000
.data:11015000 ; Flags C0000040: Data Readable Writable
.data:11015000 ; Alignment     : 16 bytes ?
.data:11015000 ; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
.data:11015000
.data:11015000 ; Segment type: Pure data
.data:11015000 ; Segment permissions: Read/Write
.data:11015000 _data           segment para public 'DATA' use32
.data:11015000                 assume cs:_data
.data:11015000                 ;org 11015000h
.data:11015000 unk_11015000    db    0 ;               ; DATA XREF: .text:11001E20o
.data:11015000                                         ; sub_1100ACB0+5BAr ...
.data:11015001                 db    0 ;  
.data:11015002                 db    0 ;  
.data:11015003                 db    0 ;  
.data:11015004                 db    0 ;  
.data:11015005                 db    0 ;  
.data:11015006                 db    0 ;  
.data:11015007                 db    0 ;  
.data:11015008 unk_11015008    db    0 ;               ; DATA XREF: .text:11001E18o
.data:11015008                                         ; .text:110022A8o
.data:11015009                 db    0 ;  
.data:1101500A                 db    0 ;
2004-4-23 09:22
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
自己还是没有搞明白
希望大侠指点
晕死了
2004-4-25 11:06
0
雪    币: 227
活跃值: (164)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
可以使用olldbg1.10b 来加载dll的方法动态调试
2004-4-25 21:33
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
哪位能帮助分析一下这个OCX
实在是着急
等我自己研究明白  怕来不及啊
2004-4-26 08:42
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
自己再顶一下

哪位大侠帮我看看

一共有几个地方可以找到那个欢迎网址

就是“Welcome http://....”这个串
2004-4-29 08:49
0
雪    币: 205
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
你只有一个OCX怎么分析???OCX与DLL分析方法一样
2004-4-29 09:11
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
静态分析不行吗?
2004-4-29 09:45
0
雪    币: 227
活跃值: (164)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
你去原来的论坛找一找
我记得有一个破解SMSreg.exe的帖子
2004-4-29 10:19
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我现在已经可以把这个控件注册了

目前是希望研究一下这个控件

希望找到OCX中的字符串位置

我找到的那个很明显的不对

修改或者删除都没有彻底解决  应该在OCX中还有其他的地方有这个串
2004-5-8 13:24
0
雪    币: 703
活跃值: (327)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
21
最初由 gambol 发布
我现在已经可以把这个控件注册了

目前是希望研究一下这个控件

希望找到OCX中的字符串位置

我找到的那个很明显的不对

修改或者删除都没有彻底解决 应该在OCX中还有其他的地方有这个串

不一定全是明文有可能经过转换动态跟踪看看吧
2004-5-8 15:58
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
对于OCX控件的动态调试没有试过

我的想法是:
为这个OCX控件开设一个工程
然后分析这个OCX文件
晚上我实验一下

不知道这样的思路对吗?
不知道有没有专门的调试OCX控件(DLL)的工具啊?
2004-5-8 16:02
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
我认为控件注册有两种,一种是在开发环境下注册,注册以后再发布编译过的程序就没有广告了,这一种控件运行时是有可能不检测是否注册。
二是在编程时在源程序中给一个调用参数:注册码,在发布以后也是没有广告了,但这一种控件运行实际上还是在检测是否注册。

这两种情况我都碰到过,但不知你的注册属于哪一种?
另外,最好给出一个简单的工程,或编译好的程序。
2004-5-8 17:42
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
我生成了一个工程  其中使用了这个控件

在控件的.H文件中我找到了那个函数

InvokeHelper(0x6003000c,......

使用IDA PRO查看0x6003000c得到地址是00416740

可是这个地址是哪里的地址?

我在用OD动态跟踪的时候怎么从这个地址开始跟踪啊?
2004-5-9 15:21
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
怎么设置断点才可以跟踪到OCX里面的代码呢?
2004-5-10 07:53
0
游客
登录 | 注册 方可回帖
返回
//