Chinaunix首页 | 论坛 | 博客
  • 博客访问: 896034
  • 博文数量: 194
  • 博客积分: 7991
  • 博客等级: 少将
  • 技术积分: 2067
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-09 22:03
文章分类

全部博文(194)

文章存档

2010年(8)

2009年(71)

2008年(109)

2007年(6)

我的朋友

分类: WINDOWS

2010-03-25 16:46:30


IDA反汇编器威力无穷,让一切代码无处藏身!

以前下载过一个CloseMonitor.exe,只有620字节大小,功能是关闭显示器,当时比较感兴趣它是如何关闭显示器的。当我发现IDA的强大反汇编能力时,不禁想用它操刀一下CloseMonitor.exe。

启动IDA,加载CloseMonitor.exe,发现其关闭显示器的原理不过是发送了一个消息,如下几行:

.text:004001F8 public start
.text:004001F8 start proc near
.text:004001F8 push 2      ; lParam
.text:004001FA push 0F170h ; wParam
.text:004001FF push 112h   ; Msg
.text:00400204 push 0FFFFh ; hWnd
.text:00400209 call PostMessageA
.text:0040020E retn
.text:0040020E start endp


用C语言写如下几行即可:

#include <windows.h>
void main(){
    PostMessageA((HWND)0xFFFF, 0x112, 0xF170, 2);
}


用VC6编译出release版本的,有24KB大小,远远大于人家的不足1KB,看来人家是用汇编写的。

参考如下文章可写出更丰富的代码:


#include <windows.h>
//HWND_BROADCAST    0xFFFF
//WM_SYSCOMMAND        0x0112
//SC_MONITORPOWER    0xF170

#define MONITOR_ON        -1
#define MONITOR_OFF        2
#define MONITOR_STANBY    1

void main(){
    PostMessageA(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);
    //PostMessageA(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_STANBY);
    Sleep(3);
    PostMessageA(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_ON);

}


阅读(2402) | 评论(1) | 转发(0) |
0

上一篇:Configure参数补充的一种方法

下一篇:没有了

给主人留下些什么吧!~~

jha3342015532013-06-02 22:21:01

看这地址,严重怀疑这个人是用汇编写好了,然后直接手动处理了PE文件,然后将之PE头code段合并在一起的.
领:你这段代码在win7 x64下vs08命令行编译运行后,不断的关显示器开显示器,,,,大概十几次以后,显示器回复正常,不知道是哪里的bug,,,,