CTF
Reverse
Reverse Engineering
by watermelon
who am i?
西瓜
- 建電副社+學術
- 揪寒訓
- APCS忘記帶身分證的傻逼
- I人 不敢跟你打招呼一定是因為我社恐
- 什麼都學 啥都學不好
- 夜貓子
- :suicide:
- 貓戰/LOL 玩家

推個研究大攝影
Self_intro
root@watermelon
---------------
Name:watermelon_chou
Age:16
Class:221
Location:Banqiao
Interest:Self-study
Skill:nothing
CPU:Bad
GPU:Very Bad
Memory:Low
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNNWMMWWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNOc:oKWNNNWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNl..,kWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMMWWWWWMMMWWNNWMMMWNNWWMMMWNNWWMMMWNNWWMMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNNWMNo..'kMMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNo..,kWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWWNNNXKK0OOOOOOOkOO0KKXXNNWWMMMWWWNWWMMMWWWWWMMMWWNWWMMMWWNWWWNXXXKl..,OWWNNWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNX0Oxollc:;,,'''.....''''',,;:clodxOKKXNWWWWWWWWWWWWWWWWWWMMWWWWKkl:;;;:,..,kWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMMWNNWWMMMWWNK0kdl:,'.....''',,,;;;;;;;;;;;,,,''......,,;cldk0XWMMMWNWWWMMMWWWNWWO:'.',;,'...,kWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWWWWNKkoc;'...',,;;::clllloooodddddooooooollcc::;;,''....,:ldOXNWWWWWWWWWWWW0;..;xKXKx;..,kWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMWXOxl,...',;:clloooddooooooooooooddddooddddooooooooolc:;,''..';cd0NWNNWWMMMWx,..oNMWWXl..,OWWWNWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWN0kl;',;;;;clooodooddooooooooddooooodddddddddddddddddddddddolc:;,'..':okKNWWWWW0:.',oO0Oo,..cKWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMMWWWWWXkl,,,',clddooooooooooooooooooddddxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkxdlc;'..';okXWNWW0c'..'''..'l0WWMMMWWWWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXko:;,,:cldxxddooooddoooooddddxxkkOOOOO000000000OOOOOOOOOOOOO00000OOOOOOkdl:'..':d0NWWNOc'...'cONWWWWWWWWWWWWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNWNKx:'.,;codxxxxdddoddooooddxxkkOO0000OOOOOOOO0000OOOO00000OOOOOOkkkkxxxxxxdxxxdo:,'..,lkX0o;'.'lONWMMMWWWWWMMMWWWWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWKd;..',:odddddddddddooddxkOOOO00OOO00OOOOOOOO000OOO000OOOkkxxxddddddoooooooooddoodol;'..':,..'cONWWWWWWWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWNNWWMMMWWWNKd,..';cooooooooooooddxxkOO00OOOOOOOOOO0OOOOO0OO00OOOkkxxddooooooooooooooooooddoooooodd:......;kNWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXx:',,;coddodoooddoodxkOO00OO00OOOOOOO000OO00O00OOOkxddddoooooooooooooooooooooooooddxxkkOx:.....'cONWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWNOc,,,:lodoooooddooddxOO00OO00000OOOOOOO0OOO00OOkkxddoooooooooodooooooooooooooooodxxkOOOOOO0koc,,'..,lKNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXd;',;coddoddooododxkO000O0OOOO0OO00OOO0OO00OOkxddooooooooooooddodooooooooooooddxkOOO00OOOO00O0Odol;''':kNWWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWNWNWW0c,,,:oddddoooooodxkO0OO0OOOOOOOOO00OOOOOOOkkddoooooooooooooooooooooooooooodddxkOOOOOOOOOOO00O0Oxdodoc;,';dXWWNWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWNx;',;cddoddooddodxkO00OOO0OOOOOOOOOOOO00OkxddooooooooooooooooooooooooooooodxkkO00OOOOOOOOOOO0OOOkdooddddl,',c0NWWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMXd;'';lodoodooodddkO0OO00OOO00OOOOOOOOOOOkxdooooooooooooooooooooooooooooddxkOOO00OOOOOOOOOOOOOOOOkdddddddxOo,..;kWWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWXo''';loodoooooodkOO0OOOOOOOOOOOOOOO00OkxdoooddooddoooooooooooooooooooddxkOOOOOOOO0OOOOOOOOOO0O0OkddddddddkOkl,'.,xNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWNWWWMMMWXl''';loooooooodxkOO000OOOOOOOOO00OOOOkdooddodoodddodddoooooooooooooodxkOO00OOOOOOOOOOOOOO000OO0OkdddddddddxOOkl,..,xWMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWXo,'';oooodoooddxO00OO000OOOOOOOOO00OxdoddoolcloodddddddooooooooooodxkOO00000OOO00OOOOOOOOO00O0OOxddddddddodkOOOxc,'.,kWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWWNd,',;lddoooddodkO00OOO00OOOOOOOO0OOxdooooooc''',;cloddodooooooooddxOO00OOOOOOOOO00OOOOOOOO00OO0Oxdddddddddodk00Oxol,..;OWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWk,..,ldoddoooodkO0OOO00OOOOOOOOOOOxdooooooo:'.....',;:codooooooddkO00OOO00OOO0000OOOOOOOOO0OO00OxdoddddodoooxO00Okdoc'..:KWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWWWWM0:.',cddoodooodkO0OOOOOOOOOO0OO0Okddodooddo:'..;oo:,'..',:cldddxkO00OO00OOOOOOOOOOOOOOOOOOOOO0OkddddoooooooodxO000Oxoo:'.'oNWNNWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWNo'.':ooodoooodkOOO0OOOOOOOOOO0Okxdoooooodo:'..;x00Okdl;'...';cdk00OO0OOOO0OOOOOOOOOOOOOOOOO00Oxdddddoooooooodk00OOOxool;..,kWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWWWWMMMWO,..,ldooddoodxO0OOOOOOOOOOO00Oxdoooodoodo:'..;x00O00O0Oxo;'...';ldkOOOOO0OOOOOOOOOOOOOOOOOOOkxddddddooooooodxOOOOOOxdooc'..cXMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWNo..':ooooooooxO0O00O00OO0OO0Okdoooooooodoc,..,dOOO00OO0O0k:'.'''..',:lxOO0OOOOOOO000OO0OO0OOxdddddoooooooododk0OOOOOkoodo;'.,kWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWNNW0;..,ldoodododkOOO0OOOOO00OOOkdooooodooddl,'.'lOOOO0000O0k:..';lc:;''..';cdkO0OOOOO0000000OkdoooooooooooodoodxOO0OOOOkooooc'..lXWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMM
WWWWWWWWWWWWWWWWWWWx'.':odoodoodk0OO00O0OO00OOOxdoodoooooddo;..':oddxkkkOOOkc'.';ooooolc;,''.',:oxOOOO0OOOOOOxdooooooooooooodooxO00OOOOOkdoddl,'.;0WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMNo..'coododooxO0OO0OO00000Okxooooooooooooc'..;ooodoooddddc'.';loooooodolc:;'...';lodkO00OkdooooooooooooooooodkOOOOOOOOxooooo:'.,kMWWWNWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWKc..,loodododkOOOOOOO00O0Okdddooooooooodl,..'cddoooodoooc'..,loooodoooooooolc;,'...';codddooddoddoooooooododkO0OOOOOOOxodooo:'.'dWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWNW0;..,loododoxOOOOOOOOO00Okdoodoooooooooo:'..;odddooooodl,..'cooooooooooooooooooc:,,''..',:cooddoddooddoooodxO0O00O0O0Ododoooc'..lNMMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWO;..;oooooodkOOOOOOOOO00kdodoooooooooddl,..,lxddddooooo:..':oooooooooooooooooooooollc;,'..',;clooooodoooooxOOOO00OOO0kdoooodc'..lXWWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMO;..;odoooodk0OOOOOOO0Okdoodoooooooooooc'..:kOOOkkkxxxl,..,loooooooooooooooooooooooooolc:,'...',:loodooooxO0OOO00OO0Oxooooodc'..lXWWWNWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWMO;..;odooooxO0O00OO00Okdodooooooooooooo;..'oOOOO00000Ol'..:oooooooooooooooooooooooooooooool:;,'..',;clodxk0OOO000OO0Oxooooodc'..lXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWNW0;..,ldooooxOOO00OO00kxooddoooooooooodl,..,x0OOO00OO0k:..,cooooooooooooooooodoooooooooooooooooc;,''..';cdO00OOO00OO0kdooooodc'..lXWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWKc..,ldooodkOOOO0OO0Oxooooooooooooooodl'..:k0OOO00OO0d,..;loooooooooooodoooooooollloooooddoooooool:;,'..';cdkO00OO0Oxddooooo:'..dWWWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMNo..'coododk0OOO0O0Okdoddoooooooooooodc'..ck00OO00OO0o,..;ooooooooooooodoooooc:,''':ooooooddoooooddolc:,'..',:lxkO0kdooodooo;..,kMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWx'..;oooodk0OO00O0kdoooooooooooooooodl'..cO00OO00OO0o'..:oooooodddoooooool:,'.....:oodooooooooooddoodool:;''..';loddooododl,..:0WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWNNW0:..,ldoodkOOO0OOOxoooooooooooodoodxOo'.'cO0OO0000O0o'.':ooodddddddoooooo;........;ooooooooooooooooooooooolc;,'..'';:looooc'..lXWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWNo'.':ooodkO0OO00kdoooooooooooooodkO0o'..cOOOO00OOO0o'..;oooddddddddooool;......',coooooooooooooooooooooooooool:;''..',;cl,..,kWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWO;..,ldodk00OO0OxooooooooooddodxO0O0d,..:k0O000OO00d,..,lddddddddddoooool;,''',:looodooooooooooooooooooooooooooolc;,'..''...cXMWWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWMMWWNo'..:oooxO0OO0kdoooooooooooodkO0OO0x;..;x0OOOkkkxxo;.',ldddddddooooodoooollllooddooooooooooddooooooooooooooooooooooc:,'...';oOXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWWWWMK:..'cooxO0OOOxooooooooodoodkOOO0O0k:..'lxdddoooodo:',':dddddoooooooooooooooooooooooooooooooooollooooooooooooooooooooolc;,'..';lxKNWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWO,..,lddk0OOOdoooooooooddxO00OO0OOOo'..;oooodoooddo,',;looooooooooooooooooooooooooooodoooolc:,',looooooooooooooooooooooolc:,'...,cdOXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWWNx,..;ldk0OOkdooodooddodkO0OO0OOOO0x;..,ldoooodddddc''';loooooooooooooooooooooooooooooool:,'.'.'coooooooooooooooooooooooooool:;,'..';lx0XWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWMWWWWNo'.';lxO0OxodooodooodkO0OOOOO00O0Ol'.':ododddddddd:..':ooodoooooooooooooooooooooodoooc,....'.'coooooooooooodooooooooooooooooolc:,''..,cdOXWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWXo'.';oOOOxooodddoodkO0OOOOOOOOO00x;..'cdddxxxkOOOx;..':oooooodooooooooooooooooooooooc,....'.,loooooooooooddooolccloddoodooooooool:;,'..';oxKWMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWXo'.';dOOxddoodooxk00OOOOOOOOO0OO0o,..;xOO000000OOx;..':looodooooooooooooooooooooooooc,'''';cooooooooooooool:;''';odooooooooooooooolc:,'..';ld0XWWWWWMWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWWWWMMNd,..,dOxooooooxkO0OO0OOOOOOOOOO0Ol'',ck0O00OO00OOx;..';loodoooooooooooooooooooooooooolclloooodoooooooool;'''.'.,looodoooooooooooooooolc;,,'.':okKNWWWWMMMWWWWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWNk;..,ldodooodkO00O00OOOO00OOOO0Ox:,,,lk00OO000OO0kc'.',cooodooodoooooooooooooooooooooooooooooooooooooo:..'..'.;ldoooooooooooooodoooddddc,,,'..',cd0XWMWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWNNWWW0c'.';lodddk00O0OO00OOO00OOOkxxdl:,''ck0OO000OO00Oo,'.';loooooooooooooooooooooooooooooooooooooooooooo:'.'...':ooooooooooooooooooooddoc,,',loc;'..':okKNWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXd,..':odkOOOOO0OOOOOOOkxxdoddddo:'.':kOO0OOO0OOOOx:'..,:loooooooooooooooooooooooooooooooooooooooooooc;,,,;cooooooooooooooooooooool:,'';dOOOkdl;'..',cxKWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWNNN0l'..,lk00OOOOOOOkkxddodoooodddo:'..;dOO00OOO00O0Od;.'',:loooooooooooooooooooooooooooooooooooooooooooooooooodoooooooooooooooooo:,'',cxO0OOOO0Oxo:'.'.cXWWMMMWWWWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNk:'.';okOOOkxxxddoooddooddooooo:''',lkO00O0OO0OOxoc,'..,:loooooooooooooooooooooooooooooooooooooooooooooooodooooooodddddooooc;'.',lkOOOO0OO0O0Ol'..;kNWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNWWXx:'.';lodddddddxdddddoooooooooc,'.':xOOO0OOkxdoodoc,'..';clooooooooooooooooooooooooooooooooooooooooooooooooooodddddddddl;'..':lddxO0O0OO0Ok:'..:0WMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXx:'..,coddddddxxddooddddddxxkxc,..,lkOOkxdooooooooc:,..',;clooooooooooooooooooooooooooooooooooooooooooooooodddoodoolc;'.';looooodxOOOOOd;..'lKWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWXkc'';;;lxkkkkOOkkkkOOOOOOOO0Od:'..,ldoooooodoooddool:,..',;clloooooooooooooooooooooooooooooooooooooooooodxddodoc;,;;;;loooooodoodxkkc'..;xNMWWNNWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWN0dc;,,:loxOOOOOOO0OO000OO0O0Oo;'..,cooooodooodxkO0Oxl:,..''';:cloooooooooooooooooooooooooooooooooooooodxxolc;,,;coxkxdddoooooodoc;'.'l0NWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWXOdc;,;:cllodxxxxxkkkkkkkkkkxc,..',:lodooodkOO00OO0Oxoc;,'..',;:clooooooooooooooooooooooooooooooooollc::;,;:lxO000Okddooooooc;'..;kNWNNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXOdc,''',;:clooddoooooodddooc,'..';lodxOOOOOO00OO00Okxdl:,'..'',;:clloooooooooooooooooooooollc:;,'.',:ldk0000O000Okxddol;'..,oKWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMWXOdc,'..'',;:clloodddooooooc;'..';lxOOO000OOOOO00OOOOOkdl;,'....'',;;:::ccclllccccc::;;,,''..',:loxO0OOOO00OOOOOOxl;''.,l0NWWWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXOdl:,'..'',,;::cclllooooc;,'..,:okO0OO00OOO0OOOOO0Oxdolc:;;,'''......''''''''....'',,;;:oxO0OOO0OO00OOO000Od:'.',lONWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNXKOxoc;,'.....''',,,,,,''....',:oxO00OOOOOOOOO0kdooooddoolodolccc::;;;;:::c::clloddodxkO00OOOO000OO0Oxl;'.',o0NWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNXKOkxdolc:;;,,'''''''''''..,:ldkO000000OOxoodooodoodk000O0OOOOOOOOOO0OxddddddoodkOOOOOOO000Oko:,..':dKWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWWNXKK00000000000kl;'..';:odkOO0OkdoodododooxO00OO0OOOOOOOO0000kxdddddooodkO0OO00Oxo:,..',lONWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXOdc,'..',;:looooddoddoodk000O00O00OOO000000OxdoddoooooxOOOxdc;,..',lkKNWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNNWMWXkdc,'...'',;:clooodxO0OOO00OO000O0000O00xdoddddoolllc;,...':lkXWMWNNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNKOkxl:,'..'',,;:codxkkkOOO00000O00OOOxolcc:;;,''...':lx0NWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MMMWWWWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWWWWMMWWWWNXKOxoc:,'.....',,;;:cccccccc::;;;,'.....',:ldk0XNWMMMWWNWWMMMWWNWWMMMWWWWWMMMWWNWWMMMWWNWWMMMWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNKOkxolc:;,,,,'.','....'',,;;:lodkOKNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMMWWNWWMMMWWWWWNXK000OkOOOkkkOO0KKXXNNWMMMWNNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWWNWWMMMWNNWWMMM
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
Index
intro
Problems
Practice
這頁真是做的可有可無
這句也是
這句也是
這句也是
這句也是
這句也是
這句也是
intro
What's reverse?
normal engineering
machine language
assembly language
High-level programming language
global start
section .text
start:
mov rax, 0x2000004
mov rdi, 1
mov rsi, msg
mov rdx, msg.len
syscall
mov rax, 0x2000001
mov rdi, 0
syscall
section .data
msg: db "Hello, world!", 10
.len: equ $-msg
fn main()
{
println!("hello world!);
}
compile
(編譯)
assemble
(組譯)
reverse engineering
machine language
assembly language
High-level programming language
global start
section .text
start:
mov rax, 0x2000004
mov rdi, 1
mov rsi, msg
mov rdx, msg.len
syscall
mov rax, 0x2000001
mov rdi, 0
syscall
section .data
msg: db "Hello, world!", 10
.len: equ $-msg
fn main()
{
println!("hello world!);
}
decompile
(反編譯)
deassemble
(反組譯)
to know how program work
Analysis Methods
Stastic Analysis
Dynamic Analysis
only analysis code
analysis code while program actually running
Stastic Analysis
Dynamic Analysis
{Reverse}
-
先分析(不用執行 相對安全)
-
程式不能跑
-
惡意程序 跑了有危險
-
壞了 跑不動
-
-
太複雜:難跑所有執行路徑
-
有delay/定時:要等很久
-
有一些執行條件太苛刻
-
後分析(要執行:怕有危險)
-
依賴特定輸入
-
使用者輸入、網路、隨機數
-
-
代碼經過混淆(複習crypto)
-
依賴環境
-
離開測試用虛擬機才會發作的病毒(wannacry)
-
{Reverse}
{Reverse}
-
好康的:
破解一堆程式(西瓜沒有教 絕對沒有教)- 增進寫code的debug效率/經驗
- 檢查程式有沒有 惡意代碼 或 漏洞
{Reverse}
-
經常用到的能力
-
各種程式語言:
- python 編寫解碼程式
- C++ (ida等逆向工具的逆向結果都是C++)
- 組合語言
- 熟悉逆向工具、反推、debug
- 動態分析:ollydbg,X64dbg
- 靜態分析:ida
- 耐心:讀程式碼很躁 但是讀久了自己寫起來也會進步
- 只教軟體的部分的部分 電路逆向我也不會阿阿
{assembly}
{assembly}
-
assembly 組合語言(汇编语言)
-
屬於低階語言 語法內容單純
-
直接對CPU的暫存器(register)操作
-
效能較好
-
機器依存性:(Machine-dependent)
-
用不同指令集的CPU無法直接移植code
-
-
-
機器語言:屬第一代低階語言 直接用1、0操作 可讀性低
-
-
用 簡短字串 取代機器語言
-
經過組譯器轉成CPU指令集(0/1)
{assembly}
Processer
Instruction Set
assembly
組合語言
指令集
處理器
{Machine-dependent}
Processer
Instruction Set
assembly
Processer
Instruction Set
assembly
Processer
Instruction Set
assembly
A
A
A
B
B
B
{指令集}
-
叫CPU做事情的指令們
-
複雜指令集(ex:x86)
-
一指令包含>=1個動作(ex:add = add + mov)
-
減少代碼量 省RAM
-
每個指令執行時間不同(指令無法同步執行)
-
加上轉譯層可以轉成精簡指令集
-
-
精簡指令集(ex: arm powerPC(現多用於遊戲機))
-
產生背景:編譯器優化 C++出現 RAM變便宜
-
apple開發的Rosetta 2可以x86->arm
-
-
- 指令集架構的故事(影片)
{x86}
-
intel開發8086cpu時做的指令集
-
做的太成功了 所以以後的cpu都叫80x86好了 (x∈Z⁺)
- 所以指令集都選擇要兼容它
- 複雜指令集
- 最常見的指令集
{Registers}
{Register}
-
Register 暫存器
- CPU 中一種極快的內部記憶體
- CPU可以直接操作的記憶體 其他都要從 ram/硬碟運送過來
- 容量:Register < RAM < Disk
- 速度:Register > RAM > Disk
- 暫存器大小(以A為例)
- RAX:64位
- EAX:32位
- AX:16位
- AH:8位(高)
- AL:8位 (低)
{Register}
-
Register 暫存器
-
常見暫存器
-
通用暫存
- AX:存 計算結果 最常用
- CX:迴圈計數器
- DX:輔助計算(例:除法餘數 乘法進位等等)
-
非通用暫存器-Pointer(指標:指向位置)
- EIP/RIP:紀錄目前執行的位置
- ESP/RSP:呼叫堆疊最上面函數的的頂端
- EBP/RBP:最上面函數的底端
-
通用暫存
{Register}
-
Register 暫存器
-
常見暫存器
-
非通用暫存器 - Flag(旗幟:表示狀態)
- ZF(Zero Flag):運算結果是否為 0。
- CF(Carry Flag):是否發生進位或借位。
- OF(Overflow Flag):是否發生溢位。
-
非通用暫存器 - Flag(旗幟:表示狀態)
- 表示法(以rax做舉例)
- rax:表示rax指向的位置儲存的值
- [rax]:表示rax的位置


下一條指令位置

表示資料大小

奇偶性
正負號
字串方向
{Sections}
devive ELF files
{Sections}
Section | Introduction |
---|---|
.bss | Uninitialized data |
.data | Initialized data |
.rodata | Read-only data |
.text | Executable instructions, e.g. main function |
.init | Runtime initialization instructions |
.fini | Runtime finalization instructions |
.plt | PLT, Procedure Linkage Table |
.got |
GOT, Global Offset Table |
etc. | just google when encountered |
{x86 syntax}
填大坑
{x86}
-
欸不是你們認真要聽嗎
-
我覺得全講你們會睡死
-
有些略過 遇到自己看
{Common}
;註解
;mov a,b 把b值移到a暫存器
mov rax,0x00 ; rax = 0x00
;資料大小 ptr 位置 =>從<位置>開始讀入<資料大小>個資料
mov bl,byte ptr [rax] ;
;lea = Load Effective Address
;像mov 但傳的是指標
;可用於陣列(陣列變數就是存他的起始位置)
lea rax, [address] ;lea register,pointer
lea ax, word ptr [ebx] ;如果 ebx = 0x12345678 , ax = 0x5678
lea rax, c ;如果有一個 c 的變數 rax = c的位置
nop ;no operation
{Arthmetic}
inc rax ;rax++
dec rbx ;rbx--
add rax, 0x87 ;rax += 0x87
sub rbx, 0x69 ;rbx -= 0x69
mul cx ;ax*cx (ax is set by defualt)
;actually: dx:ax = ax*cx (in case of carrying)
div cx ;ax = ax % cx
;dx = ax / cx
{Bitwise}
and al,0xFE ;&=
or al,0x1 ;|=
xor al,0x87 ;^=
not al
neg al ;2's complement of al
{Bitwise}

略
{Bitwise-2}
shl rax, 4 ;rax = rax << 4
shr rbx, 2 ;rbx = rbx >> 2
rol rax, 2 ;rotate left
ror rax, 2 ;rotate right
略
{Bitwise-2}

略


略
{cmp rax,rbx}
-
vleft = vright
-
ZF=1 ; CF=0
-
-
vleft > vright
-
ZF=0 ; CF=0
-
-
vleft < vright
-
ZF=0 ; CF=1
-
{jmp address}
{jCC}
jump condition code

JC | Jump if carry |
---|---|
JO | Jump if overflow |
JP | Jump if parity |
JS | Jump if sign |
JZ | Jump if zero |
-
呼叫:讓程式執行直接跳到指定行
-
語法:
-
call address(位置)
-
- 移動到指定的地址
- 執行函數的時候會用到
{call}
{call address}

略
{example}
#include <iostream>
int add(int a,int b)
{
int sum = a+b;
return sum;
}
int main()
{
printf("%d",add(1,2));
}
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
把1,2放進兩個暫存器
呼叫print
呼叫上面那個函數
stack frame
把輸入的相加
結束
stack frame
stack frame
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
把1,2放進兩個暫存器
呼叫print
呼叫上面那個函數
把輸入的相加
結束
stack frame等等教
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
把1,2放進兩個暫存器
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
把1,2放進兩個暫存器
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
把1,2放進兩個暫存器
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
0000000000001139 <_Z3addii>:
1139: 55 push rbp
113a: 48 89 e5 mov rbp,rsp
113d: 89 7d fc mov DWORD PTR [rbp-0x4],edi
1140: 89 75 f8 mov DWORD PTR [rbp-0x8],esi
1143: 8b 55 fc mov edx,DWORD PTR [rbp-0x4]
1146: 8b 45 f8 mov eax,DWORD PTR [rbp-0x8]
1149: 01 d0 add eax,edx
114b: 5d pop rbp
114c: c3 ret
000000000000114d <main>:
114d: 55 push rbp
114e: 48 89 e5 mov rbp,rsp
1151: be 02 00 00 00 mov esi,0x2
1156: bf 01 00 00 00 mov edi,0x1
115b: e8 d9 ff ff ff call 1139 <_Z3addii>
1160: 89 c6 mov esi,eax
1162: 48 8d 05 9b 0e 00 00 lea rax,[rip+0xe9b] # 2004 <_IO_stdin_used+0x4>
1169: 48 89 c7 mov rdi,rax
116c: b8 00 00 00 00 mov eax,0x0
1171: e8 ba fe ff ff call 1030 <printf@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: 5d pop rbp
117c: c3 ret
Disassembly of section .fini:
0000000000001180 <_fini>:
1180: 48 83 ec 08 sub rsp,0x8
1184: 48 83 c4 08 add rsp,0x8
1188: c3 ret
{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};

{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};
程式運行=stack堆疊
Stack:只能從上面拿
FILO:first in last out
{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};
程式運行=stack堆疊
Stack:只能從上面拿
FILO:first in last out
IP
Instruction Pointer
main()
RSP
RBP
{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};
程式運行=stack堆疊
Stack:只能從上面拿
FILO:first in last out
IP
Instruction Pointer
main()
RSP
RBP
{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};
程式運行=stack堆疊
Stack:只能從上面拿
FILO:first in last out
IP
Instruction Pointer
main()
RSP
RBP
a()
{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};
程式運行=stack堆疊
Stack:只能從上面拿
FILO:first in last out
IP
Instruction Pointer
main()
RSP
RBP
a()
{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};
程式運行=stack堆疊
Stack:只能從上面拿
FILO:first in last out
IP
Instruction Pointer
main()
RSP
RBP
a()
b()
{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};
程式運行=stack堆疊
Stack:只能從上面拿
FILO:first in last out
IP
Instruction Pointer
main()
RSP
RBP
a()
b()
{Stack frame}
function a()
{
b();
};
function b()
{
//do nothing
};
function main()
{
a();
};
程式運行=stack堆疊
Stack:只能從上面拿
FILO:first in last out
IP
Instruction Pointer
main()
RSP
RBP
a()
{Stack frame}
hidden

{control flow}
condition:if-else

{control flow}
condition:if-else

將rbp丟到stack
{control flow}
condition:if-else

rbp = rsp(下=上:沒東西)
rbp = rsp(下=上:沒東西)
{control flow}
condition:if-else

rsp上移:留空間給main
{control flow}
condition:if-else

scanf():讀入函數
{control flow}
condition:if-else

test a,b
ZF = A and B
只有a=b=0時
ZF = 0
{control flow}
condition:if-else

Jne 到1189那行
{control flow}

if zero
{control flow}

if not zero
{control flow}
loop:for/while

迴圈內容
判斷
{control flow}
loop:for/while

{control flow}
loop:for/while

{control flow}
loop:for/while

{control flow}
loop:for/while

迴圈
判斷
think about it
How about do-While loop?
{assemblyinc++}
-
其實c++裡面也可以直接執行組合語言
-
在c++裡面放
__asm{ ... }
...塞組合語言 - 所以你可以用很麻煩的方法寫a=b
{Kali linux}
{Kali linux}
如果大家都裝好我就跳過ㄌ
{Disclaimer}
請勿以任何測試或學習名義在現實環境進行攻擊
觸犯法律者之行為,講師/電研社不負任何責
{Kali OS?}
Kali Linux is a Linux distribution designed for digital forensics and penetration testing.
It is maintained and funded by Offensive Security.
The software is based on the Debian Testing branch: most packages Kali uses are imported from the Debian repositories.
copy from wikipedia
NOT FOR BEGINNER
{Installation}



{Settings}
Virtual box:
(extension)


{Settings}
Virtual box:
(wifi)



{Settings}
Virtual box:
(wifi)





Fool-proof teaching==
DONE

kali
{deCompliers}
{Ida Free}
{Ida}
-
幾乎是最好的反編譯器
- 支持插件(Pro) ex:
- IDAPython:寫出自己的腳本 自動化分析
- FindCrypt:加密法相關
- 版本
-
ida pro:要錢
- 本體許可證(1975USD)+任一指令集架構(2765USD)
- 貴到炸開 => 揪團買 or 🤫🤫
-
ida free:免錢
- 版本較舊 不支援插件 但對新手小白很夠了
- debugger只支援安裝的系統的執行檔
- 裝在windows:只能跑.exe / .dll
- 裝在linux:只能EIF
-
ida pro:要錢

free版本的限制
Sugar daddy buy me IDA Proo(≧口≦)o
{Installation}
{Basic usage}
-
F5:反編譯
-
Ctrl + 放大 ; Ctrl - 縮小
-
n:變數重命名
-
\:隱藏轉換(ex:dword之類)
- /:註解
-
shift+F12:顯示string頁面
- Ctrl-F 尋找
{ida-開啟檔案}

直接點開這女的
{ida-開啟檔案}

直接點開這女的

{ida-開啟檔案}

直接點開這女的

開新的
點之前開過的
{ida-開啟檔案}
通常會自動辨認格式(不用動)
讓他分析

{ida-開啟檔案}
程式流程圖
所有會用到的
函數

按F5反編譯
(筆電可能要檢查FN)
轉16進位
導出之內容
導入之內容
{ida-開啟檔案}
偽代碼
(pseudocode)
tab切換其他欄
code好小
<Ctrl + >放大
反編譯完會出現偽代碼(類似c++)d

{ida-開啟檔案}
Shif+F12 檢視
string
(跟前面講的strings命令差不多)



{debugger}
for dynamic analysis
{x64dbg}
open source windows debugging tool

{x86dbg}
-
免費 開源 用於windows
- 另一個選擇:Ollydbg
- 只能debug 32位執行檔
- 作者已經停止更新
- 可以選擇安裝/免安裝版

/release/x96.exe

免安裝版本
32位元/64位元
安裝
{x86dbg}

- 跟C++在debug差不多
- 執行(F9):繼續執行到斷點/故障/結束
Ctrl+F9: 執行到函數返回處 - 暫停(F12)
- 單步步入(F7):
執行該行 跳到下行 有function會跳進去 - 單步步過(F8):
執行該行 跳到下行 function會當作一行跳過去 不會進入 - 跟蹤步入(Ctrl-Alt-F7):
類F7但會跑到外部函式庫 - 跟蹤步過(Ctrl-Alt-F8):F8+跟蹤
1.
2.
3.
5.
4.
6.
{x86dbg}
-
常見技巧1-從checkpoint強制跳轉
- 情況 有一個解碼function沒有被呼叫(例題)
- 從ida找到main function跟關鍵function的地址<addr>
- 法一:
- 在main function裡面設定斷點(按紅點)(ctrl-G 跳指定位址)
- 修改eip到addr
- 法二:用x86dbg直接修改組合語言
- 在main function中找一行直接改成jmp addr
{x86dbg}

右鍵要改的行
{x86dbg}

按組譯改assembly
{x86dbg}
記得要有0x(hex)

{x86dbg}
記得要有0x(hex)

改過了
{x86dbg}
-
常用技巧二-if判斷跳過
- 較簡單的序號破解就這樣搞的
- 靜態分析找到if判斷位置
- 修改成直接跳過去
Stastic
Analysis
{file}
{file}
Example:
┌──(kali㉿kali)-[~/Desktop/test]
└─$ file target
target: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,
BuildID[sha1]=d7b296368a701ecb103ee1dd86eee4c61a31cfe5,
for GNU/Linux 3.2.0, not stripped
{Commands}
-
strings
- 印出所有可列印字串(ascii 32-126)
-
strace
- 追蹤程式進行時的 call 跟 signal
- kali 沒有內建:
sudo apt install strace
- extend:file descriptor
-
grep
- 中文:正則表達式
- usage:grep 正則表達式
- practice
- combo(?):strings filename | grep flag{
{strings}

{grep}

{CTF}
{FQA}
-
zsh: permission denied:
-
$chmod u+x filename
-
Thanks for listening
CTF-Reverse
By idoit_melon
CTF-Reverse
- 212