且行且远
分类: 逆向手札 由 ssfighter 于 2007年2月10日 发表

对于Flashget的最大连接数,网上有很多修改的补丁,在这里我希望用一种新的方法来控制最大连接数,就是通过一个ini文件来控制,为此需要对Flashget.exe文件做一些修改,先找到控制最大连接数的地方,ASCII搜索字符串Max Parallel Num来到41A46D,但这里地方太小,不足以写足够的代码,前后找找能写代码的地方,又懒得新建一个新区段,那就在PE文件头里写吧,虽然这种方法很不好,但是仅仅作为研究来用的话也无所谓了,不过PE文件头默认是不允许进行写操作的,所以不对把这里作为临时的空间来存储字符,把 41A46D处的代码该成jmp 400EFF,然后再400EFF处写入如下代码:


00400EFF 60 pushad ; 保护寄存器
00400F00 BE AC505200 mov esi, 005250AC
00400F05 68 04010000 push 104
00400F0A 56 push esi
00400F0B 6A 00 push 0
00400F0D FF15 DCC34E00 call [<&KERNEL32.GetModuleFileNameA>] ; kernel32.GetModuleFileNameA
00400F13 85C0 test eax, eax
00400F15 75 07 jnz short 00400F1E
00400F17 B8 0A000000 mov eax, 0A ; 如获取路径失败则默认最大连接数为10
00400F1C EB 2F jmp short 00400F4D
00400F1E 03F0 add esi, eax
00400F20 4E dec esi
00400F21 803E 5C cmp byte ptr [esi], 5C ; '\'
00400F24 ^ 75 FA jnz short 00400F20
00400F26 46 inc esi
00400F27 C606 00 mov byte ptr [esi], 0 ; 截取字符串
00400F2A 68 000D4000 push 00400D00 ; ASCII "flashget.ini"
00400F2F 68 AC505200 push 005250AC ; 程序路径
00400F34 FF15 A4C34E00 call [<&KERNEL32.lstrcatA>] ; kernel32.lstrcatA
00400F3A 50 push eax
00400F3B 6A 0A push 0A
00400F3D 68 100D4000 push 00400D10 ; ASCII "MaxParallelNum"
00400F42 68 200D4000 push 00400D20 ; ASCII "Flashget"
00400F47 FF15 C8C34E00 call [<&KERNEL32.GetPrivateProfileIntA>; kernel32.GetPrivateProfileIntA
00400F4D A3 AC505200 mov [5250AC], eax
00400F52 61 popad
00400F53 FF35 AC505200 push dword ptr [5250AC]
00400F59 68 687E5100 push 00517E68 ; ASCII "Max Parallel Num"
00400F5E 68 24675100 push 00516724 ; ASCII "General"
00400F63 8BCE mov ecx, esi
00400F65 8986 E8000000 mov [esi+E8], eax
00400F6B E8 8D520D00 call 004D61FD
00400F70 83F8 32 cmp eax, 32 ; 设定最大连接数最大不超过50
00400F73 8986 CC010000 mov [esi+1CC], eax
00400F79 7E 0A jle short 00400F85
00400F7B C786 CC010000 3>mov dword ptr [esi+1CC], 32
00400F85 - E9 11950100 jmp 0041A49B

并在400D00处写入如下字符:
00400D00 66 6C 61 73 68 67 65 74 2E 69 6E 69 00 00 00 00 flashget.ini....
00400D10 4D 61 78 50 61 72 61 6C 6C 65 6C 4E 75 6D 00 00 MaxParallelNum..
00400D20 46 6C 61 73 68 67 65 74 00 00 00 00 00 00 00 00 Flashget........

即可。并新建一个flashget.ini文件,内容如下:
[Flashget]
MaxParallelNum=35

这样,就可以达到通过文件来设定的目的了,当然,这只是一种PEDIY思路而已。
注:以上PEDIY是对Flashget 1.73为例进行的。



发表评论

昵称:  (必须)
邮件:  (必须)
网址: 
评论: