首页
社区
课程
招聘
如何修改一个软件的本地监听端口
发表于: 2004-11-16 14:59 9347

如何修改一个软件的本地监听端口

2004-11-16 14:59
9347
各位高手大家好,不知道大家有没有过修改一个软件的本地监听端口的经历和经验?
比如一个软件在2000端口监听,而现在我想把他改成在2001端口监听。我折腾了好久都摸不着头脑,是我水平实在太低了。
敢问各位有经验的大侠,能否指点一二,在下不胜感激啊!!!
:) 附件:Project1.rar

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

收藏
免费 1
支持
分享
最新回复 (11)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
最初由 redphoenix 发布
附件:Project1.rar


此附近为Delphi写的一个CreakMe,Start按钮打开本地的2000端口,不知道哪位大侠能把它改为在2001端口监听?分享一下你的心得好吗?
2004-11-16 15:04
0
雪    币: 226
活跃值: (115)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
0044F5AD   > \8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0044F5B0   .  C640 29 02    MOV BYTE PTR DS:[EAX+29],2
0044F5B4   .  66:8B45 10    MOV AX,WORD PTR SS:[EBP+10]   <<< 注意这里 >>>

Stack SS:[0069F2FC]=07D0        ; 7D0 => 2000
AX=394C

此时寄存器EBP = 69f2ec
则[EBP+10] = 69f2ec + 10 = 69F2FC

修改如下:

在数据编辑区中定位地址:69F2FC , 然后 ctrl+ e 打开编辑数据窗口, 输入你需要的端口值: 07D1 (2001)
2004-11-16 16:43
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
啊,果然高手现身了,我试试去
感谢高手啊!!!
2004-11-16 17:10
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
skyXnet大哥你好啊,加我QQ:252681吧
我还有点问提想问你一下啊!
2004-11-16 17:14
0
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
6
这个东西用了TServerWinSocket。

可以从bind开始回溯,但是到TServerWinSocket:Listen就上不去了。水平不够。应该追到类的创建的。

不过可以参考一下《Class逆向》。
2004-11-16 17:32
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
是啊,不知道skyXnet大哥怎么定位到
0044F5AD   > \8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0044F5B0   .  C640 29 02    MOV BYTE PTR DS:[EAX+29],2
0044F5B4   .  66:8B45 10    MOV AX,WORD PTR SS:[EBP+10]   

这个地方的,人真的是有差距的:D
2004-11-16 17:39
0
雪    币: 236
活跃值: (155)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
004516DB                 ASCII   "Unit1"
004516E0                  DB      00
004516E1                  DB      00
004516E2                  MOV     EAX, EAX
004516E4                  PUSH    EBX
004516E5                  MOV     EBX, EAX
004516E7                  MOV     EDX, 7D0  <---- 就是这里了
004516EC                  MOV     EAX, DWORD PTR [EBX+2F0]
004516F2                  CALL    0045101C                           ;  Project1.0045101C
004516F7                  MOV     EAX, DWORD PTR [EBX+2F0]
004516FD                  CALL    004510C8                           ;  Project1.004510C8
00451702                  POP     EBX                                ;  kernel32.77E7CA90
00451703                  RETN
00451704                  PUSH    EBP
00451705                  MOV     EBP, ESP
2004-11-16 18:17
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
To  nOpnOp
你的方法看起来好象没有问题,但是其实是不能通用
上面的那个CreakMe里的端口是我动态赋值的,但是如果直接在控件中设置Port属性等于2000的话,那你的办法就失灵了!
2004-11-16 19:54
0
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
10
最初由 redphoenix 发布
To nOpnOp
你的方法看起来好象没有问题,但是其实是不能通用
上面的那个CreakMe里的端口是我动态赋值的,但是如果直接在控件中设置Port属性等于2000的话,那你的办法就失灵了!


不过你如果按照《Class逆向》(在外文区)里的方法,按照我的思路是可以得到地址的。而且不需要调试。

当然,还有相当长的路要走。
2004-11-16 20:54
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
to firstrose
恩,好的,我去看看你说的那个《Class逆向》
谢谢交流啊,大家共同提高,呵呵!:D
2004-11-17 09:23
0
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
12
!@#$用IDA用得傻掉了,居然没有想到用dede!

你那程序用dede分析,在button的click里有

004516E4   53                     push    ebx
004516E5   8BD8                   mov     ebx, eax
004516E7   BAD0070000             mov     edx, $000007D0

* Reference to control SS : TServerSocket
|
004516EC   8B83F0020000           mov     eax, [ebx+$02F0]

* Reference to: ScktComp.TAbstractSocket.SetPort(TAbstractSocket;Integer);
|
004516F2   E825F9FFFF             call    0045101C

* Reference to control SS : TServerSocket
|
004516F7   8B83F0020000           mov     eax, [ebx+$02F0]

* Reference to: ScktComp.TAbstractSocket.Open(TAbstractSocket);
|
004516FD   E8C6F9FFFF             call    004510C8
00451702   5B                     pop     ebx
00451703   C3                     ret

就是004516E7了。

!@#$……
2004-11-17 10:27
0
游客
登录 | 注册 方可回帖
返回
//