1928年,伪满洲国的日本翻译伊丹英彦(仲村亨)离开中国情人丁慧(章子怡)返回日本,数年后他再回中国来到上海时,变身高级特务。而此时丁慧已成为地下抗日组织的成员,并与该组织首领谢明(冯远征)相爱。抗日组织去火车站接从外地聘请的暗杀日本情报人员山本的杀手时,误认其为小职员司徒(刘烨),混乱中,丁慧杀死司徒女友依玲(李冰冰),司徒则被伊丹英彦抓获。
对一系列遭遇无比迷惑的司徒被释放后,发誓要为依玲报仇。丁慧与伊丹英彦重逢,成为两股势力互相设局要利用的重要棋子,她本人正为误杀无辜饱受内心折磨。某个日本会所举办的舞会上,伊丹英彦告诉丁慧山本与谢明均已死,丁慧震惊想刺杀伊丹英彦之际,司徒持枪闯进舞会。。张宸是军事战术教官,经常辗转于世界各地为安保公司做战术培训。一次实战狙击训练中,某安保公司负责人马库斯在张宸完全不知道的情况下,通过他的指导完成了一次危险的实战救援行动,张宸愤怒的以“道不同不相为谋”回应了马库斯加入安保集团的邀请。张宸对此事始终不能释怀,正准备调查被救者的身份背景,却莫名其妙被卷入一起数十公里之外的谋杀案,成了当地的通缉犯。张宸被迫逃亡,并在同伴初五的帮助下找到了谋杀案幸存者黛米,希望能从对方被暗杀的原因入手,查出幕后黑手。黛米是一名记者,一直在调查难民失踪事件,张宸由此判断,要杀她的人一定和人蛇组织有关,是导致难民失踪的元凶,也就是陷害自己的人。张宸、黛米和初五三人相互配合,开始着手调查,他们有过矛盾争吵,有过怀疑猜测,但始终坚持不懈,并对彼此更加依靠和信任。然而更大的危机接踵而至,初五被炸身亡,黛米被绑架,人蛇组织的老大也被杀死,而马库斯才是这背后一切事件的真正推手。。