我正在逆向一个 32 位二进制文件,以应对我在大学实验室遇到的挑战,但我很难理解 asm 代码的意图。
二进制是一个 10 级倒车游戏,您在开始时没有任何信息,并且必须在最后建立标志时弄清楚所有事情。
基本上它使用很多加密技术从整数值派生字符串(据我所知)。我想出了它使用的一些导入,例如LoadLibraryA,GetProcAddress(我猜它稍后会以某种方式使用它们)。
我目前遇到的问题是 asm 代码调用GetProcAddress,将kernel32.dllhandle 作为第一个参数,0(或NULL我猜)作为第二个参数。我得到的回报然后用于进行一些整数除法。我的问题是我NULL从GetProcAddress电话中获得,然后在点击 时idiv,我得到了一个除以 0 的异常。
在0x00401A85 eax是0( NULL)。关于如何解决这个问题的任何想法?将0( NULL) 作为第二个参数传递背后的想法是什么?
谢谢!
