能力值:
( LV2,RANK:10 )
2 楼
不错,又学了一招,希望楼主多出这样简单易懂的文章!谢谢了
能力值:
( LV2,RANK:10 )
3 楼
这种太简单了,lz整下字符串的匹配吧,多字节编码和unicode编码,大小写敏感,子串匹配,自由组合。
当然自己写插件就简单了。
能力值:
( LV5,RANK:60 )
4 楼
对,这个确实非常简单
因为我觉得写的简单点儿比较容易被接受, 太复杂了就不是教程贴了
能力值:
( LV12,RANK:1010 )
5 楼
厉害啊。来点实战的吧
能力值:
( LV7,RANK:110 )
6 楼
不错不错,以后修改多个跳转就方便了
能力值:
( LV8,RANK:120 )
7 楼
看看。。:)
能力值:
( LV2,RANK:10 )
8 楼
THX
来点内核 脚本调试范例如何?
能力值:
( LV5,RANK:60 )
9 楼
实在不好意思, 对内核调试的东西一无所知啊
能力值:
( LV2,RANK:10 )
10 楼
看看
能力值:
( LV2,RANK:15 )
11 楼
int add(int x, int y)
{
x = 0; //多余的
return x+y;
}
脑子里以为 x= 0 这条指令会在栈中开辟空间,怎么是从参数传了。因为是函数内部局部变量,我还以为是 mov DWORD PTR [ebp-4],0 呢。求指点
能力值:
( LV5,RANK:60 )
12 楼
[QUOTE=hash;1024496]int add(int x, int y)
{
x = 0; //多余的
return x+y;
}
脑子里以为 x= 0 这条指令会在栈中开辟空间,怎么是从参数传了。因为是函数内部局部变量,我还以为是 mov DWORD PTR [ebp-4],0 呢。求指点[/QUOTE]
首先x会在栈中有位置 -- 参数位置
其次,栈是逆向生长的,所以定位参数需要 ebp+?
最后,默认压栈次序为倒序, 再加上eip会占一个位置,然后 y, 最后 x 所以x 在栈上的位置: ebp+8
能力值:
( LV2,RANK:10 )
13 楼
谢谢楼主分享!
能力值:
( LV2,RANK:10 )
14 楼
感谢分享。。。
能力值:
( LV2,RANK:10 )
15 楼
顶,学习了。
能力值:
( LV2,RANK:10 )
16 楼
代码:
bp windbgscript!add + 0x03 "
r @eip = @eip+0xa; $$ @符号会让脚本解释程序认为后面跟随的名称代表为寄存器, 节省查找时间,提高效率
gc;
"
请问,为什么是+0xa,而不是+0x7?
能力值:
( LV5,RANK:60 )
17 楼
应该是0x7, 可能我当时打错字了;我那里有存根回去看下修正
多谢细心指出
能力值:
( LV5,RANK:60 )
18 楼
windbgscript!main [e:\workspace\windbgscript\windbgscript.cpp @ 28]:
28 00401050 55 push ebp
28 00401051 8bec mov ebp,esp
28 00401053 83ec0c sub esp,0Ch
30 00401056 c745f864000000 mov dword ptr [ebp-8],64h
32 0040105d e89effffff call windbgscript!ret100 (00401000)
32 00401062 50 push eax
32 00401063 8b45f8 mov eax,dword ptr [ebp-8]
32 00401066 50 push eax
32 00401067 e8c4ffffff call windbgscript!add (00401030)
32 0040106c 83c408 add esp,8
32 0040106f 8945fc mov dword ptr [ebp-4],eax
34 00401072 8b4dfc mov ecx,dword ptr [ebp-4]
34 00401075 51 push ecx
34 00401076 b980614100 mov ecx,offset windbgscript!std::cout (00416180)
34 0040107b e850000000 call windbgscript!std::basic_ostream<char,std::char_traits<char> >::operator<< (004010d0)
36 00401080 8b159c534100 mov edx,dword ptr [windbgscript!_iob+0x4 (0041539c)]
36 00401086 83ea01 sub edx,1
36 00401089 89159c534100 mov dword ptr [windbgscript!_iob+0x4 (0041539c)],edx
36 0040108f 7822 js windbgscript!main+0x63 (004010b3)
两处巧合导致错误的脚本得出了和预期一样的结果
1. 第二条指令恰好3个字节 -- +0xa 没问题
2. 下一条指令给eax赋值100, 而此时eax就是100 -- main里赋的值
能力值:
( LV4,RANK:50 )
19 楼