首页
社区
课程
招聘
修改软件监听端口的问题
发表于: 2009-11-4 10:30 5113

修改软件监听端口的问题

2009-11-4 10:30
5113
一个exe运行后会开启一个1358的端口.这个端口也可以通过 启动时加参数 xx.exe - ports 这样可以指定窗口.我想不指定参数时的默认端口改成1234 ,请问有办法改吗?

OllyDBG搜索-ports 

0031C2D5  |.  68 B4ED4600   |PUSH PdSvr_.0046EDB4                    ; /-ports
0031C2DA  |.  8D4D E0       |LEA ECX,DWORD PTR SS:[EBP-20]           ; |
0031C2DD  |.  E8 4E78FAFF   |CALL PdSvr_.00403B30                    ;
0031C2E2  |.  85C0          |TEST EAX,EAX
0031C2E4  |.  75 1B         |JNZ SHORT PdSvr_.0031C301
0031C2E6  |.  8D4D E4       |LEA ECX,DWORD PTR SS:[EBP-1C]
0031C2E9  |.  E8 A29FFBFF   |CALL PdSvr_.00416290
0031C2EE  |.  50            |PUSH EAX                                ;
0031C2EF  |.  E8 1DD2FCFF   |CALL PdSvr_.00429511                    ;
0031C2F4  |.  83C4 04       |ADD ESP,4
0031C2F7  |.  A3 049C4700   |MOV DWORD PTR DS:[479C04],EAX
0031C2FC  |.  E9 BF020000   |JMP PdSvr_.0031C5C0

OllyDBG中搜索不到1358这个.

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 347
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
在数据窗口ctrl+g 输入0046EDB4,看看,记得转成十进制
2009-11-4 11:42
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
0046EDB4输入这个找到了.点上去就变成0046EDB3

0046EDB3    002D 5000002D   ADD BYTE PTR DS:[2D000050],CH

就是这个数据.转成十进制是指转哪个呢
2009-11-4 17:00
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我说下我的思路
因为端口绑定是用bind函数。

所以bp bind->运行。
然后ALT+F9->返回
向上找几行找到pSockAddr参数F2下断
重新加载并F9运行。让程序断在pSockAddr上
看ecx保存着pSockAddr的地址
ctrl+g转到地址。
其中。pSockAddr这是一个结构体

struct socketaddr_in{
unsigned short int sin_family;
uint16_t sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
};
其中sin_port就是端口号
所以我们只要修改sin_port就可以了
我在网上随便找了个聊天工具研究了下(自己懒得写)。
但我ctrl+g转到的时候
看到这些

0012FDD4    0200            add     al, byte ptr [eax]
0012FDD6    17              pop     ss
0012FDD7    70 00           jo      short 0012FDD9
0012FDD9    0000            add     byte ptr [eax], al
0012FDDB    00CC            add     ah, cl
我以为是OD对程序进行了分析
就按右键-分析,没有看到从模块中删除分析选项
只有一个扫描目标文件
我就按了一下,程序马上就崩溃了

不知道是不是我找的程序有问题
还是我的思路有问题。
大家指点下
睡了先、、、、
2009-11-5 02:44
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
对了
这是我分析的目标
这只是个聊天程序的服务端。因为客户端不用绑定端口,所以没有bind函数
上传的附件:
2009-11-5 02:49
0
雪    币: 208
活跃值: (148)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
0040B9C7  |.  6A 00         push    0                                ; /Protocol = IPPROTO_IP
0040B9C9  |.  6A 02         push    2                                ; |Type = SOCK_DGRAM
0040B9CB  |.  6A 02         push    2                                ; |Family = AF_INET
0040B9CD  |.  FF15 B4524200 call    dword ptr [<&WS2_32.#23>]        ; \socket
0040B9D3  |.  3BF4          cmp     esi, esp
0040B9D5  |.  E8 E658FFFF   call    004012C0
0040B9DA  |.  8985 64FEFFFF mov     dword ptr [ebp-19C], eax
0040B9E0  |.  8BF4          mov     esi, esp
0040B9E2  |.  6A 00         push    0                                ; /NetLong = 0
0040B9E4  |.  FF15 B8524200 call    dword ptr [<&WS2_32.#8>]         ; \ntohl
0040B9EA  |.  3BF4          cmp     esi, esp
0040B9EC  |.  E8 CF58FFFF   call    004012C0
0040B9F1  |.  8985 58FEFFFF mov     dword ptr [ebp-1A8], eax
0040B9F7  |.  66:C785 54FEF>mov     word ptr [ebp-1AC], 2
0040BA00  |.  8BF4          mov     esi, esp
0040BA02      68 70170000   push    1770 ;把这行改成“push 4D2”就可以了,1234的十六进制形式就是4D2
0040BA07  |.  FF15 BC524200 call    dword ptr [<&WS2_32.#9>]         ; \ntohs
0040BA0D  |.  3BF4          cmp     esi, esp
0040BA0F  |.  E8 AC58FFFF   call    004012C0
0040BA14  |.  66:8985 56FEF>mov     word ptr [ebp-1AA], ax
0040BA1B  |.  8BF4          mov     esi, esp
0040BA1D  |.  6A 10         push    10                               ; /AddrLen = 10 (16.)
0040BA1F  |.  8D8D 54FEFFFF lea     ecx, dword ptr [ebp-1AC]         ; |
0040BA25  |.  51            push    ecx                              ; |pSockAddr
0040BA26  |.  8B95 64FEFFFF mov     edx, dword ptr [ebp-19C]         ; |
0040BA2C  |.  52            push    edx                              ; |Socket
0040BA2D  |.  FF15 C0524200 call    dword ptr [<&WS2_32.#2>]         ; \bind
2009-11-5 11:01
0
雪    币: 208
活跃值: (148)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
这个程序运行后,默认打开的是6000端口,不是你说的1358端口
2009-11-5 11:05
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
额,我只是随便找的一个软件来代替,举一反三就行了,
还有我曾经直接对ntohs函数下过断点,不过OD识别不了这个函数,
xdklzy你是怎么定位到这段代码的?
从你给出的代码我发现有两个方法可以定位到ntohs函数,
一是对bind下断二是对Socket下断,不知你是不是这样定位的
谢谢你给出的代码
2009-11-5 13:12
0
雪    币: 208
活跃值: (148)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
由于你这个程序比较简单,我用OllyDbg打开就看到了vc的启动代码
00401300 >/$  55                       push    ebp
00401301  |.  8BEC                     mov     ebp, esp
00401303  |.  6A FF                    push    -1
00401305  |.  68 30014200              push    00420130
0040130A  |.  68 04404000              push    00404004                                  ;  SE handler installation
0040130F  |.  64:A1 00000000           mov     eax, dword ptr fs:[0]
00401315  |.  50                       push    eax
00401316  |.  64:8925 00000000         mov     dword ptr fs:[0], esp
0040131D  |.  83C4 F0                  add     esp, -10
00401320  |.  53                       push    ebx
00401321  |.  56                       push    esi
00401322  |.  57                       push    edi
00401323  |.  8965 E8                  mov     dword ptr [ebp-18], esp
00401326  |.  FF15 C4514200            call    dword ptr [<&KERNEL32.GetVersion>]        ;  kernel32.GetVersion
0040132C  |.  A3 E4354200              mov     dword ptr [4235E4], eax
00401331  |.  A1 E4354200              mov     eax, dword ptr [4235E4]
00401336  |.  C1E8 08                  shr     eax, 8
00401339  |.  25 FF000000              and     eax, 0FF
0040133E  |.  A3 F0354200              mov     dword ptr [4235F0], eax
00401343  |.  8B0D E4354200            mov     ecx, dword ptr [4235E4]
00401349  |.  81E1 FF000000            and     ecx, 0FF
0040134F  |.  890D EC354200            mov     dword ptr [4235EC], ecx
00401355  |.  8B15 EC354200            mov     edx, dword ptr [4235EC]
0040135B  |.  C1E2 08                  shl     edx, 8
0040135E  |.  0315 F0354200            add     edx, dword ptr [4235F0]
00401364  |.  8915 E8354200            mov     dword ptr [4235E8], edx
0040136A  |.  A1 E4354200              mov     eax, dword ptr [4235E4]
0040136F  |.  C1E8 10                  shr     eax, 10
00401372  |.  25 FFFF0000              and     eax, 0FFFF
00401377  |.  A3 E4354200              mov     dword ptr [4235E4], eax
0040137C  |.  6A 00                    push    0
0040137E  |.  E8 9D2A0000              call    00403E20
00401383  |.  83C4 04                  add     esp, 4
00401386  |.  85C0                     test    eax, eax
00401388  |.  75 0A                    jnz     short 00401394
0040138A  |.  6A 1C                    push    1C
0040138C  |.  E8 CF000000              call    00401460
00401391  |.  83C4 04                  add     esp, 4
00401394  |>  C745 FC 00000000         mov     dword ptr [ebp-4], 0
0040139B  |.  E8 10270000              call    00403AB0
004013A0  |.  FF15 C0514200            call    dword ptr [<&KERNEL32.GetCommandLineA>]   ; [GetCommandLineA
004013A6  |.  A3 444F4200              mov     dword ptr [424F44], eax
004013AB  |.  E8 E0240000              call    00403890
004013B0  |.  A3 BC354200              mov     dword ptr [4235BC], eax
004013B5  |.  E8 C61F0000              call    00403380
004013BA  |.  E8 711E0000              call    00403230
004013BF  |.  E8 8C1A0000              call    00402E50
004013C4  |.  8B0D 00364200            mov     ecx, dword ptr [423600]
004013CA  |.  890D 04364200            mov     dword ptr [423604], ecx
004013D0  |.  8B15 00364200            mov     edx, dword ptr [423600]
004013D6  |.  52                       push    edx
004013D7  |.  A1 F8354200              mov     eax, dword ptr [4235F8]
004013DC  |.  50                       push    eax
004013DD  |.  8B0D F4354200            mov     ecx, dword ptr [4235F4]
004013E3  |.  51                       push    ecx
004013E4  |.  E8 1CFCFFFF              call    00401005;这句上面和下面是vc的启动代码,调用用户的main()函数,我在这下断,在跟进了几步就定位到上面的代码了
。。。。。。。
2009-11-5 16:25
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哦明白了。
我突然想通了,我在4楼所说的。直接CTRL+G到结构体定义的地方时不能修改sin_port的值的
因为在定义结构体的时候还没有初始化。、所以要在对结构体初始化的时候修改
也就是xdklzy在6楼说的地方
2009-11-5 19:04
0
游客
登录 | 注册 方可回帖
返回
//