C语言:应用程序增加库函数rand的步骤
rand函数用来生成随机数,函数原型为int rand( void );
返回值为生成的随机数,范围0~32767。在调用rand之前可以用srand函数初始化随机数发生器来生成更随机的数。
可以通过%取模运算来生成一定范围内的随机数。
在应用程序,希望通过生成随机数,来产生20~26范围之间的浮点数。用OD打开应用程序,在函数导入表中没找到rand,需要手动添加。好在Stub_PE工具可以很方便导入库函数。
用Stub_PE打开应用程序,在Functions窗格。
点击右键,选择Add New Import
Dll Select选择MSVCRTD.DLL,Select func.选择rand,点击Add to list,因为只想增加rand函数,最后点击ADD按钮
Stub_PE增加newimp节,里面为rand函数。
OD打开应用程序,右键选择查打-当前模块的名称(标签),可以看到导入函数表中有rand函数,地址为0x00681174。
在导入函数的空余位置,点击汇编,输入jmp dword ptr ds:[0x681174]
当前地址为0x0054A372.
在需要插入rand函数处,输入汇编call 0054A372 ,OD自动识别出调用函数rand
然后对5000取模,转成浮点数,除以200,加上20.3基数,应用程序就可以生成20~26之间的浮点数了~