小弟遇到一个软件 经过分析终于找到一个关键函数,但是后来发现在这个函数不是call进来的,(很可能是跳进来的),因此就无法根据堆栈找到从何处调用的这个call 至于那个跳转,应该是通过计算来算出跳到的地址的,所以也无法通过静态反汇编找出是从哪里跳入函数的。 同请问一下大家 有什么办法可以知道这个函数是从哪里调用的呢? 还有小弟最近上网不方便 要是哪位朋友有解决办法可否花点时间给小弟发个邮件? binghe15@yeah.net 至于 “如何隐藏跳转指令” 我想可不可以这样: void f1() {......} void f2() {......} void f3() {......} void f4() {......} dword x if(???) { x = f? } x();
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最初由 小虾 发布一般来说,无论什么函数他最后执行完毕都必须返回调用的地方(除非他不打算返回(一条肠子通到底)或再利用跳转等其他手法返回),只要跟踪到他(ret)返回的地址就应该知道他从那里调用。
最初由 liuyilin 发布利用消息机制来传递各类信息怎么办(如SendMessage等),只要信息错误功能屏蔽
最初由 总统 发布例如:这个软件,就是利用SendMessage,使得“导出”功能未注册禁止使用 http://www.skycn.com/soft/15722.html
最初由 nbw 发布laoqian研究过这个,问问他。或者你也可以去那个讨论版本,有个贴子说过这个。