Eraser

John Kruger is a U.S. Marshal working for the Witness Security Protection Program (WITSEC) specializing in "erasing" high-profile witnesses, faking their deaths to keep them safe from those who may wish to silence them. John is assigned by his boss, Chief Arthur Beller, to protect Lee Cullen, a senior executive for the defense contractor Cyrez Corporation, as Lee informed the FBI that her employer William Donohue, the corrupt CEO of Cyrez, plans to sell a top secret electronic pulse rifle on the black market.
To procure evidence, Lee copies critical data from the Cyrez mainframe onto two discs: one for the FBI, and the other as her own security. However, Donohue catches wind of Lee accessing the mainframe and orders her into his office. After confiscating Lee's hidden camera and threatening her with a pistol, Donohue commits suicide in front of her. Disgruntled with the FBI because of failure to guarantee her safety, she delivers the evidence but refuses to submit herself to WITSEC, despite John's advice. Unfortunately, the FBI's disc is intercepted by a mole working for Undersecretary of Defense Daniel Harper, who is revealed to be the true mastermind behind the arms sale.
That night, Lee's house is attacked by armed gunman led by a man with an EM rifle. John rescues Lee and takes her to New York City to hide her, keeping her location secret even from WITSEC. However, John soon learns from his mentor, fellow Marshal Robert DeGuerin, that several witnesses have been murdered because a mole in WITSEC is leaking information and they must relocate their witnesses. They raid a remote cabin and kill the mercenaries holding DeGuerin's witness hostage, but DeGuerin discreetly kills her during the raid, revealing he is the mole and a key player of the arms sale. By the time John realizes DeGuerin is the mole, DeGuerin has already traced Lee to NYC and has framed John as the mole by murdering WITSEC Deputy Monroe with John's gun. John escapes and rescues Lee from DeGuerin's gunmen in the nick of time. With Lee and John in the wind, DeGuerin has them both branded fugitives, cutting off any escape out of the city.
John, Lee, and Johnny Casteleone, a mob witness whose life John saved in the beginning of the film, penetrate Cyrez's office to read Lee's security-encoded copy. The disk reveals that at the Baltimore docks, DeGuerin and his conspirators plan to sell 1000 units of EM rifles to the notorious Russian Mafia boss Sergei Ivanovich Petrofsky, which threatens to usher in a dangerous new era of global terrorism. Cyrez operatives pinpoint their whereabouts and DeGuerin kidnaps Lee and has her brought to the docks where a railgun shipment is being loaded onto a Russian freighter. Fortunately, Johnny has his mobster cousin Tony Two-Toes and his two associates use their union connections to help John stop the shipment by killing all of DeGuerin's and Petrofsky's henchmen, including Petrofsky. In a final struggle atop a shipping container, DeGuerin holds Lee hostage, but John manages to free her and destroy the lock on the container crane, dropping DeGuerin and the container to the ground and exposing the presence of the rifles to the arriving authorities. John rescues the critically wounded DeGuerin and leaves him to be detained by Chief Beller and the authorities, clearing his and Lee's names in the process.
DeGuerin, Harper, and Morehart are indicted for treason and a few weeks later a hearing is held with the implication that under civil law jurisdiction a conviction and sentence of the culprits will not be possible, John publicly fakes his and Lee's death. As the conspirators debate whether or not to start a new operation, their limo pulls onto a train track and the driver, who turns out to be Johnny in disguise, locks the doors and exits the vehicle. John taunts DeGuerin with a final message: "You've just been erased" as a train crashes into the limo, killing the conspirators in a fiery explosion.

Question: Who plans to sell a top secret electronic pulse rifle on the black market?
Answer: William Donohue; William Donohue