其实也不奇怪(记事本乱码问题)

2009-12-23 Nie.Meining Debug

仔细调试了一下notepad.exe,发现问题了……
记事本打开文件的时候会选择以什么编码来显示文件内容,而“联通”(0xC1, 0xAA, 0xCD, 0xA8)会被识别成UTF-8,但是保存的时候其实是按ANSI编码来保存的(默认编码),所以就显示出乱码了。
记事本判断某字符串是否是UTF8的函数逆向结果如下:

BOOL IsUTF8(PCHAR pBuff, int size) {

    BOOL bFlag = TRUE;

    int i=0, j=0;

阅读全文>>

评论(0) 浏览(1753)

为什么这么奇怪

2009-12-23 Nie.Meining Debug

听说在记事本里写入“联通”,然后保存、关闭,再打开就变成乱码了。试了一下果然如此……
一开始以为是notepad.exe在保存文件时转换字符编码(WideCharToMultiByte)没处理好,拿OD跟了一会儿,貌似是WriteFile函数有残疾。
Test Code:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {

 

    HANDLE hFile = CreateFile(

阅读全文>>

评论(0) 浏览(12731)

经典的shellcode

2009-12-9 Nie.Meining Debug

char shellcode[]=

    "\xFC\xE8\x44\x00\x00\x00\x8B\x45\x3C\x8B\x7C\x05\x78\x01\xEF\x8B"

    "\x4F\x18\x8B\x5F\x20\x01\xEB\x49\x8B\x34\x8B\x01\xEE\x31\xC0\x99"

    "\xAC\x84\xC0\x74\x07\xC1\xCA\x0D\x01\xC2\xEB\xF4\x3B\x54\x24\x04"

    "\x75\xE5\x8B\x5F\x24\x01\xEB\x66\x8B\x0C\x4B\x8B\x5F\x1C\x01\xEB"

    "\x8B\x1C\x8B\x01\xEB\x89\x5C\x24\x04\xC3\x31\xC0\x64\x8B\x40\x30"

    "\x85\xC0\x78\x0C\x8B\x40\x0C\x8B\x70\x1C\xAD\x8B\x68\x08\xEB\x09"

    "\x8B\x80\xB0\x00\x00\x00\x8B\x68\x3C\x5F\x31\xF6\x60\x56\x89\xF8"

    "\x83\xC0\x7B\x50\x68\x7E\xD8\xE2\x73\x68\x98\xFE\x8A\x0E\x57\xFF"

    "\xE7\x63\x61\x6C\x63\x00";

阅读全文>>

评论(0) 浏览(12740)

断在被XX进去的线程起点处

2009-11-27 Nie.Meining Debug

需要监控指定进程中每个ring3线程的创建,包括被别的进程CreateRemoteThread进去的。并且不能注册线程创建的回调函数
WinDbg了一阵,解决方案如下:
断在nt!PspUserThread处,然后读[fs:[0x124]+0x228],即ETHREAD->Win32StartAddress

阅读全文>>

评论(0) 浏览(23064)

shutdown命令

2009-11-18 Nie.Meining Debug

做个笔记,如图:

 点击查看原图

shutdown -a 由 AbortSystemShutdownW 实现;

shutdown -xxx -t 0 由 ExitWindowsEx 实现;

shutdown -xxx -t xx 由 InitiateSystemShutdownExW 实现。

阅读全文>>

评论(0) 浏览(2308)

Powered by emlog