抗日戰爭時期,日軍少佐谷野彰和軍械專家池田用活人試驗定點爆破雷,村民吳應德在實驗中存活,后加入八路軍。吳應德得知谷野再入龍頭溝,谷野彰和池田用活人試驗新改良的步槍,改良后的步槍射出子彈后留在人體內,穿透性達不到。吳應德用兩把壞槍拼成了一把怪槍,只是兩顆子彈在試驗時用了,他只好去日軍的試驗場找子彈和彈殼,找到后組裝成子彈。
沈鵬接到羅師長的命令讓吳應德必須活著回去,吳應德在開槍營救俘虜時發射了僅有的一顆子彈,他和沈鵬都被日軍活捉,池田對吳應德造的槍很感覺興趣,他認為他就是造槍的天才,還問起那把槍是如何工作的,池田只是想解決槍械的問題,吳應德用錘頭引發機關,射殺了谷野,隨后吳應德和沈鵬慌忙逃走,逃跑途中吳應德發進誤入雷區,他踩了一顆雷后停下來。
沈鵬將雷踩在自己腳下后讓吳應德趕快跑,日本兵圍住了沈鵬,他提起腳后和日本人同歸于盡,吳應德回頭時看到爆炸場面。谷野彰的叔父知道他死后向池田問起緣由。吳應德回去后向羅師長匯報了沈鵬的死換來了自己的生命,還看到那把拼湊的槍。八路軍修械所廠長任如堅找羅師長要吳應德,吳應德是自學成才的軍工天才,他到修械所后向任如堅報道。
任如堅一心想造自己的槍,他讓吳應德回去好好想一下。吳應德被任如堅安排在修械所隊長羅克繩那里,他提出修槍、造槍的想法,羅克繩讓他用桌上的那些零件造出槍來。吳應德在一柱香的時間內將一把槍拼好,羅克繩讓他把子彈裝在槍里朝他開槍,可吳應德拼的槍沒有裝彈勾,羅克繩讓他重新回去練習拆槍一個月。
一隊日軍跟蹤著八路軍的物資運輸隊,運輸隊的排長發覺后讓車先走,他知道日軍在人數上有優勢,還在等待天亮。八路軍發現林中日軍后果斷開槍,日軍雖然被狙殺,但他們也犧牲了兩名戰士。吳應德在槍械所里見到德國造的毛瑟槍,大胡子還拿出一包子彈,他們激情高昂地唱起軍歌。吳應德要和羅克繩比賽組裝槍支,羅克繩故意用帽子擋住視線,兩人幾乎在同一時刻將槍裝好,吳應德被安排到刺刀班學習,他在那里有些意見,還和羅克繩動起手來,任如堅到后制止了他們。
任如堅下命令讓他們一天最少要銑十把刺刀,吳應德提出調離,他請所長任如堅開介紹信,還要求上前線殺鬼子。吳應德拿著介紹信去部隊里見到三團的柳寶,柳寶對他提問,吳就德沒答上來,柳寶認為槍械所的人就是窩囊費,吳應德見到團長后提出要和團里最好的刺刀手練習拼殺,柳寶主動站出來要求用真刺刀拼殺,結果吳慶德輸了,但他心中仍有一把閃亮的刺刀。
羅師長派姚芳去執行秘密任務,在路上姚芳殺了幾名日軍并發現一箱軍火。吳應德吃飯時被同志們誤解,他說自己分到那里才兩個星期,他最清楚沒有槍就會死的道理,吳應德將一槍打死谷野彰的事情說出來,他聽到槍炸膛的消息后急忙趕過去查看,看后知道是槍膛里生銹造成的,團長命全團戰士馬上回去檢查槍支。吳應德從三團回到了槍械所,他造出了新型刺刀,還拿到三團里推廣,這種新刺刀贏得了好評。谷野命池田組織別動隊去偷襲槍械所,吳應德在轉移時突然鬧肚子,他急忙出去。天亮后呈應德混入城中,他看到日軍在盤查。
吳應德跟著劉老板混入城中,劉老板拿出良民證讓吳應德三人出錢買它,吳應德把他當成小人,但沒有良民證是無法出城的。吳應德在城中聽說趙八爺要成親,還要招短工,他過去應聘被錄用,還改名為趙平,到趙府后他被安排為劈柴工,可沒法領到賞錢。吳應德聽到外面的鑼鼓聲后過去觀看,趙八爺當天收了三個空箱子,還被日本任命為官員。吳應德在窗外聽到了洞房里的談話,他知道他們是八路,要剛一說話就被綁了起來。
姚芳將吳應德塞在床下,她是八路軍的游擊隊隊長,趙八爺晚上入洞房的時候被姚芳拿槍指住,姚芳放出信號后外面接應的同志展開行動,吳應德見趙八爺要開槍打姚芳時被他踢開,她沒給吳應德說話的機會就將大洋扔在地上幾個走了,吳應德慌忙解開身上繩子也溜出趙府。吳應德找到劉爺后見到池田也在那里,池田讓他拆槍,他需要劉爺破解武器的經驗,在池田走之前他向吳應德說起武器的含義,吳應德掏出大洋后拿到良民證,還要一把槍。
池田感覺自己遇害到了對手,他要在戰場上捕獲他。吳應德在去溫嶺的時候遇到一個人和他搭訕,他取完長槍后和老猴子同行,老猴子是逃難至此,還把八路軍看作是土匪,吳應德向他解釋說八路軍是人民的部隊,到了晚上吳應德聽到八路軍來的消息后拿起長槍過去查看情況,結果發現土匪以八路軍的名言劫道,吳應德看出埋伏的日本人是拿活人當靶子練習。吳應德聽到外面槍聲后出去查看,剛一出去就遇上了從馬背上下來的姚芳,他幫她將槍修好,兩人一同對付躲在后面的日本人。
吳應德讓人舉著紅布在跑動,日本狙擊手不知道該朝向何處開槍,他慌忙之中暴露了位置,吳應德上前引出了狙擊手,他身上被打中數槍,姚芳趁機打死了日本狙擊手,他們隨后將吳應德帶走后找人救治,幸好他的傷口不在要害位置。吳應德昏迷之中叫著秀兒的名字,他把女醫生江燕當成了秀兒,日本人突然來到醫院里搜查起來,江燕提前將他的槍收走。
任如堅在人群中找到了吳應德將他帶出去,可他們的一些同志被日軍抓住,槍里的子彈也打光了,想武裝救人有些困難,吳應德將跟著他的毛團介紹給他們,毛團說他能救人,還帶他們去找火藥。吳應德準備把鞭炮放在缸里吸引日本人的注意,毛團沖到日本人面前說八路軍來了,鞭炮聲響后日本人聽出來,他們沒上當,還開槍殺了兩名八路軍同志,等日軍趕到放鞭炮的位置后他們事先埋的炸藥發生了爆炸,任如堅安全帶同志們回到根據地。吳應德從冰面上帶回一些冰塊,他要給槍做實驗,吳應德找柳寶談話想讓他去兵工廠做試槍員。