能力值:
( LV12,RANK:250 )
|
-
-
51 楼
开山怪是个神马东东
|
能力值:
( LV2,RANK:10 )
|
-
-
52 楼
赞赞赞赞~
|
能力值:
( LV5,RANK:60 )
|
-
-
53 楼
楼主帖子很精辟,一路上用到反向推断的方法来查找到了字符串 思路很不错,。
我后来找到断点 ,也下好了。但是可能是以前太依赖OD了,所以进行回溯的时候十分吃力
后来我准备用OD进行分析,发现OD没有办法调试,附加上去之后找到位置下好断点就挂了。但是总的来说很不错,学习到了一些思路。
|
能力值:
( LV2,RANK:10 )
|
-
-
54 楼
好东西,学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
55 楼
这命令用得真牛
|
能力值:
( LV5,RANK:75 )
|
-
-
56 楼
在LZ的帖子里留下一爪,期待此系列的后续精华~
|
能力值:
( LV2,RANK:10 )
|
-
-
57 楼
导出函数,理解了
|
能力值:
( LV4,RANK:50 )
|
-
-
58 楼
马一下,必火
|
能力值:
( LV2,RANK:10 )
|
-
-
59 楼
MARK~~
|
能力值:
( LV2,RANK:10 )
|
-
-
60 楼
果然高深~~~mark
|
能力值:
( LV2,RANK:10 )
|
-
-
61 楼
向楼主学习,
|
能力值:
( LV2,RANK:10 )
|
-
-
62 楼
楼主强人,不知道的人以为WINDBG你弄出来的呢
|
能力值:
( LV2,RANK:10 )
|
-
-
63 楼
支持交流
|
能力值:
( LV2,RANK:10 )
|
-
-
64 楼
mark,稍后学习
|
能力值:
( LV2,RANK:10 )
|
-
-
65 楼
很欣赏关于工具和脑子的归纳,精辟!
|
能力值:
( LV2,RANK:10 )
|
-
-
66 楼
既然都能互相聊天了,获取聊天记录为什么要这么麻烦,能不能在不能通联的条件下获取到某账号的聊天记录?
|
能力值:
( LV7,RANK:110 )
|
-
-
67 楼
我想问下当我
bm KernelUtil!Util::Msg::SaveMsg194后
再g运行时就会提示:
Check for invalid symbols or bad syntax.
WaitForEvent failed
用bl查看后发现
0:013> bl
1 eu 0001 (0001) (@!"KernelUtil!Util::Msg::SaveMsg194")
2 eu 0001 (0001) (@!"KernelUtil!Util::Msg::SaveMsg194")
地址无效了 很疑惑……
|
能力值:
( LV12,RANK:250 )
|
-
-
68 楼
这个问题我朋友也遇到过,
使用bc * 删除所有断点,再g一下,然后再break, bm KernelUtil!Util::Msg::SaveMsg194,就可以解决。
如果还解决不了,就是用bp设置断点把
|
能力值:
( LV7,RANK:110 )
|
-
-
69 楼
恩 确实可以了 谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
70 楼
拜读中,但有个地方,始终不明白。
=======================
0:000> uf 318e391b
KernelUtil!CFileResumeInfoMgr::DeleteResumeFile+0x717:
318e391b 50 push eax
318e391c 64ff3500000000 push dword ptr fs:[0]
318e3923 8d44240c lea eax,[esp+0Ch] //esp+c,这里为啥要加C呢,上两条指令已经加上返回地址,调用此函数到运行到这里,共压栈
//压栈3此,共计0xC个字节,esp+0Ch正好是调用此函数前的栈帧
318e3927 2b64240c sub esp,dword ptr [esp+0Ch]
318e392b 53 push ebx
318e392c 56 push esi
318e392d 57 push edi
318e392e 8928 mov dword ptr [eax],ebp
318e3930 8be8 mov ebp,eax //此处给ebp赋值,eax经过上面的分析可知。ebp此时的赋值,相当于在调用此函数前执行了mov ebp,esp
//再加上,上一个函数执行了一条push 8,此时也就知道了上一个函数的ebp+8其实是指向的第一个参数
318e3932 a160419331 mov eax,dword ptr [KernelUtil!CppSQLite3DB::`vftable'+0x2c484 (31934160)]
318e3937 33c5 xor eax,ebp
318e3939 50 push eax
318e393a ff75fc push dword ptr [ebp-4]
318e393d c745fcffffffff mov dword ptr [ebp-4],0FFFFFFFFh
318e3944 8d45f4 lea eax,[ebp-0Ch]
318e3947 64a300000000 mov dword ptr fs:[00000000h],eax
318e394d c3 ret
========================
通过上层函数push 8,以及call压入函数的返回地址,本函数开头push eax;push dword ptr fs:[0];
那些运行到 lea eax,[esp+0Ch] 时,这里的esp+0c不是正好指向函数的返回址。小弟新手,请不吝赐教。
|
能力值:
( LV12,RANK:250 )
|
-
-
71 楼
执行到lea eax,[esp+0Ch] 时栈是这个样子的
|--------------------------------|
|push 8
|--------------------------------| + c
|call ret
|--------------------------------| + 8
|push eax
|--------------------------------| + 4
|push dword ptr fs:[0]
|--------------------------------| + 0 --> esp
所以,esp+0Ch正好是调用此函数前的栈帧
|
能力值:
( LV2,RANK:10 )
|
-
-
72 楼
好贴,收藏
|
能力值:
( LV2,RANK:10 )
|
-
-
73 楼
学习了
|
能力值:
( LV4,RANK:50 )
|
-
-
74 楼
看一下第五个参数第一个数值:318f9fa8,看看他是一个什么地址:
代码:
0:000> !address 318f9fa8
Failed to map Heaps (error 80004005)
Usage: Image
Allocation Base: 31800000
Base Address: 318f3000
End Address: 31932000
Region Size: 0003f000
Type: 01000000 MEM_IMAGE
State: 00001000 MEM_COMMIT
Protect: 00000002 PAGE_READONLY
More info: lmv m KernelUtil
More info: !lmi KernelUtil
More info: ln 0x318f9fa8
看来第五个是一个类对象了,318f9fa8告诉我们是在一个模块内,由此可以猜出是个虚函数表。
============================
这里咋看出是一个类?看出来需要学习什么资料?求助..谢谢..``
|
能力值:
( LV12,RANK:250 )
|
-
-
75 楼
318f9fa8属于模块内地址,是虚函数表的可能性很大。既然有虚函数,那一定是个类对象
|
|
|