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之间的浮点数了~

C语言:应用程序增加库函数rand的步骤的更多相关文章

  1. C语言编程程序的内存如何布局

    重点关注以下内容: C语言程序在内存中各个段的组成 C语言程序连接过程中的特性和常见错误 C语言程序的运行方式 一:C语言程序的存储区域 由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过 ...

  2. 给Win32 GUI程序增加控制台窗口的方法

    给Win32 GUI程序增加控制台窗口的方法 2008年10月11日 星期六 下午 04:43 在Win32的GUI程序中,没有控制台窗口,我们输出调试信息时有些不方便,以往我的做法是使用Messag ...

  3. R语言服务器程序 Rserve详解

    R语言服务器程序 Rserve详解 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到 ...

  4. Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?

    [编者按]本文作者@徐珂铭,一位看好Html5的移动互联网的从业人士.喜爱玩技术,会点JAVA.HTML及CSS,有自己的想法及姑且能表达想法的文字,因此有了自己的文章. 基于HTML5的Web Ap ...

  5. C语言字符串操作常用库函数

    C语言字符串操作常用库函数 *********************************************************************************** 函数 ...

  6. 通过反汇编C语言小程序学习Liunx汇编语言

    大家好!    我是来自山东师范大学的吴乐.    今天在<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...

  7. c语言诊断_断言库函数#include<assert.h>

    诊断<assert.h>  assert #include <assert.h> void assert(int exp); assert宏用于为程序增加诊断功能.当asser ...

  8. WISE安装程序增加注册控制

    我做安装程序,一直用的WISE 9.最近为一个用户提供安装程序时,公司要求对安装程序增加控制,避免用户到处安装,增加公司服务的压力.因此,我在WISE制作的安装程序中增加了注册码校验控制,不能给出正确 ...

  9. windows系统下c语言暂停程序

    原文:windows系统下c语言暂停程序 windows系统下,很多C语言初学者的调试时,往往没看到结果程序就退出了,据我所知的方法主要有以下几种 方法一: #include int main() { ...

  10. Linux下简单C语言小程序的反汇编分析

    韩洋原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 写在开始,本文为因为参加MOO ...

随机推荐

  1. Java反射机制原理详解

    什么是反射? Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法.本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息 ...

  2. 使用Nginx在80端口上代理多个.NET CORE网站

    有两个.NET CORE3.1网站部署在CentOS7上(内网IP是192.168.2.32),现在想实现访问http://192.168.2.32时访问A网站,访问http://192.168.2. ...

  3. Spring Cloud微服务下如何配置I8n

    什么是I8n 国际化(I18n)指的是设计和开发产品的过程,使得它们能够适应多种语言和文化环境,而不需要进行大量的代码更改.这通常涉及到创建一个基础版本的产品,然后通过配置和资源文件来添加对不同语言和 ...

  4. 从DDPM到DDIM

    从DDPM到DDIM (一) 现在网络上关于DDPM和DDIM的讲解有很多,但无论什么样的讲解,都不如自己推到一边来的痛快.笔者希望就这篇文章,从头到尾对扩散模型做一次完整的推导. DDPM是一个双向 ...

  5. oeasy教您玩转vim - 22 - 配置文件

    配置文件 回忆上节课内容 我们上次了解到了状态横条 通过转义表示 item 控制 item 宽度的方法 将 item 成组的方法 还有一个总开关 laststatus 但是每次都要写很长的一段话来配置 ...

  6. TIER 1: Three

    TIER 1: Three 信息收集 通过以前的练习,我们首先确认目标 IP 开放了哪些端口,比如使用 nmap 之类的工具进行扫描.本次靶机开放: 22 端口:SSH, OpenSSH 80 端口: ...

  7. 搭建lnmp环境-nginx(第一步)

    建议: 本次lnmp采用yum形式安装,编译安装过于繁琐,操作不好还不如yum安装,所以不推荐. 全部安装在宿主机上,如果需要安装多个版本的软件才使用docker nginx无所谓版本了 刚安装好系统 ...

  8. 如何立刻读取在MySQL中自动生成的主键

    在写一个接口时,我们需要对两个表分别动刀,但是我们需要前一个表的主键作为下一个表的功能外键, 如果使用mybatisplus,insert完成之后便可以直接在对象中取出这个id值 如果使用mybati ...

  9. 系动词&使役动词

    系动词 系动词的作用就是赋值 I am a rabbit 把 a rabbit赋值给i我 我是一只兔子 The rabbit is smart 这兔子是聪明的 smart赋值给兔子 系动词连系的方式, ...

  10. 【JDBC】Extra04 Mirosoft-Access-JDBC

    MS没提供Jdbc驱动,有一个第三方的UcanAcess驱动包 <!-- https://mvnrepository.com/artifact/net.sf.ucanaccess/ucanacc ...