能力值:
( LV2,RANK:10 )
|
-
-
2 楼
书开始发货了?
|
能力值:
( LV3,RANK:30 )
|
-
-
3 楼
大山猪
书开始发货了?
已经到了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
不懂看看大佬回答
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
大佬可以发一下你买书的链接吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
狗日的京东还没发货
|
能力值:
( LV12,RANK:280 )
|
-
-
7 楼
问题一:随意挑了vmp中的两handle 就显而易见了 AC lods byte ptr ds:[esi]
8B1438 mov edx,dword ptr ds:[eax+edi]
83ED 04 sub ebp,0x4
8955 00 mov dword ptr ss:[ebp],edx
---------------------
66:8CE8 mov ax,gs
83ED 02 sub ebp,0x2
66:8945 00 mov word ptr ss:[ebp],ax 顺便说下,只有push( sub ebp)才会check, 问题二:和问题一其实差不多,你需要搞清楚vm的栈,以及handle是如何操作vm栈的
顺便说下,vmp中: 8B45 00 mov eax,dword ptr ss:[ebp]
0145 04 add dword ptr ss:[ebp+0x4],eax
9C pushfd
8F45 00 pop dword ptr ss:[ebp] stacktop --> eflags +4 --> answer 然后再把eflags放入vmcontext,也就是之后跟了条 lods byte ptr ds:[esi] // 取index
mov edx,dword ptr ss:[ebp]
add ebp,0x4
mov dword ptr ds:[eax+edi],edx 问题三:如果push到stack之后,是个popad之类的,寄存器不就恢复了么
|
能力值:
( LV3,RANK:30 )
|
-
-
8 楼
最后于 2018-10-16 23:56
被你坏编辑
,原因:
|
能力值:
( LV3,RANK:30 )
|
-
-
9 楼
waiWH
问题一:随意挑了vmp中的两handle 就显而易见了AC & ...
vPushReg32 mov eax,[esi] add esi,4 mov eax,[esi+eax] push eax //这里是push,你说的是ebp jmp VMDispatcher 问题1: 加密与解密4,第20章作者不是那VMP来举例的 你看看你贴出的handler和我贴出的对比看看 一个是操作esp的push,一个是操作ebp的sub,mov 既然你这么说,那么我说的问题1,就真的是代码错误了 handle里面都是对esp的操作,而问题1里面的vCheckEsp handle,检查的是:ebp vPushReg32 push xx vAdd add esp,xx 问题2: 你仔细看我第2处的图,esp->edi 有0x40的空间,但是作者没有用它 它在handle中都是push,当前esp已经vm栈的顶部了,在push就出去了 问题3: 可能是我没说明白,我觉得有问题的地方是返回地址 根据图2的堆栈图,ebp是在调用者的栈顶,不属于vm的栈了 但是这里是存放数据的地方啊,怎么会有返回地址给你,
书上面说vRetn是虚拟机退出代码,
返回地址绝对不正确 书中给的代码也就那么点,第2处的堆栈图,已经告诉了你ebp在什么位置 push ebp mov ebp,esp sub esp,xx ...... add eax,1 VM这条指令,你想想栈顶能是保存返回地址的地方吗? ...... mov esp,ebp pop ebp ret
最后于 2018-10-17 00:08
被你坏编辑
,原因:
|
能力值:
( LV12,RANK:280 )
|
-
-
10 楼
没书,不过大概都差不多 问题一:去看jmp到check的handle,操作ebp的。你所挑的没啥联系 问题二:还是去看看其他handle,注意赋值问题 问题三:如果把返回地址提前放入呢 还有,多注意ebp等寄存器的赋值,需要明白ebp,edi,esi的作用
最后于 2018-10-17 08:40
被waiWH编辑
,原因:
|
能力值:
( LV3,RANK:30 )
|
-
-
11 楼
waiWH
没书,不过大概都差不多问题一:去看jmp到check的handle,操作ebp的。你所挑的没啥联系问题二:还是去看看其他handle,注意赋值问题问题三:如果把返回地址提前放入呢还有,多注意ebp等寄 ...
书中大概就这么多代码了,jmp到check的handle书里面没有 21章是vmp的解析和还原,20章作为虚拟机的设计,应该是为21做铺垫把,所以很多东西没讲到
ebp 只有在vStartVM和vBegin和vRetn中用到了,就那么点代码,我找了
最后于 2018-10-17 14:20
被你坏编辑
,原因:
|
能力值:
( LV3,RANK:30 )
|
-
-
12 楼
waiWH
没书,不过大概都差不多问题一:去看jmp到check的handle,操作ebp的。你所挑的没啥联系问题二:还是去看看其他handle,注意赋值问题问题三:如果把返回地址提前放入呢还有,多注意ebp等寄 ...
问题解决了,书中错误太多了。
最后于 2018-10-17 19:00
被你坏编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
我在淘宝买了快两个月还没发货,今天在京东买了, 立马发货
|
能力值:
(RANK:350 )
|
-
-
14 楼
你坏
waiWH
没书,不过大概都差不多问题一:去看jmp到check的handle,操作ebp的。你所挑的没啥联系问题二:还是去看看其他handle,注意赋值问题 ...
感谢反馈!
最后于 2018-10-20 11:06
被kanxue编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
waiWH
问题一:随意挑了vmp中的两handle 就显而易见了AC & ...
p742 lea eax,[edi+100] //eax = edi+100,也就是VMContext的地址+100 cmp eax,ebp jl VMDispatcher //小于则跳转 否则,也就是说ebp不断sub快追上VMContext了 mov edx,edi mov ecx,esp sub ecx,edx //ecx = esp-edi 但是esp是比edi小的,这个减法必定减出来一个超大数,之后的rep movsb要用这个ecx做循环,这里是不是有点问题
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
p743 图20.2 esp地址应该比VMContext低,这个图里应该是ebp吧
最后于 2018-10-19 19:21
被今天不吃面编辑
,原因:
|
能力值:
( LV12,RANK:280 )
|
-
-
17 楼
vmp checkstack提供参考 8D47 50 lea eax,dword ptr ds:[edi+0x50]
39C5 cmp ebp,eax
77 ?? ja DISPATCHER1
89E2 mov edx,esp
8D4F 40 lea ecx,dword ptr ds:[edi+0x40]
29D1 sub ecx,edx
8D45 80 lea eax,dword ptr ss:[ebp-0x80]
24 FC and al,0xFC
29C8 sub eax,ecx
89C4 mov esp,eax
9C pushfd
56 push esi
89D6 mov esi,edx
8D7C01 C0 lea edi,dword ptr ds:[ecx+eax-0x40]
57 push edi
89C7 mov edi,eax
FC cld
F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi]
5F pop edi
5E pop esi
9D popfd
EB ?? jmp DISPATCHER1 另注意entry中 89E5 mov ebp,esp
81EC C0000000 sub esp,0xC0
89E7 mov edi,esp 然后就明白esp,edi,ebp了 btw:handle操作esp,就只有checkstack,retf/iret/retn,call
最后于 2018-10-19 20:24
被waiWH编辑
,原因:
|
能力值:
( LV3,RANK:30 )
|
-
-
18 楼
今天不吃面
p743图20.2esp地址应该比VMContext低,这个图里应该是ebp吧
edi+100 和 ebp 比较 永远是跳转到VMDispatcher jl VMDispatcher 下面的代码不会执行的 vm堆栈在上面,vm环境在下面,这种是不会覆盖vm环境的 书上面的checkESP是针对把ebp作为保存操作数的堆栈检测,书上面是esp 这个函数在书上是画蛇添足 只有vmp这种,堆栈中是用ebp来存放操作数的的堆栈结构这个函数才会有用 ps: 加密解密4的虚拟机设计,是从加密解密3直接拿过来的,有人早就质疑过这章的问题了 我也是后面才知道的,哎
最后于 2018-10-21 17:14
被你坏编辑
,原因:
|
能力值:
( LV3,RANK:30 )
|
-
-
19 楼
waiWH
vmp checkstack提供参考8D47 50 &n ...
你看第2处,vm环境和vm堆栈的位置,根据书上代码画的 VMP和书上的不同: vmp堆栈的低地址是vm环境,高地址是vm堆栈 书上堆栈的低地址是vm堆栈,高地址是vm环境, 所以书上push数据的时候不是ebp,而是esp sub esp不会覆盖vm环境,这个代码在书上就是个坑
还有第8处的代码,按照指令,作为它的参数 根据书上的堆栈图应该是push,从esp里面取 但是你看着代码,从ebp里面取返回地址 ret的返回地址应该被作为操作数,书上的结构操作数就应该是从esp里面取
然而书上既用了esp取操作数,又用到了ebp来取操作数
第8处的代码在vm一条指令的时候也会因为从ebp处取返回地址(前函数的栈顶),导致出错 ,因为前函数开辟了堆栈用来存储临时数据
有很多话想说的! 作为一本书这样真的好吗?
最后于 2018-10-21 17:53
被你坏编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
我的京东已经发货了
|
|
|