-
-
再谈Dll注入NetTransport 2.25.337[原创]
-
发表于:
2006-11-27 20:09
8248
-
再谈Dll注入NetTransport 2.25.337[原创]
【详细过程】
写在前面:看了wynney大大的《Dll注入NetTransport 2.25.337 》一文,觉得深受启发!不过wynney在定位注册框的时候写得比较简略,只是说“F7配合F8很容易就找到掉用注册框的地方”。我问他能不能详细说说这个过程,wynney说这个是基本功!其实,OD有一个自动跟踪的功能,用这个功能在定位注册框、NAG等对话框时非常有用和简便。只是不知为什么,我见到现在很少有人提到这个功能,于是便有了本文,说得不对的地方还请各位指正!
OD加载NetTransport 2.25.337后,CTRL+F8 ;让OD自动跟踪!
7C935C93 5E pop esi
7C935C94 F7FE idiv esi
7C935C96 85D2 test edx, edx ;稍等一会后OD停在这里!
7C935C98 75 32 jnz short 7C935CCC
7C935C9A 66:8B71 02 mov si, [ecx+2]
7C935C9E 53 push ebx
这时由于主程序(NetTransport)还没有运行起来,故继续CTRL+F8 第二次:
00443EA7 . 6A 00 push 0 ; /Arg2 = 00000000
00443EA9 . 50 push eax ; |Arg1
00443EAA . 8D8C24 A40000>lea ecx, [esp+A4] ; |
00443EB1 . C68424 0C1000>mov byte ptr [esp+100C], 0A ; |
00443EB9 . E8 4272FFFF call 0043B100 \NetTrans.0043B100
00443EBE . 8B4C24 18 mov ecx, [esp+18]
00443EC2 . 8B41 F8 mov eax, [ecx-8] ;[ecx-8]=[728776CC],记住他
00443EC5 . 85C0 test eax, eax
00443EC7 . 75 78 jnz short 00443F41 ;看看/跳过的话那不就不用注册了?
00443EC9 . 6A 00 push 0
00443ECB . 8D8C24 500100>lea ecx, [esp+150]
00443ED2 . E8 79860200 call 0046C550
00443ED7 . 8D8C24 4C0100>lea ecx, [esp+14C]
00443EDE . C68424 041000>mov byte ptr [esp+1004], 0B
00443EE6 . E8 F72C0800 call <jmp.&MFC42u.#2506> ; 稍等一会后OD停在这里!
00443EEB . 3D 55050000 cmp eax, 555
00443EF0 . 75 13 jnz short 00443F05
00443EF2 . 8D5424 18 lea edx, [esp+18]
这时留意到主程序已经运行了(注册对话框已经弹出了)!
故00443EE6 . E8 F72C0800 call <jmp.&MFC42u.#2506> 这个call就是调用注册对话框的call!
我们发现[ecx-8]=[728776CC]=1才可以跳过去这个CALL!在此之后,wynney是通过追踪关键Call的方法来找到对程序打补丁的地方的。我认为不用这样大费周折的,只要直接找到程序哪里对[728776CC]进行赋值的不就可以了!为了找到程序对[728776CC]进行赋值的地方,于是CTRL+F2重新加载程序,然后对内存地址[728776CC]下硬件字节写入断点!F9运行
727A47E0 8B06 mov eax, [esi]
727A47E2 83C4 0C add esp, 0C
727A47E5 8978 F8 mov [eax-8], edi ;这里对内存地址[728776CC]进行赋值!
727A47E8 8B06 mov eax, [esi] ;OD即时中断在这里!
727A47EA 66:832403 00 and word ptr [ebx+eax], 0
于是我们把727A47E5 8978 F8 mov [eax-8], edi 改为 jmp 72843C71 ;跳向Patch位置
72843C71 C640 F8 01 mov byte ptr [728776CC], 1 ;对内存地址[728776CC]进行赋值1!
72843C75 8B06 mov eax, [esi] ;原代码挪下
72843C77 ^ E9 6E0BF6FF jmp 727A47EA ;跳回原代码执行流程
复制修改--》覆盖本目录下的MFC42u.DLL
再运行NetTransport看看,启动时的注册框没了,关于里面显示:注册给,因为注册表里没任何信息嘛,关于里的注册钮也变成灰色了
经过测试[挂了几个小时],也没弹出那讨厌的注册框了:0 工作完成,谢谢观赏。(这句话是抄wynney的!)
写在后面:本文旨在提供另一种破解思路,欢迎指正!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!