How to override  ad_adapi() in custom module
As the Advertisement module invokes that hook using module_invoke_all('adapi', 'permissions'), and it doesn't use drupal_alter('adapi'), your module could override that implementation of hook_adapi() using code similar to the following one. (I assume the short name of your custom module is "custom_module"; change it to the short name you are using for your module.)

function custom_module_adapi($op, $node = NULL) {
  switch ($op) {
    case 'permissions':
      return array(
        'access statistics' =&gt; TRUE,
        'access click history' =&gt; TRUE,
        'access activity log' =&gt; TRUE,
        'set status as pending' =&gt; FALSE,
        'set status as denied' =&gt; FALSE,
        'set status from pending to approved' =&gt; FALSE,
        'set status from pending to denied' =&gt; FALSE,
        'set status from approved to active' =&gt; TRUE,
        'set status from approved to offline' =&gt; TRUE,
        'set status from active to offline' =&gt; TRUE,
        'set status from active to expired' =&gt; FALSE,
        'set status from offline to active' =&gt; TRUE,
        'set status from offline to expired' =&gt; FALSE,
        // Add your permissions.
      );
      break;
  }
}

function custom_module_module_implements_alter(&amp;$implementations, $hook) {
  if ($hook == 'adapi') {
    // Move custom_module_module_adapi() to the end of the list. module_implements()
    // iterates through $implementations with a foreach loop which PHP iterates
    // in the order that the items were added, so to move an item to the end of
    // the array, we remove it and then add it.
    $group = $implementations['custom_module'];
    unset($implementations['custom_module']);
    $implementations['custom_module'] = $group;
  }
}



custom_module_adapi() is completely overriding the values returned from ad_adapi(); for this reason, it cannot simply add the extra values it needs.
The code I wrote is a kind of hack; the correct way would be for the Advertisement module to use drupal_alter() to allow third-party modules to override the values set from other modules. The code I wrote works, but you need to keep update the code for custom_module_adapi() with the code used in ad_adapi(), in the case it is changes.
Only the branch 7.x-1 has ad_adapi(); the branch 7.x-2 doesn't have that function anymore. If you are planning to use that branch, the code for your custom module should be changed.