ld_preload-sounds, 通过钩子 malloc() 和 read() 生成原始的WAV输出

分享于 

4分钟阅读

GitHub

  繁體 雙語
Sounds made from hooking malloc and re-compiling itself... the sounds of GCC memory allocations... frequency corresponds to buffer size.
  • 源代码名称:ld_preload-sounds
  • 源代码网址:http://www.github.com/gordol/ld_preload-sounds
  • ld_preload-sounds源代码文档
  • ld_preload-sounds源代码下载
  • Git URL:
    git://www.github.com/gordol/ld_preload-sounds.git
    Git Clone代码到本地:
    git clone http://www.github.com/gordol/ld_preload-sounds
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/gordol/ld_preload-sounds
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    ld_preload声音

    通过钩子 malloc() 和 read() 生成WAV输出。 添加对其他调用的支持应该相当简单,请求请求非常受欢迎 !

    而且,它应该不会说。 但我还是会这么说的。 这是实验。 连接记忆和读电话可能会破坏事情,我不小心把buch配置的一个打开,因为在做更改的时候。 我破解了所以考虑到你警告。 我不希望你破坏你的系统,丢失文件,等等。 请确保你拥有所经过的程序所触发的任何文件的备份,你仍然有备份,不是你的备份。 你不?

    要构建,运行 make,你知道。 ; )

    要尝试它,运行 writeWav 脚本并使用程序参数来实验。 当你运行writeWav时,将在当前目录中创建一个用当前时间戳的名称创建的wav文件。

    否则,如果你愿意,你可以手动 LD_PRELOAD writeWav.so。 但是,如果手动预加载,则有一些应该注意的环境 var:

    需要:

    • writeWav_out ( 默认值:无)

    可选 :

    • writeWav_noread ( 默认值:false ) 如果 true,我们将不使用 read() 调用来生成数据。
    • writeWav_nomalloc ( 默认值:false ) 如果 true,我们将不使用 malloc() 调用来生成数据。

    如果要调整输出,则可以在靠近顶部的writeWav.c 中进行调整:

    /* * General wave generation parameters. * * parameter 1 - wave frequency in Hertz; should be clamped to a sane range * (e. g. 20-20000 Hz) with CLAMP_u(freq, min, max) * parameter 2 - wave duration in milliseconds * parameter 3 - wave amplitude (0.0-1.0)*//* * Size-based wave generatrion for malloc() calls. * * size - allocated memory size in bytes*/#defineMALLOC_WAVE_PARAMS(size) 
     CLAMP_u(size, 20u, 10000u), 20, 0.7f/* * Size and runtime based wave generation for malloc() calls. * * size - see 上面 * ticks - number of consumed CPU clock ticks since program start*/#defineMALLOC_WAVE_TICKS_PARAMS(size, ticks) 
     CLAMP_u(ticks, 20u, 20000u), 10, 0.7f/* * Size based wave generation for read() calls. * * requested - requested amount of bytes to read * returned - actual amounts of bytes read*/#defineREAD_WAVE_PARAMS(requested, returned) 
     CLAMP_u(requested, 20u, 20000u), CLAMP_u(returned, 100, 1700), 0.7f

    你可以在这里收听输出的一些示例:

    很多感谢 @davidfoerster 和其他一些用于fork和改进的 !


    OUT  输出  WAV  mal  钩子  hooking  
    相关文章