How do I create a custom search block?
You could simply call drupal_get_form() on the search form_id, which I think is - either search_block_form or search_form

And use drupal_render() on the returned array.

  print drupal_render(drupal_get_form('search_block_form'));


Though I might be wrong about the drupal_render() part, yet it seems to me since the drupal_get_form() returns an array drupal_render should be used on it.

Also this page might be helpful too - http://data.agaric.com/print-form-such-search-form-anywhere-drupal

Hope that helps.