明辉手游网中心:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

容易Crack与Hacker思维打造灵巧后门

[摘要]适合读者:破解迷、黑兵器库老板 前置知识:Crack工具的基本使用方法 Icefire:长久以来破解爱好者们都在不断地寻求一种方式, 可以突破Cracker局限的方式, 可以不单单在各类软件中随...

适合读者:破解迷、黑兵器库老板

前置知识:Crack工具的基本使用方法

Icefire:长久以来破解爱好者们都在不断地寻求一种方式, 可以突破Cracker局限的方式, 可以不单单在各类软件中随意驰骋, 更能在网络这块天地中自由翱翔。 或许本文就提供了一种让二者结合更巧妙的方式

适合读者:破解迷、黑兵器库老板

前置知识:Crack工具的基本使用方法

Icefire:长久以来破解爱好者们都在不断地寻求一种方式, 可以突破Cracker局限的方式, 可以不单单在各类软件中随意驰骋, 更能在网络这块天地中自由翱翔。 或许本文就提供了一种让二者结合更巧妙的方式, 希望能给你一点启发。

简单Crack与Hacker思维打造灵巧后门

文/ dickboy

相信这篇文章的出现将造成网络电视之类的东西漫天飞舞(或许还有一种新兴后门), 我可没有一点点私心啊, 知道这点东西就立刻和大家分享了。

同学想看网络电视, 可惜程序要注册, 把我这个义工叫了过去, 几下搞定后, 一看注册费……还真不是一般的贵!要不咱也写一个得了?说不定也可以搞点钱花花。 住宿费还欠着呢, 不交钱不让考试, 穷人家的孩子啊(Icefire:同道同道!想当初……唉, 还是不想了, 大过年的。 ), 5555……。 可惜我也不知道怎么写, 我还没有学过Windows编程, 还记得上期杂志我的文章《Crack新手进化篇》吗?我的补丁程序可是黑忽忽的界面啊!哎, 没有办法啊, 不会Windows编程, 只好分析别人的程序了, 就拿网络电视小精灵下手吧!

Peid检查后发现是用Delphi编写的, 郁闷, 很难找到是哪个函数自动打开Realplay或Media Player播放影音资料的, 要是用VC++编写的就好了。 到网上找了几个类似的网络电视程序, 不是Delphi就是VB写的。 没有一个VC++的, 只好对网络电视小精灵动真功夫了——按江湖规矩, 我们单挑……那个拿葱的大婶你过来!

Crack思维

用Dede反编译, Tnit1的TForm1看到很多事件, 仔细看看, 看到了一个CCTV1Click事件, 双击来到对应代码:

004A1A80   53                     push    ebx

004A1A81   8BD8                   mov     ebx, eax

004A1A83   6A01                   push    $01

004A1A85   6A00                   push    $00

004A1A87   6A00                   push    $00

* Possible String Reference to: 'http://www.cctv.com/sports/'

004A1A89   68A01A4A00             push    $004A1AA0

004A1A8E   6A00                   push    $00

004A1A90   8BC3                   mov     eax, ebx

* Reference to: QForms.TCustomForm.GetClientHandle(TCustomForm):QWorkspaceH;

004A1A92   E88501FAFF             call    00441C1C

004A1A97   50                     push    eax

* Reference to: shell32.ShellExecuteA()

004A1A98   E89B94F8FF             call    0042AF38

004A1A9D   5B                     pop     ebx

004A1A9E   C3                     ret

嘿嘿, 原来用的ShellExecuteA。 打开Ollydbg, 载入网络电视小精灵, 下断点在004A1A80, 也就是CCTV1Click事件开始的第一条语句。 运行, 点击中央一台, 开始播放了……等等, 不对啊, 竟然没有断下?!仔细看看网址, 原来用的ShellExecuteA是打开网页http://www.cctv.com/sports/的, CCTV1Click不是调用Media Player.exe打开中央一台的事件, 那这个到底是什么东东呢?打开网络电视小精灵看看, 在网络导航的体育栏目看到了原来是点击CCTV体育的事件, 晕倒。

继续, 再找一个熟悉的:BBC1Click, 从名字上看, 应该是播放BBC电台或者电视台的事件(不知道有没有BBC电视台, 呵呵), 双击来到对应的地方, 发现这次的代码和上面的完全不同:

0048E298   BAB0E24800             mov     edx, $0048E2B0

* Reference to control TForm1.WebBrowser1 : TWebBrowser

0048E29D   8B805C040000           mov     eax, [eax+$045C]

* Reference to : TWebBrowser._PROC_0046395C()

0048E2A3   E8B456FDFF             call    0046395C

0048E2A8   C3                     ret

分析发现网络电视小精灵似乎使用TWebBrowser构件来播放网上的影音资料。 赶紧从网上找了一下TWebBrowser的资料, 原来是Delphi的一个控件……不会啊, 没办法。 不能死心, 再找其它的事件——12:00了, 还是睡觉再说, 明天早上还要上课呢!

刚躺到床上, 突然想起前面的ShellExecuteA不是可以打开网页吗?那还有没有其它作用呢?赶紧起床!用IDA反汇编网络电视小精灵, 找到ShellExecuteA(不要问我怎么找的, 在Names选项), IDA就是好啊, 给出了注释:

jmp     ds:__imp_ShellExecuteA ; Opens or prints a specified file

看到了吗?简单翻译应该是:打开或打印一个具体文件。

看来有希望, 网上看电影不也是打开一个具体文件吗?还记得用Realone网上看电影吧, 突然掉线的时候, 是不是弹出一个对话框, 说什么*.rm不能播放。 赶紧用百度查了查ShellExecuteA的资料, 哇, 太多了, 大部分都是VB中怎么用这个控件, 没有一个我要的。 灵机一动, 换一种思维方式:当我们点击一个电视台或者广播台的时候, 不是用Media Player.exe打开就是用Realplay.exe打开的。 所以, 要是可以用ShellExecuteA并且用Realplay.exe作为参数可以打开一个网上的影音文件, 那么用“ShellExecuteA realplay.exe”搜索应该是有结果的。

好了, 搜索“ShellExecuteA realplay.exe”, 没有发现, , 不会吧?Ok, 再来搜索ShellExecuteA  Media Player.exe, 也是一个结果也没有。 只好出绝招了, 拿出Cracker必备的API手册, 查ShellExecuteA, 居然是用VB描述的……

第二天上课的时候没有心思, 继续想这个问题, 没有什么结果, 回到寝室, 查MSDN, 有发现了:

HINSTANCE ShellExecute(     

    HWND hwnd,

    LPCTSTR lpOperation,

    LPCTSTR lpFile,

    LPCTSTR lpParameters,

    LPCTSTR lpDirectory,

    INT nShowCmd

);

lpOperation支持的用法有:

edit

Launches an editor and opens the document for editing. If lpFile is not a document file, the function will fail.

explore

Explores the folder specified by lpFile.

find

Initiates a search starting from the specified directory.

open

Opens the file specified by the lpFile parameter. The file can be an executable file, a document file, or a folder.

print

Prints the document file specified by lpFile. If lpFile is not a document file, the function will fail.

英语菜, 就不翻译了, 更具体请查阅MSDN, 我怕说我骗稿费。 到这里, 你有什么想法?lpOperation已经指出了一些操作, 对编写网络电视有用的只有上面的“open”。 后来从网上找到了《深入浅出ShellExecute》:

Q:如何打开一个网页?

ShellExecute(this->m_hWnd,"open","notepad.exe", "c:\\MyLog.log","",SW_SHOW );

As you can see, I haven't passed the full path of the programs.

ShellExecute(this->m_hWnd, "open", "http://www.google.com", "", "", SW_SHOW );

你觉得哪个更有用呢?第一个?实验一下, 假如我替换Notepad.exe为Media Player.exe, 替换“c:\\MyLog.log”为“d:\\t.mid”, 当然这里的“d:\\t.mid”是真实存在的MID音乐, 这样行吗?先简单测试一下。 选择开始菜单->运行, 输入“Media Player.exe d:\t.mid”, 弹出Windows Media Player开始播放t.mid了。

赶快用VC新建一个Win32 Console Application工程, 输入如下代码:

#include <windows.h>

int main(int argc, char* argv[])

{

       ShellExecute(0, "open", "Media Player.exe", "d:\\t.mid", "", SW_SHOW);

       return 0;

}

执行, 呵呵, 是不是一个黑忽忽的界面之后, 弹出Windows Media Player开始播放t.mid了?成功!

小提示:Windows 98不是Media Player.exe, 98下面是Mplayer2.exe, 请大家对照自己的机器做实验。 文中的机器是Windows XP。

第二个例子打开一个网页, 用什么打开呢?用IE, 确切的说是用默认的浏览器, 因为这里没有指定有什么打开, 也就是说打开网页有一个关联程序, 也就是默认的浏览器。 发散一下思维, 如果把这里的http://www.google.com换成其它呢?这里我换成“d:\\t.mid”, 赶快用VC新建一个Win32 Console Application工程, 输入如下代码:

#include <windows.h>

int main(int argc, char* argv[])

{

       ShellExecute(0, "open", "d:\\t.mid", "", "", SW_SHOW);

//注意与上面的不同之处,去掉了“Media Player.exe”, 同时要打开文件的具体位置成了第3个参数

       return 0;

}

执行, 呵呵, 是不是一个黑忽忽的界面之后弹出Windows Media Player开始播放t.mid了。 因为我测试的机器默认MID关联Windows Media Player。 这就是为什么我在上面强调“打开网页关联默认的浏览器”, 如果你的机器默认关联其它的播放器(如豪杰系列), 则应该弹出豪杰的超级音频解霸播放t.mid。

已经出现曙光了, 现在到Baidu找一首歌曲, 我找的是:陈慧琳-记事本。 查看属性, 得到地址:http://mp3.baidu.com/u?u=http://www.jsshmzx.com/zhuwei/geci/flash/ZzI$.mp3

继续修改程序:

hellExecute(0, "open", "http://mp3.baidu.com/u?u=http://www.jsshmzx.com/zhuwei/geci/flash//ZzI$.mp3", "", "", SW_SHOW );

小提示:这个地址是Baidu搜索的, 到读者测试的时候可能已经过时了。

运行, Windows Media Player开始播放陈慧琳的记事本了!成功!

   

Hacker思维

当我们上网看电视的时候, Windows Media Player或者Realone会打开网络电视内置的网址, 这个网址是要作为Windows Media Player或者Realone的请求发给服务器的, 所以这里有两个方法:

1.  既然是网络电视内置的网址, 那么我们可以先用W32dasm反汇编之后去找网址。

这里仍以网络电视小精灵为例, 用W32dasm反汇编, 会发现大量的网址, 但是仔细看, 会发现几乎没有一个网址是用来看电视和听广播的, 都是网络电视小精灵里面网络导航提供的网址。 似乎此路不通?等等, 再用Ollydbg载入网络电视小精灵, 查看字符参考, 没有吃惊吧?基本可以找到所有的看电视和听广播的网址。

2.  既然这个网址是要作为Windows Media Player或者Realone的请求发给服务器, 所以我们可以用Sniffer获得真实地址。

测试时我用的Commview, 个人觉得这是我等菜鸟最好用的Sniffer, 这里我简单说一下, 设置过滤条件:IP为自己机器的IP, 只捕获流出的数据包。 设置协议, 因为播放影音文件一般的协议有这些:mms://, rtsp://等。 如果捕获不到地址, 放宽条件就可以了。

Ok, 现在解决了所有问题, 剩下的就是不停地加入网址, 写代码了。 下面谈谈怎么利用ShellExecute做一个属于自己的隐蔽的后门, 这也是从上面的内容中引发的灵感。 先看以下代码:

// test.cpp:定义控制台应用程序的入口点

//

#include <windows.h>

int main(int argc, char* argv[])

{

      ShellExecute(0, "open", "Media Player.exe", "d:\\t.mid", 0, SW_HIDE);

      return 0;

}

测试上面的代码, 运行, 有什么发现吗?应该有吧:黑忽忽的界面之后, 听到音乐了吧!但是看到“Media Player”的界面了吗?没有!这是因为最后一个参数改为了SW_HIDE;如果这里第2个参数不用Open, 而用0则不会呈现“Media Player”的界面, 但是却在播放音乐——想到了什么?仔细想想, 如果这里不是Media Player.exe, 而是你的木马xx.exe?你用另外的一个正常的程序悄悄启动xx.exe?呵呵, 这个想法不错吧!这可是拥有不容易被杀死的极品后门啊!

好了, 文章到这里就结束了, 希望大家能看明白, 我要在上面写出ShellExecute的原型就是因为我想让朋友们去发掘每一个参数的意义, 说不定就能发现宝藏哦!

 


上面是电脑上网安全的一些基础常识,学习了安全知识,几乎可以让你免费电脑中毒的烦扰。