首页
社区
课程
招聘
我很想知道他的算法
发表于: 2004-10-12 22:42 4153

我很想知道他的算法

2004-10-12 22:42
4153
遥志代理服务器(CCProxy) V6.2
CCProxy是国内最流行、下载量最大的国产代理服务器软件。主要用于局域网内共享Modem、ADSL、宽带、专线、ISDN等代理上网。它具有

两项最主要功能:代理共享上网和客户端代理权限管理。只要局域网内有一台机器能够上网,其它机器就可通过这台机器上安装的

CCProxy代理共享上网。支持浏览器代理、邮件代理、游戏代理等等,可以控制客户端代理上网权限,针对不同用户合理安排上网时间,

监视上网记录,限制不同用户带宽流量,十种文字界面,设置简单,功能强大,适合中小企业共享代理上网。新版本6.2中又增加了服务

器IP绑定功能、详细的日志分析功能、加强过滤功能(端口屏蔽、站点过滤)、更强大的帐号管理功能(组管理、使用时间),还有远程

WEB方式帐号管理。
遥志软件联系方式: http://www.yaozhi.com
销售:010-82616330  010-82616331    技术支持:010-82613296     传真:010-82616305
http://www.skycn.com/soft/1058.html
========================================================================================================================
开始一看没有壳 本想算了的 但又一看 发现有MD5 所以就用OD看看了(全部在XP下)

先看字符参考 看看有没有有用的信息 搜索reg看看

地址=0040A757*a
反汇编=push    CCProxy.004760AC
文本字符=ASCII "/reg/index.php"

地址=0040A93E*b
反汇编=push    CCProxy.00476084
文本字符=ASCII "RegCode"

看看Code是如何的
0040A92E  |.  68 70B44700       push    CCProxy.0047B470                      ; /FileName = ""    <=======PI
0040A933  |.  C1E9 02           shr     ecx, 2                                ; |
0040A936  |.  F3:A5             rep     movsd                                 ; |
0040A938  |.  8BCA              mov     ecx, edx                              ; |
0040A93A  |.  50                push    eax                                   ; |String
0040A93B  |.  83E1 03           and     ecx, 3                                ; |
0040A93E*a|.  68 84604700       push    CCProxy.00476084                      ; |Key = "RegCode"
0040A943  |.  F3:A4             rep     movsb                                 ; |
0040A945  |.  68 9C5F4700       push    CCProxy.00475F9C                      ; |Section = "System"
0040A94A  |.  FF15 28434600     call    near dword ptr ds:[<&KERNEL32.WritePr>; \WritePrivateProfileStringA
一看是WritePrivateProfileStringA 唉... 写ini文件 在上面PI处下断点

0040A757*b|.  68 AC604700       push    CCProxy.004760AC                      ;  ASCII "/reg/index.php"
0040A75C  |.  68 A8604700       push    CCProxy.004760A8                      ;  ASCII "GET"
0040A761  |.  56                push    esi
0040A762  |.  897424 34         mov     dword ptr ss:[esp+34], esi
0040A766  |.  FF15 10464600     call    near dword ptr ds:[<&WININET.HttpOpen>;  WININET.HttpOpenRequestA
不知道是干什么的 不敢随便说:) 自己查插HttpOpenRequestA是干什么的哈 也好教教我:)

好了F9吧 什么也没断下来...正常~~~ 点一下断点PI
0040A92E  |.  68 70B44700    push    CCProxy.0047B470 ; /FileName = "D:\Program Files for XP\CCProxy\CCProxy.ini"
唉 原来是写这个ini文件 那我们就可以找读ini的操作GetPrivateProfileStringA 有很多 看看谁和RegCode相关

地址=0040A9EE
反汇编=call    near esi
目标=kernel32.GetPrivateProfileStringA

地址=0040E21A
反汇编=call    near ebx
目标=kernel32.GetPrivateProfileStringA

下断点咯...
随便注册一个 按按钮会中断在0040A9EE F8一步一步看看
0040A9EE  |.  FFD6              call    near esi                         ; \GetPrivateProfileStringA
0040A9F0  |.  68 70B44700       push    CCProxy.0047B470                 ; /IniFileName = "D:\Program Files for

XP\CCProxy\CCProxy.ini"
0040A9F5  |.  8D9424 90010000   lea     edx, dword ptr ss:[esp+190]      ; |
0040A9FC  |.  68 00040000       push    400                              ; |BufSize = 400 (1024.)
0040AA01  |.  52                push    edx                              ; |ReturnBuffer
0040AA02  |.  68 38B34700       push    CCProxy.0047B338                 ; |Default = ""
0040AA07  |.  68 E4604700       push    CCProxy.004760E4                 ; |Key = "UserName"
0040AA0C  |.  68 9C5F4700       push    CCProxy.00475F9C                 ; |Section = "System"
0040AA11  |.  FFD6              call    near esi                         ; \GetPrivateProfileStringA
0040AA13  |.  8D8424 8C010000   lea     eax, dword ptr ss:[esp+18C]
0040AA1A  |.  8D8C24 900D0000   lea     ecx, dword ptr ss:[esp+D90]
0040AA21  |.  50                push    eax
0040AA22  |.  51                push    ecx
0040AA23  |.  E8 F8F9FFFF       call    CCProxy.0040A420 <=========PS
0040AA28  |.  83C4 08           add     esp, 8
0040AA2B  |.  A3 9C6C4A00       mov     dword ptr ds:[4A6C9C], eax
0040AA30  |.  85C0              test    eax, eax
0040AA32  |.  0F84 7B010000     je      CCProxy.0040ABB3 <======这里跳转了
因为跳得比较远 所以有必要注意一下他上面得Call 在

进去后....走了几遍

0040A358  |> /8A8434 50010000   /mov     al, byte ptr ss:[esp+esi+150]
0040A35F  |. |83C0 08           |add     eax, 8
0040A362  |. |25 FF000000       |and     eax, 0FF
0040A367  |. |50                |push    eax
0040A368  |. |68 54604700       |push    CCProxy.00476054                ;  ASCII "%02x"
0040A36D  |. |57                |push    edi
0040A36E  |. |E8 E45C0300       |call    CCProxy.00440057
0040A373  |. |83C4 0C           |add     esp, 0C
0040A376  |. |46                |inc     esi
0040A377  |. |83C7 02           |add     edi, 2
0040A37A  |. |83FE 06           |cmp     esi, 6
0040A37D  |.^\7C D9             \jl      short CCProxy.0040A358
|========> 08 58 5e c8 08 10 (08585ec80810)

00409F86  |> /8A18              /mov     bl, byte ptr ds:[eax]
00409F88  |. |8ACB              |mov     cl, bl
00409F8A  |. |3A1E              |cmp     bl, byte ptr ds:[esi]
00409F8C  |. |75 1C             |jnz     short CCProxy.00409FAA
00409F8E  |. |84C9              |test    cl, cl
00409F90  |. |74 14             |je      short CCProxy.00409FA6
00409F92  |. |8A58 01           |mov     bl, byte ptr ds:[eax+1]
00409F95  |. |8ACB              |mov     cl, bl
00409F97  |. |3A5E 01           |cmp     bl, byte ptr ds:[esi+1]
00409F9A  |. |75 0E             |jnz     short CCProxy.00409FAA
00409F9C  |. |83C0 02           |add     eax, 2
00409F9F  |. |83C6 02           |add     esi, 2
00409FA2  |. |84C9              |test    cl, cl
00409FA4  |.^\75 E0             \jnz     short CCProxy.00409F86
|=========>这只是比较Code明码..... 唉

跟踪上面的代码
0042E160  |> /33C0              xor     eax, eax
0042E162  |. |33C9              xor     ecx, ecx
0042E164  |. |8A4434 09         mov     al, byte ptr ss:[esp+esi+9]
0042E168  |. |8A4C34 18         mov     cl, byte ptr ss:[esp+esi+18]
0042E16C  |. |0BC1              or      eax, ecx
0042E16E  |. |50                push    eax
0042E16F  |. |68 54604700       push    CCProxy.00476054                 ;  ASCII "%02x"
0042E174  |. |57                push    edi
0042E175  |. |E8 DD1E0100       call    CCProxy.00440057
0042E17A  |. |83C4 0C           add     esp, 0C
0042E17D  |. |46                inc     esi
0042E17E  |. |83C7 02           add     edi, 2
0042E181  |. |8D56 01           lea     edx, dword ptr ds:[esi+1]
0042E184  |. |83FA 10           cmp     edx, 10
0042E187  |.^\72 D7             jb      short CCProxy.0042E160
|=========>cf cf 16 1f 9f db eb 77 f6 af 0b 2e 2e 8e ce db d9 (有关hunter_boy的运算)

0042E160  |> /33C0              xor     eax, eax
0042E162  |. |33C9              xor     ecx, ecx
0042E164  |. |8A4434 09         mov     al, byte ptr ss:[esp+esi+9]
0042E168  |. |8A4C34 18         mov     cl, byte ptr ss:[esp+esi+18]
0042E16C  |. |0BC1              or      eax, ecx
0042E16E  |. |50                push    eax
0042E16F  |. |68 54604700       push    CCProxy.00476054                 ;  ASCII "%02x"
0042E174  |. |57                push    edi
0042E175  |. |E8 DD1E0100       call    CCProxy.00440057
0042E17A  |. |83C4 0C           add     esp, 0C
0042E17D  |. |46                inc     esi
0042E17E  |. |83C7 02           add     edi, 2
0042E181  |. |8D56 01           lea     edx, dword ptr ds:[esi+1]
0042E184  |. |83FA 10           cmp     edx, 10
0042E187  |.^\72 D7             jb      short CCProxy.0042E160
|==========>39 5e 7b 7e 7f 75 7f ef f3 fb ff f3 a3 f7 d6 df 88
(395e7b7e7f757feff3fbfff3a3f7d6df88有关08585ec80810的运算)
好了,回到上面的明码比较去了
================================================================================================
hunter_boy 395e7b7e7f757feff3fbfff3a3f7d6df88
失败在于1.RegCode写到INI文件当中去了2.进行明码比较 初学者的错误 那样的话即使有MD5也没发挥做用呀~~~~~ 3.没加壳没检测
应该是初学者吧 要不就是已经被人修改了或者是真正意义上的软件制作者(只重视软件本身 呵呵)

说到这里我其实是想了解他的算法 但我水平有限呀 所以还希望哪位大哥能把算法讲解一下 我还要去看书 所以也没时间再看了 算是写了个引子 另外PEiD显示有DES 在00478DE4附近 MD5 在0042E3AD附近 可我要如何找到他们呢 他们在这个程序中起到了什么作用呢?

我在DFCG上也发了这张贴

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
2
2004-10-14 09:37
0
游客
登录 | 注册 方可回帖
返回
//