首页
社区
课程
招聘
[旧帖] [求助]关于一个拨号上网软件的修改,我思路有点卡壳了 0.00雪花
发表于: 2009-3-23 12:42 4395

[旧帖] [求助]关于一个拨号上网软件的修改,我思路有点卡壳了 0.00雪花

2009-3-23 12:42
4395
这个是学校上网的一个程序。
主程序是connect.exe。
运行该程序之后会在程序所在目录生成:
User.conf      用以保存用户名和密码,及连接的IP
UserLog.txt   用以保存登陆日志
info.conf        暂时未发现用法。

然后输入密码和账户之后点击连接按钮之后会在文件目录生成(准确地说是从网络上下载下来)change.dll文件。

用c32asm查看之后dll里保存了关于使用代理或者是多块网卡等出错的信息。
其中的关键代码如下:
::1000597C::  75 0F                    JNZ SHORT 1000598D                      \:JMPDOWN
::1000597E::  B8 20000000              MOV EAX,20                              
::10005983::  68 3C9C0010              PUSH 10009C3C                               \->: 监测到ARP异常!
::10005988::  E9 8C000000              JMP 10005A19                            \:JMPDOWN
::1000598D::  83F8 04                  CMP EAX,4                               \:BYJMP JmpBy:1000597C,
::10005990::  75 0F                    JNZ SHORT 100059A1                      \:JMPDOWN
::10005992::  B8 21000000              MOV EAX,21                              
::10005997::  68 2C9C0010              PUSH 10009C2C                               \->: 监测到端口异常!
::1000599C::  E9 78000000              JMP 10005A19                            \:JMPDOWN
::100059A1::  85C0                     TEST EAX,EAX                            \:BYJMP JmpBy:10005990,
::100059A3::  0F85 8A000000            JNZ 10005A33                            \:JMPDOWN
::100059A9::  3905 3C050110            CMP [1001053C],EAX                      
::100059AF::  8B35 28900010            MOV ESI,[10009028]                      
::100059B5::  75 29                    JNZ SHORT 100059E0                      \:JMPDOWN
::100059B7::  50                       PUSH EAX                                
::100059B8::  6A 04                    PUSH 4                                  
::100059BA::  50                       PUSH EAX                                
::100059BB::  50                       PUSH EAX                                
::100059BC::  A1 44050110              MOV EAX,[10010544]                      
::100059C1::  50                       PUSH EAX                                
::100059C2::  68 50360010              PUSH 10003650                               \->: jh0?
::100059C7::  E8 

C4160000              CALL 10007090                           \:JMPDOWN    >>>: MFC80.DLL:MFC80:NoName0029
::100059CC::  A3 3C050110              MOV [1001053C],EAX                      
::100059D1::  8B48 2C                  MOV ECX,[EAX+2C]                        
::100059D4::  51                       PUSH ECX                                
::100059D5::  FFD6                     CALL ESI                                
::100059D7::  833D 14050110 00         CMP DWORD PTR [10010514],0              
::100059DE::  75 53                    JNZ SHORT 10005A33                      \:JMPDOWN
::100059E0::  833D 40050110 00         CMP DWORD PTR [10010540],0              \:BYJMP JmpBy:100059B5,
::100059E7::  75 4A                    JNZ SHORT 10005A33                      \:JMPDOWN
::100059E9::  8B15 44050110            MOV EDX,[10010544]                      
::100059EF::  6A 00                    PUSH 0                                  
::100059F1::  6A 04                    PUSH 4                                  
::100059F3::  6A 00                    PUSH 0                                  
::100059F5::  6A 00                    PUSH 0                                  
::100059F7::  52                       PUSH EDX                                
::100059F8::  68 00470010              PUSH 10004700                               \->: 冹\x08UVh\x0C?
::100059FD::  

E8 8E160000              CALL 10007090                           \:JMPDOWN    >>>: MFC80.DLL:MFC80:NoName0029
::10005A02::  A3 40050110              MOV [10010540],EAX                      
::10005A07::  8B40 2C                  MOV EAX,[EAX+2C]                        
::10005A0A::  50                       PUSH EAX                                
::10005A0B::  FFD6                     CALL ESI                                
::10005A0D::  EB 24                    JMP SHORT 10005A33                      \:JMPDOWN
::10005A0F::  B8 1F000000              MOV EAX,1F                              \:BYJMP JmpBy:1000596A,10005973,
::10005A14::  68 1C9C0010              PUSH 10009C1C                               \->: 监测到使用代理!
::10005A19::  6A 64                    PUSH 64                                 \:BYJMP JmpBy:10005988,1000599C,
::10005A1B::  68 3AC90010              PUSH 1000C93A                           
::10005A20::  A3 40040110              MOV [10010440],EAX                      
::10005A25::  A3 08C90010              MOV [1000C908],EAX                      
::10005A2A::  FF15 40920010            CALL [10009240]                             >>>: MSVCR80.DLL:strcpy_s
::10005A30::  83C4 0C                  ADD ESP,C                               
::10005A33::  8B8424 C8000000          MOV EAX,[ESP+C8]                        \:BYJMP
::10005A3A::  B9 2C000000              MOV ECX,2C                              
::10005A3F::  8BF8                     MOV EDI,EAX                             
::10005A41::  BE 00C90010              MOV ESI,1000C900                            >>>: EXPORT:?

F_ReturnData@@3UReturnData@@A
::10005A46::  F3                       REP MOVS DWORD PTR ES:[EDI],DWORD PTR [ESI]
::10005A47::  A5                       MOVS DWORD PTR ES:[EDI],DWORD PTR [ESI] 
::10005A48::  8B8C24 C0000000          MOV ECX,[ESP+C0]                        
::10005A4F::  5F                       POP EDI                                 
::10005A50::  5E                       POP ESI                                 
::10005A51::  5D                       POP EBP                                 
::10005A52::  5B                       POP EBX                                 
::10005A53::  33CC                     XOR ECX,ESP                             
::10005A55::  E8 55190000              CALL 100073AF                           \:JMPDOWN
::10005A5A::  81C4 B4000000            ADD ESP,B4                              
::10005A60::  C3                       RETN   

其中出错之后处理的代码是:
JMP 10005A19 

所以我的想法是:修改10005A19 处的代码,改成JMP 10005A60使其直接跳转到10005A60处的RETN。

现在第一个问题是:
这样的方法可以实现么?可行否??

然后修改后进入调试,又出现第二个问题。
程序在点击连接之后,会自动与网络连接查找网络上的change.dll文件,校验两者是否相同,不同则重新下载。
这样的话即使修改了change.dll文件还是会在连接的时候又被替换回来,那就相当于没有修改。

那我的思路就是从connect.exe 里查找到比对的代码,不过可惜的是对汇编的代码不熟悉,所以没成功。
那我换一个思路,从CreateFileA这个api上入手。
在Ollydbg中输入bp CreateFileA之后一路F9找到出现change.dll的时候,结果是已经跳到了kernel32的模块里。
这个要怎么找到调用的代码呢?

请大大们帮个忙指点一二,谢谢了。
具体该怎么操作,要修改的是哪部分的代码,麻烦说明一下。

附件里的东西是connect.exe和change.dll的文件。

PS:暂时还没有看到connect.exe是否是会联网之后自动更新替换。

http://rapidshare.de/files/46134978/MIXCLIENT.rar.html
http://www.box.net/shared/y8ami8o5re

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
bp CreateFileA就是断在kernel32里面,按Ctrl+F9可以回到CreateFileA的下一句。按你的说法应该就是找到替换的部分,跳过去就行了。不过可以先试一下别的办法,比如把change.dll设成只读,可执行,让它不能替换不行么?
2009-3-23 13:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
设置过权限,提示文件找不到。
汗死。。。
2009-3-23 23:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
刚才Olly了一下,发现第一次Ctrl+F9依旧在KERNEL32模块里,再一次Ctrl+F9到MFC模块,汗。继续。。。。
2009-3-23 23:14
0
雪    币: 281
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
程序在点击连接之后,会自动与网络连接查找网络上的change.dll文件,校验两者是否相同,不同则重新下载。

-----------------------------
找到下载dll的url
可以修改本地的host ..   把URL指向本地..
2009-3-26 11:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好像不是一个URL的,而是直接用的是IP地址直接连的,HOST貌似改了没用。。。
2009-6-12 20:40
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
看看有没有内存校验。没有的话 挂一个内存补丁。在内存里改change.dll
或者找到计算change.dll校验的地方改之。
再或者改要校验的文件名。备2个hange.dll一个改过的一个用。
。。。。。
方法多多.

如果校验的是内存模块和网络上hange.dll的值,那你只有把校验废之了。
2009-6-12 22:46
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
我有个傻逼的做法:
找的 ip 串 :改成127.0.0.1
本机建个web服务器,iis apache 都行,放上你改过的 .dll 一运行程序 就下载你本机的 .dll !
哈哈!左拐左拐,好像是个圈哦!
2009-6-13 05:20
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
貌似8楼的方法可行
2009-6-13 11:16
0
游客
登录 | 注册 方可回帖
返回
//