五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

算法分析丨Reversing-x64Elf-100逆向題

2022-04-08 14:07 作者:rkvir逆向工程學(xué)院  | 我要投稿

1.下載查殼

64位無殼

2.拖進(jìn)IDA具體分析

(1)shift+F12查找是否有關(guān)鍵字符串

發(fā)現(xiàn)關(guān)鍵字符串“nice!”,按照經(jīng)驗(yàn)來看這就是成功驗(yàn)證后的提示

(2)找到引用關(guān)鍵字符函數(shù)

(3)閱讀代碼可以知道流程:要求用戶輸入一個(gè)字符串存入s中,將s地址作為參數(shù)傳給sub_4006FD,將sub_4006FD的返回值最為調(diào)用sub_4006FD函數(shù)的if判斷條件,如果返回值為非零值則提示“Incorrect password!”,所以要讓sub_4006FD返回值為0

(4)跟進(jìn)sub_4006FD函數(shù)

閱讀代碼可以發(fā)現(xiàn)只有for中的if條件滿足時(shí)才會(huì)返回非零1,但是我們想要的是返回,所以要在這11次循環(huán)中讓if條件不成立,那查看條件

*(char *)(v3[i % 3] + 2 * (i / 3)) - *(char *)(i + a1) != 1

使每次循環(huán)v3對(duì)應(yīng)數(shù)組的值加上2 * (i / 3)的值作為地址,取該地址的值

減去每次(i + a1)地址的值,判斷相減的結(jié)果是否為1,不為1的話就繼續(xù)循環(huán),為1的話就會(huì)返回1,那么我們肯定是使它循環(huán)完11次返回0,仔細(xì)看這里的a1就是我們?cè)趍ain函數(shù)中出入進(jìn)來的我們輸入的字符串的地址值,那么重點(diǎn)來了,我們的目的就是不然if條件成立,那么就可以寫成

*(char *)(v3[i % 3] + 2 * (i / 3)) - *(char *)(i + a1) == 1

這樣算出來的(i + a1)對(duì)應(yīng)地址的值就是正確的值

那直接寫腳本

#includeint main() { ? ?int i; // [rsp+14h] [rbp-24h] ? ?int n = 0; ? ?__int64 v3[4]; // [rsp+18h] [rbp-20h] ? ?int a1[11] = {1}; ? ?v3[0] = (__int64)"Dufhbmf"; ? ?v3[1] = (__int64)"pG`imos"; ? ?v3[2] = (__int64)"ewUglpt"; ? ?for (i = 0; i <= 11; ++i) ? ?{ ? ? ? ?for (size_t n = 0; n < 222; n++) ? ? ? ?{ ? ? ? ? ? ?if (*(char*)(v3[i % 3] + 2 * (i / 3)) - n == 1) ? ? ? ? ? ? ? ?a1[i] = n; ? ? ? ?} ? ?} ? ?for (size_t i = 0; i < 15; i++) ? ?{ ? ? ? ?printf("%c",a1[i] ); ? ?} }


定義一個(gè)變量n最為我們輸入的每個(gè)字符對(duì)應(yīng)的ASCLL碼值,設(shè)n的最大ASCLL碼值為200,通過不斷地判斷(char)(v3[i % 3] + 2?(i / 3)) - n == 1來把滿足條件的n存入我們的正確flag數(shù)組中

3.結(jié)果


算法分析丨Reversing-x64Elf-100逆向題的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
潮安县| 张家口市| 汾阳市| 黑龙江省| 兰西县| 榆社县| 兴安县| 德化县| 金川县| 青浦区| 三明市| 堆龙德庆县| 霞浦县| 华池县| 罗田县| 灵寿县| 朔州市| 视频| 平山县| 乃东县| 民勤县| 伊宁县| 乌拉特后旗| 余江县| 常宁市| 分宜县| 湘潭县| 临安市| 麟游县| 济南市| 福贡县| 芦山县| 普陀区| 湘潭县| 新闻| 汕头市| 沙洋县| 万全县| 兴安县| 斗六市| 含山县|