看雪软件安全论坛



返回   看雪软件安全论坛 > 软件安全 > 『软件调试论坛』

『软件调试论坛』 本版讨论的主题包括:调试逆向、系统底层、漏洞分析、商业保护、病毒木马、虚拟机、.NET平台、安全新闻等

Expired Thread 该主题: "【原创】Dll注入NetTransport 2.25.337" 因在一年内没有任何回复而自动关闭。
如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。

发表新主题 关闭主题
己收入精华集  
主题工具 显示模式
本站声明:看雪论坛文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者信息及本声明!
wynney
级别:16 | 在线时长:354小时 | 升级还需:3小时

wynney 的头像

高级会员
高级会员

资 料:
注册日期: Oct 2004
帖子: 1,060 wynney 品行端正
精华: 25
现金: 22 Kx
1 旧 默认 【原创】Dll注入NetTransport 2.25.337
wynney 当前离线

标 题: 【原创】Dll注入NetTransport 2.25.337
作 者: wynney
时 间: 2006-10-31,12:31:43
链 接: http://bbs.pediy.com/showthread.php?t=34096

【文章标题】: Dll注入NetTransport 2.25.337
【文章作者】: wynney
【软件名称】: NetTransport 2.25.337 Unicode
【软件大小】: 3.46M
【下载地址】: 打包下载
【编写语言】: Microsoft Visual C++ 6.0
【作者声明】: 冲冲看雪的气氛
--------------------------------------------------------------------------------
【详细过程】
  前言:前天看到NetTransport出了新版,而且是Unicode版本的,遂下来看了看,于是就有了下文
  
  1、未注册,启动就有注册提示框
  2、未注册,使用过程中不定时弹出注册框
  
  一、定位注册框
  
  F7配合F8很容易就找到掉用注册框的地方
  
  00443EB9     E8 4272FFFF        call NetTrans.0043B100            ; 如果是的话那这里就是关键Call了
  00443EBE     8B4C24 18          mov ecx,dword ptr ss:[esp+18]
  00443EC2     8B41 F8            mov eax,dword ptr ds:[ecx-8]      ; [ecx-8]=[728776CC],记住他!
  00443EC5     85C0               test eax,eax
  00443EC7     75 78              jnz short NetTrans.00443F41       ; 看看/跳过的话那不就不用注册了?
  00443EC9     6A 00              push 0
  00443ECB     8D8C24 50010000    lea ecx,dword ptr ss:[esp+150]
  00443ED2     E8 79860200        call NetTrans.0046C550
  00443ED7     8D8C24 4C010000    lea ecx,dword ptr ss:[esp+14C]
  00443EDE     C68424 04100000 0B mov byte ptr ss:[esp+1004],0B
  00443EE6     E8 F72C0800        call <jmp.&MFC42u.#2506>          ; 调用注册框
  00443EEB     3D 55050000        cmp eax,555
  
  我们发现[ecx-8]=[728776CC]=1才可以跳过去
  
  小插曲:在00443EB9下F2,再F9发现程序直接退出,图省事,不想追其原因,改在00443EB9下硬件执行断点吧
  
  重载,F9,中断在00443EB9,F7,来看看几段代码吧
  
  0043B124     57                 push edi
  0043B125     8BCE               mov ecx,esi
  0043B127     E8 B0BD0800        call <jmp.&MFC42u.#2606>      ; 看看下面的注册表。。
  0043B12C     8BBC24 90000000    mov edi,dword ptr ss:[esp+90] ; 呵呵,这个Call还真是关键哦
  0043B133     85FF               test edi,edi
  0043B135     74 06              je short NetTrans.0043B13D
  0043B137     C707 00000000      mov dword ptr ds:[edi],0
  0043B13D     6A 00              push 0
  0043B13F     68 50534F00        push NetTrans.004F5350        ; UNICODE "Key"
  0043B144     68 28534F00        push NetTrans.004F5328        ; UNICODE "SOFTWARE\Xi\NetXfer"
  0043B149     8D4424 20          lea eax,dword ptr ss:[esp+20]
  0043B14D     68 02000080        push 80000002
  0043B152     50                 push eax
  0043B153     B9 38B04F00        mov ecx,NetTrans.004FB038
  0043B158     E8 D39B0000        call NetTrans.00444D30        ; 看到了吧,我们找对了
  0043B15D     6A 00              push 0
  0043B15F     68 14534F00        push NetTrans.004F5314        ; UNICODE "Signature"
  0043B164     68 28534F00        push NetTrans.004F5328        ; UNICODE "SOFTWARE\Xi\NetXfer"
  0043B169     8D4C24 1C          lea ecx,dword ptr ss:[esp+1C]
  0043B16D     68 02000080        push 80000002
  0043B172     51                 push ecx
  0043B173     B9 38B04F00        mov ecx,NetTrans.004FB038
  
  
  0043B2A8     8B41 F8            mov eax,dword ptr ds:[ecx-8]
  0043B2AB     85C0               test eax,eax
  0043B2AD     0F85 AA000000      jnz NetTrans.0043B35D
  0043B2B3     8D5424 3C          lea edx,dword ptr ss:[esp+3C]
  0043B2B7     8D8424 8C000000    lea eax,dword ptr ss:[esp+8C]
  0043B2BE     52                 push edx
  0043B2BF     8D8C24 94000000    lea ecx,dword ptr ss:[esp+94]
  0043B2C6     50                 push eax
  0043B2C7     51                 push ecx
  0043B2C8     E8 CBBA0800        call <jmp.&MFC42u.#925>           ; 这里又是什么?
  0043B2CD     8D9424 90000000    lea edx,dword ptr ss:[esp+90]
  0043B2D4     68 00534F00        push NetTrans.004F5300            ; UNICODE ".key.kqm"
  0043B2D9     8D4424 24          lea eax,dword ptr ss:[esp+24]
  0043B2DD     52                 push edx
  0043B2DE     50                 push eax
  0043B2DF     C68424 90000000 05 mov byte ptr ss:[esp+90],5
  0043B2E7     E8 ACBA0800        call <jmp.&MFC42u.#925>
  0043B2EC     8B18               mov ebx,dword ptr ds:[eax]
  0043B2EE     8D8C24 90000000    lea ecx,dword ptr ss:[esp+90]
  0043B2F5     68 F4524F00        push NetTrans.004F52F4            ; UNICODE ".key"
  0043B2FA     8D5424 20          lea edx,dword ptr ss:[esp+20]     ; 看样子像是注册成功后的key备份
  
  
  0043B35F     8B42 F8            mov eax,dword ptr ds:[edx-8]
  0043B362     85C0               test eax,eax
  0043B364     75 22              jnz short NetTrans.0043B388
  0043B366     57                 push edi
  0043B367     56                 push esi                          ; key的名称
  0043B368     68 E4524F00        push NetTrans.004F52E4            ; UNICODE "NT2REG"
  0043B36D     8D4C24 30          lea ecx,dword ptr ss:[esp+30]
  0043B371     E8 BA210800        call NetTrans.004BD530
  0043B376     50                 push eax
  0043B377     8D4C24 40          lea ecx,dword ptr ss:[esp+40]
  
  
  0043B3B5     8B41 F8            mov eax,dword ptr ds:[ecx-8]
  0043B3B8     85C0               test eax,eax
  0043B3BA     0F85 AA000000      jnz NetTrans.0043B46A
  0043B3C0     8D9424 8C000000    lea edx,dword ptr ss:[esp+8C]
  0043B3C7     68 E4524F00        push NetTrans.004F52E4            ; UNICODE "NT2REG"
  0043B3CC     8D8424 94000000    lea eax,dword ptr ss:[esp+94]
  0043B3D3     52                 push edx
  0043B3D4     50                 push eax
  0043B3D5     E8 BEB90800        call <jmp.&MFC42u.#925>
  0043B3DA     8D8C24 90000000    lea ecx,dword ptr ss:[esp+90]
  0043B3E1     68 00534F00        push NetTrans.004F5300            ; UNICODE ".key.kqm"
  0043B3E6     8D5424 20          lea edx,dword ptr ss:[esp+20]     ; 注册表备份
  0043B3EA     51                 push ecx
  0043B3EB     52                 push edx
  0043B3EC     C68424 90000000 08 mov byte ptr ss:[esp+90],8
  0043B3F4     E8 9FB90800        call <jmp.&MFC42u.#925>
  0043B3F9     8B18               mov ebx,dword ptr ds:[eax]
  0043B3FB     8D8424 90000000    lea eax,dword ptr ss:[esp+90]     ; 前提是要注册成功了才有
  0043B402     68 F4524F00        push NetTrans.004F52F4            ; UNICODE ".key"
  0043B407     8D4C24 24          lea ecx,dword ptr ss:[esp+24]
  0043B40B     50                 push eax
  
  
  看过上面3小段大家就应该知道,这里是关键
  
  提示:看上面看似关键的跳转不是受[ecx-8]就是受[edx-8]的控制,似乎是有关联的[是与不是分析便知]
  
  二、借助MFC42u.DLL注入
  
  接下来就是慢慢分析了
  
  0043B127     E8 B0BD0800        call <jmp.&MFC42u.#2606>          ; F7
  
  004C6EDC   - FF25 88524D00      jmp dword ptr ds:[<&MFC42u.#2606>>; MFC42u.#2606,F8
  
  
  727A49E4 M>  8B01               mov eax,dword ptr ds:[ecx]        ; 来到这里,发现正处于MFC42u.DLL的领空
  727A49E6     8378 F8 00         cmp dword ptr ds:[eax-8],0        ; ds:[728776CC]=00000000
  727A49EA     74 15              je short MFC42u.727A4A01          ; 好咯,看到上面就应该灵机一动了
  727A49EC     8378 F4 00         cmp dword ptr ds:[eax-C],0        ; 到system32目录下找到MFC42u.DLL
  727A49F0     7C 05              jl short MFC42u.727A49F7          ; 把它拷贝到程序目录
  727A49F2   ^ E9 B5FFFFFF        jmp MFC42u.#5509                  ; 关掉OD,重新载入,以便于程序调用的是本目录下的MFC42u.DLL
  727A49F7     68 F4D68772        push offset MFC42u.#6408
  727A49FC     E8 91FDFFFF        call MFC42u.#861
  727A4A01     C3                 retn
  
  拷贝MFC42u.DLL到程序目录后,OD载入程序,F9跑一下,Alt+E,看看程序调用的是否是本目录下的MFC42u.DLL
  
  OK,一切准备妥当,Patch这个MFC42u.DLL吧,Patch它的目的是为了使[ecx-8]=[728776CC]=1,[728776C8]=00000001,在MFC42u.DLL找块空白代码
  我这里找的是72843C71(找不会被重定位的空白)
  
  727A49E4 M>  8B01               mov eax,dword ptr ds:[ecx]
  727A49E6     E9 86F20900        jmp MFC42u.72843C71               ; 跳向Patch位置
  727A49EB     90                 nop
  727A49EC     8378 F4 00         cmp dword ptr ds:[eax-C],0        ; [eax-0C]也必须=1
  727A49F0     7C 05              jl short MFC42u.727A49F7
  727A49F2   ^ E9 B5FFFFFF        jmp MFC42u.#5509
  727A49F7     68 F4D68772        push offset MFC42u.#6408
  727A49FC     E8 91FDFFFF        call MFC42u.#861
  727A4A01     C3                 retn
  
  
  72843C71     C740 F8 01000000   mov dword ptr ds:[eax-8],1        ; 先赋值1
  72843C78     8378 F8 00         cmp dword ptr ds:[eax-8],0        ; 原代码挪下
  72843C7C   ^ 0F84 7F0DF6FF      je MFC42u.727A4A01                ; 原代码挪下
  72843C82     C740 F4 01000000   mov dword ptr ds:[eax-C],1        ; 赋值1
  72843C89   ^ E9 5D0DF6FF        jmp MFC42u.727A49EB               ; 跳回原代码执行流程
  
  
  C7 40 F8 01 00 00 00 83 78 F8 00 0F 84 7F 0D F6 FF C7 40 F4 01 00 00 00 E9 5D 0D F6 FF
  
  复制修改--》覆盖本目录下的MFC42u.DLL
  
  再运行NetTransport看看,启动时的注册框没了,关于里面显示:注册给,因为注册表里没任何信息嘛,关于里的注册钮也变成灰色了
  经过测试[挂了几个小时],也没弹出那讨厌的注册框了:0  工作完成,谢谢观赏。
  
  
  
--------------------------------------------------------------------------------------
【经验总结】
  1、喜欢外挂的朋友可以把这个思路转移到破解外挂中
  2、文中分析不够,这是体力活也是基本功,本问旨在介绍思路
  3、个人愚见,Dll注入大致可分为:现成的Dll注入[系统Dll和程序自带的Dll]和自己写的Dll
  4、呵呵,不知道这算不算是注入了,瞎写啦:)
--------------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年10月31日

The download link is: http://www.sendspace.com/file/lmherq


Patch了的MFC42u.dll也在包内:0,有这个DLL在就不需要注册了,如果想看看未注册的效果,就把MFC42u.dll改成其他名字

http://bbs.pediy.com/upload/2006/4/image/1.png_052.png 

如有兴趣你可继续分析把名字patch进去~

此帖于 2006-10-31 21:23:17 被 wynney 最后编辑
回复时引用此帖 返回顶端
skylly
级别:15 | 在线时长:313小时 | 升级还需:7小时级别:15 | 在线时长:313小时 | 升级还需:7小时级别:15 | 在线时长:313小时 | 升级还需:7小时级别:15 | 在线时长:313小时 | 升级还需:7小时级别:15 | 在线时长:313小时 | 升级还需:7小时级别:15 | 在线时长:313小时 | 升级还需:7小时

skylly 的头像

热心会员
热心会员

资 料:
注册日期: Nov 2005
帖子: 1,039 skylly 品行端正
精华: 4
现金: 218 Kx
2 旧 2006-10-31, 12:53:50 默认
skylly 当前离线

如此好贴怎能不顶,
PS: 为了脱壳,我把user32.dll,kernel32.dll都打过补丁,不过不敢放到system32下面,怕系统崩溃

回复时引用此帖 返回顶端
ViperDodge
级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时

普通会员
普通会员

资 料:
注册日期: Sep 2004
帖子: 166 ViperDodge 品行端正
精华: 1
现金: 242 Kx
3 旧 2006-10-31, 13:00:22 默认
ViperDodge 当前离线

  厉害,直接修改MFC42u.dll来用
NetTransport 改用静态编译才得了 

回复时引用此帖 返回顶端
小剑
级别:3 | 在线时长:23小时 | 升级还需:9小时级别:3 | 在线时长:23小时 | 升级还需:9小时级别:3 | 在线时长:23小时 | 升级还需:9小时

初级会员
初级会员

资 料:
注册日期: Apr 2004
帖子: 303 小剑 品行端正
精华: 0
现金: 200 Kx
4 旧 2006-10-31, 13:35:05 默认
小剑 当前离线

学习,厉害啊

回复时引用此帖 返回顶端
bfqyygy
级别:9 | 在线时长:124小时 | 升级还需:16小时级别:9 | 在线时长:124小时 | 升级还需:16小时级别:9 | 在线时长:124小时 | 升级还需:16小时

普通会员
普通会员

资 料:
注册日期: Jul 2005
帖子: 515 bfqyygy 品行端正
精华: 1
现金: 202 Kx
5 旧 2006-10-31, 14:58:55 默认
bfqyygy 当前离线

确实厉害!!学习注入!!

回复时引用此帖 返回顶端
cxlrb
级别:6 | 在线时长:64小时 | 升级还需:13小时级别:6 | 在线时长:64小时 | 升级还需:13小时级别:6 | 在线时长:64小时 | 升级还需:13小时

cxlrb 的头像

中级会员
中级会员

资 料:
注册日期: Nov 2005
帖子: 921 cxlrb 品行端正
精华: 5
现金: 203 Kx
6 旧 2006-10-31, 15:49:09 默认
cxlrb 当前离线

学习,这样也行,到时候系统dll都打了补丁,微软的程序反倒用不了了

回复时引用此帖 返回顶端
wynney
级别:16 | 在线时长:354小时 | 升级还需:3小时

wynney 的头像

高级会员
高级会员

资 料:
注册日期: Oct 2004
帖子: 1,060 wynney 品行端正
精华: 25
现金: 22 Kx
7 旧 2006-10-31, 15:59:26 默认
wynney 当前离线

引用:
最初由 cxlrb 发布
学习,这样也行,到时候系统dll都打了补丁,微软的程序反倒用不了了 
引用:
最初由 skylly 发布
如此好贴怎能不顶,
PS: 为了脱壳,我把user32.dll,kernel32.dll都打过补丁,不过不敢放到system32下面,怕系统崩溃 
汗~~都说了,把这个DLL拷贝到程序目录,程序自然会自动调用这个 
对系统没任何问题,又不是让系统来调用这个DLL
系统更新 更新的是system里的dll,又不会更新到拷贝到目录的dll

引用:
最初由 大师兄 发布
为什么要patch mfc42u.dll?而不直接patch主程序呢? 
那种方便用那种

引用:
最初由 ljy3282393 发布
楼主:能否详细说说这个过程? 
那些是基本功 

引用:
最初由 suoxinliang 发布
这个不用补丁吧,在语言文件里[About Box]段的61419=注册给\n%s把n%s去掉换成自己想要显示的注册名就可以了 
呵呵 我说的Patch 是技术上的研究
你说的办法当然是可以的 暗渡陈昌:)

此帖于 2006-10-31 21:37:31 被 wynney 最后编辑
回复时引用此帖 返回顶端
BlueT
级别:14 | 在线时长:266小时 | 升级还需:19小时级别:14 | 在线时长:266小时 | 升级还需:19小时级别:14 | 在线时长:266小时 | 升级还需:19小时级别:14 | 在线时长:266小时 | 升级还需:19小时级别:14 | 在线时长:266小时 | 升级还需:19小时

普通会员
普通会员

资 料:
注册日期: Oct 2004
帖子: 305 BlueT 品行端正
精华: 2
现金: 348 Kx
8 旧 2006-10-31, 17:03:31 默认
BlueT 当前离线

引用:
最初由 skylly 发布
如此好贴怎能不顶,
PS: 为了脱壳,我把user32.dll,kernel32.dll都打过补丁,不过不敢放到system32下面,怕系统崩溃 
什么时候我将Windows补丁成我的就好了
   

回复时引用此帖 返回顶端
playx
级别:9 | 在线时长:132小时 | 升级还需:8小时级别:9 | 在线时长:132小时 | 升级还需:8小时级别:9 | 在线时长:132小时 | 升级还需:8小时

playx 的头像

普通会员
普通会员

资 料:
注册日期: Nov 2005
帖子: 405 playx 品行端正
精华: 1
现金: 193 Kx
9 旧 2006-10-31, 17:26:02 默认
playx 当前离线

引用:
最初由 wynney 发布
汗~~都说了,把这个DLL拷贝到程序目录,程序自然会自动调用这个 
对系统没任何问题,又不是让系统来调用这个DLL
系统更新 更新的是system里的dll,又不会更新到拷贝到目录的dll 
 又学了一招~。。。。谢谢!

回复时引用此帖 返回顶端
Xacs
级别:10 | 在线时长:149小时 | 升级还需:16小时级别:10 | 在线时长:149小时 | 升级还需:16小时级别:10 | 在线时长:149小时 | 升级还需:16小时级别:10 | 在线时长:149小时 | 升级还需:16小时

初级会员
初级会员

资 料:
注册日期: Jun 2004
帖子: 92 Xacs 品行端正
精华: 0
现金: 209 Kx
10 旧 2006-10-31, 19:55:01 默认
Xacs 当前离线

好文。

回复时引用此帖 返回顶端
wenglingok
级别:3 | 在线时长:31小时 | 升级还需:1小时级别:3 | 在线时长:31小时 | 升级还需:1小时级别:3 | 在线时长:31小时 | 升级还需:1小时

wenglingok 的头像

高级会员
高级会员

资 料:
注册日期: Nov 2004
帖子: 675 wenglingok 品行端正
精华: 26
现金: 207 Kx
11 旧 2006-10-31, 20:00:17 默认
wenglingok 当前离线

这个方法现在好像比较流行啊!

回复时引用此帖 返回顶端
cyto
级别:7 | 在线时长:80小时 | 升级还需:16小时级别:7 | 在线时长:80小时 | 升级还需:16小时级别:7 | 在线时长:80小时 | 升级还需:16小时级别:7 | 在线时长:80小时 | 升级还需:16小时

高级会员
高级会员

资 料:
注册日期: Sep 2005
帖子: 622 cyto 品行端正
精华: 31
现金: 200 Kx
12 旧 2006-10-31, 20:36:30 默认
cyto 当前离线

等把window都补了,那就你自己的OS了.

回复时引用此帖 返回顶端
大师兄
级别:3 | 在线时长:26小时 | 升级还需:6小时级别:3 | 在线时长:26小时 | 升级还需:6小时级别:3 | 在线时长:26小时 | 升级还需:6小时

大师兄 的头像

初级会员
初级会员

资 料:
注册日期: Jan 2006
帖子: 90 大师兄 品行端正
精华: 0
现金: 200 Kx
13 旧 2006-10-31, 20:43:07 默认
大师兄 当前离线

为什么要patch mfc42u.dll?而不直接patch主程序呢?

回复时引用此帖 返回顶端
ljy3282393
级别:1 | 在线时长:6小时 | 升级还需:6小时

ljy3282393 的头像

普通会员
普通会员

资 料:
注册日期: Nov 2004
帖子: 426 ljy3282393 品行端正
精华: 1
现金: 200 Kx
15 旧 2006-10-31, 20:52:44 默认 Re: 【原创】Dll注入NetTransport 2.25.337
ljy3282393 当前离线

引用:
F7配合F8很容易就找到掉用注册框的地方 
楼主:能否详细说说这个过程?

回复时引用此帖 返回顶端
发表新主题 关闭主题

书签
Expired Thread 该主题: "【原创】Dll注入NetTransport 2.25.337" 因在一年内没有任何回复而自动关闭。
如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。


主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子
论坛启用 BB 代码
论坛启用 表情符号
论坛跳转


所有时间均为北京时间。现在的时间是 22:11:06


©2000-2010 PEdiy.com All rights reserved.By PEDIY
Powered by vBulletin ®Jelsoft Enterprises Ltd. 增强包制作PHP源动力.界面支持standme Studio.