能力值:
(RANK:450 )
|
-
-
2 楼
你上面的代码是debug版本吧,release版本不会有
lea edi, [ebp+var_CC]
mov ecx, 33h
mov eax, 0CCCCCCCCh
rep stosd
这种代码
用裸函数 就不会有这个情况了
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
恩,我是用的Debug版本......
我也想过用裸体函数 但是函数还有一些其它操作觉得麻烦..
后来我用了:
_asm
{
push nSize;
push pBuf;
mov ecx, 0x01411998; //自己传ECX的值
call OldFuncAddr; //返回原函数
}
因为这个ECX值传传进函数好像是不变的....
正确返回的到了它程序函数...但是返回后运行不久又出错了
因为它的程序用了CRC32效验 我不知道是不是因为效验的原因还是我程序的原因(正在调试)....
我在试下release版本....如果再出问题可能就是效验的原因了吧...
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
linxer应该指用naked修饰的函数
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
感谢linxer的指教...
用了release版本就没的哪种情况出现了.......
楼上兄弟说的用:
裸体修饰的函数,怎么讲了
小弟不是很清楚?
|
能力值:
( LV13,RANK:410 )
|
-
-
6 楼
Naked
裸体
|
能力值:
( LV6,RANK:90 )
|
-
-
7 楼
我要好好学习一下
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
naked修饰函数 naked函数 有没区别呢?
naked纯手工实现...naked修饰函数不知道怎么样弄的?
有可能我想多了....
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
用vc内嵌汇编hook吧,ecx,参数等等都能获得。
|
能力值:
( LV6,RANK:90 )
|
-
-
10 楼
用naked关键字,比如
void verifyIP(); //函数声明还是老样子
__declspec(naked) void verifyIP() { //具体函数之前加上naked就ok
//......
}
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
aj3423....一言惊醒梦中人啊 ~~哈哈
我的那个程序已经接解决了...
HOOK其它程序函数方法(我这个程序是HOOK的是一个程序的数据包加密函数)-----小结一下:
一种方案:
1.保持你的HOOK函数与被HOOK的函数参数完全一致
2.不要影响到原程序的寄存器值...用VC的release版本就基本可以解决这个问题
3.返回原程序时如果你的HOOK函数不能在栈中废除参数...可以用OD打开直接修改那句retn x的值(当然要你的程序没的其他错误)
二种方案:
上面大哥些提到的naked函数
具体用什么看你自己的情况咯....
再次谢谢大家的热心帮助.....呵呵
|
能力值:
( LV6,RANK:90 )
|
-
-
12 楼
修改函数直接跳转到你自己的naked函数,干完坏事再跳转回去也是一种方法吧。
|
|
|