BT代码

2009-8-12 Nie.Meining Debug

玩具如下:

//only on Windows XP

//Visual Studio 2008 Debug -MDd

//By Fypher

int main(){

    long long fypher=28550371734350199LL;

    (*(void(*)(long long*))270853328)(&fypher);

}

阅读全文>>

评论(0) 浏览(12424)

获取进程ID和线程ID——直接、暴力

2009-8-3 Nie.Meining Debug

发现一种在Ring3层获取PID和TID的方法,很有意思,转过来:
PID:
    mov pid,fs:[0x20];
TID:
    mov tid,fs:[0x24];

利用了在用户态下,fs始终与TEB对齐这个事实。
那GetCurrentProcessId是不是也是利用读取TEB里的CLIENT_ID来实现的呢?
看看逆向代码吧:

阅读全文>>

评论(0) 浏览(23391)

对SOCKET句柄做的一些实验

2009-3-24 Nie.Meining Debug

我一直怀疑Socket和其它类别的HANDLE不一样。(或者说究竟是不是一个句柄?)    
WinSock.h中对SOCKET的定义是:   typedef UINT_PTR SOCKET;     
而WinNT.h中对HANDLE的定义是:   typedef void *HANDLE;    

SOCKET不仅定义上同HANDLE不一样,而且打开方式也不一样。Windows的内核对象的句柄在打开时,一般都会要求一个安全描述符参数LPSECURITY_ATTRIBUTES lpEventAttributes,但是Socket不需要。   

SOCKET到底是不是句柄,有没有一个对应的内核对象?各种资料上的说法都不一样。我写了个用SOCKET监听端口的程序,在虚拟机里运行,然后用Windbg调试了一下,发现Socket的句柄值对应的是一个File类型的可继承的内核对象: 

005c: Object: 86251778 GrantedAccess: 001f01ff (Inherit) Entry: e10950b8

阅读全文>>

评论(0) 浏览(13893)

探究为何vbs脚本无法模拟PrintScreen按键

2009-3-7 Nie.Meining Debug

今天群里有个人问为什么vbs脚本无法模拟截取屏幕的按键,我试了一下,果然不行,而模拟其它常规按键(如abcdefg)都是没有问题的。但是微软官方的帮助文档上明确说明了PRINT SCREEN这个键可以用{PRTSC}参数模拟……
我又用C++写了一个模拟PRINT SCREEN键的程序做实验,代码很简单:

#define UNICODE

#define _UNICODE

#include <windows.h>

#include <tchar.h>

int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {

阅读全文>>

评论(0) 浏览(46086)

研究扫雷游戏

2008-5-27 Nie.Meining Debug

今天又把扫雷拿来逆向了一下,改了个BT版本出来,呵呵。
OD载入,来到此处:

01003F90   . E8 5BE2FFFF   CALL winmine.010021F0                    ; \winmine.010021F0

01003F95   . 8BF0          MOV ESI,EAX

01003F97   . 8975 84       MOV DWORD PTR SS:[EBP-7C],ESI

01003F9A   . 395D E4       CMP DWORD PTR SS:[EBP-1C],EBX

01003F9D   . 75 07         JNZ SHORT winmine.01003FA6

01003F9F   . 56            PUSH ESI                                 ; /status

阅读全文>>

评论(0) 浏览(13561)

Powered by emlog