无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ó)家法律
平遥县| 柳林县| 乳源| 姚安县| 民权县| 阳城县| 永城市| 阳朔县| 洛川县| 尉氏县| 黄平县| 中牟县| 迁安市| 时尚| 海阳市| 敖汉旗| 久治县| 九龙城区| 韶关市| 明光市| 筠连县| 威信县| 中卫市| 南开区| 长汀县| 香格里拉县| 舞阳县| 陇南市| 扶风县| 荔波县| 鄂托克旗| 凌海市| 铅山县| 开阳县| 蒙城县| 宝丰县| 乐业县| 大竹县| 五河县| 丘北县| 安丘市|