Amir becomes good again by returning to Afghanistan and rescuing Sohrab, who, he discovers is his nephew. Since he had failed Hassan when they were both children, this is a form of redemption for him. Had Amir not been angry with himself for having not tried to save Hassan from Assef in that alley, he would not have manipulated events so that Hassan and Ali left the household. When Afghanistan fell apart, it is possible that Ali and Hassan might have escaped with Baba and Amir and not have died.
In rescuing Soharab, Amir is forced to face his nemesis, Assef, whom he defeats only with the help of Sohrab, who destroys Assef's eye with his slingshot, allowing Amir and Sohrab to escape. But even though he does not defeat Assef singlehandedly, he has confronted him with courage, paying Hassan back in a way for his failure to confront Assef when they were both children.
Amir was never bad. He only identified himself as worthless because he had failed Hassan by not helping him when Assef raped him. Because he was a child and fighting was not part of his nature, he could not protect Hassan. The other way that he failed Hassan was to set him up for stealing.
Amir has to come to terms with his own behavior. He flies to Afghanistan after he receives a letter from his father's friend Rahim. Rahim tells him the truth about Hassan. Amir decides that he will go and get Hassan's soon and take him to an orphanage. He has to confront Assef before he can take the boy. Assef tels him that he can not just take the boy.
"You have to earn him."(286)
"We have some unfinished Business, you and I," Assef said."(286)
"What's so funny Assef kept roaring with each blow."
Amir and the boy escape. Amir does not take the boy to the orphanage. He takes him home to America to raise him. By doing this he has redeemed himself.
"I brought Hassan's son from Afghanistan to America, lifting him from the certainty of turmoil and dropping him in a turmoil of uncertainty."(356)