国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
永和县| 西畴县| 青冈县| 连江县| 囊谦县| 廊坊市| 星子县| 乡城县| 六盘水市| 伊金霍洛旗| 怀远县| 夹江县| 拜城县| 通辽市| 响水县| 九江县| 奉贤区| 班戈县| 中江县| 汉沽区| 齐河县| 阿拉善盟| 丹阳市| 宝应县| 会泽县| 新晃| 兴隆县| 公主岭市| 德惠市| 临漳县| 贡觉县| 日喀则市| 屯昌县| 江西省| 宁都县| 五寨县| 泾阳县| 金溪县| 体育| 来凤县| 石城县|