日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mountain climbing WP

發(fā)布時(shí)間:2024/1/18 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mountain climbing WP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PE查殼,發(fā)現(xiàn)有殼

利用UPX靜態(tài)脫殼機(jī)脫殼

?打開exe文件,得到關(guān)鍵語句

?ida打開,shift+F12找到關(guān)鍵語句,F5反編譯

有隨機(jī)數(shù)組產(chǎn)生,而且是二維的

?編寫代碼得的隨機(jī)數(shù)列

#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {int i, j;srand(0xCu);for (i = 1; i <= 20; i++){for (j = 1; j <= i; j++){printf("%7d ", rand() % 100000);}printf("\n");}return 0; }

?下面就是走迷宮

if ( j_strlen(Str) == 19 ){sub_41114F(Str);v4 = 0;j = 1;i = 1;dword_423D78 += dword_41A138[101];while ( v4 < 19 ){if ( Str[v4] == 'L' ){dword_423D78 += dword_41A138[100 * ++i + j];}else{if ( Str[v4] != 'R' ){((void (__cdecl *)(const char *, char))sub_41134D)("error\n", v3);system("pause");goto LABEL_18;}dword_423D78 += dword_41A138[100 * ++i + ++j];}++v4;}sub_41134D("your operation can get %d points\n", dword_423D78);

?'L'是向下走一步,'R'是向右下走一步,可以走19步,從77開始選擇走'L'或者是走'R',選擇最大值走。手動(dòng)扒去的步法為:RRRRRLLRRRLRLRRRLRL

輸入發(fā)現(xiàn)是錯(cuò)誤的,證明是對(duì)步法進(jìn)行了改變。對(duì)我們輸入的str進(jìn)行跟蹤,看到了sub_41114F函數(shù),選擇OD動(dòng)態(tài)調(diào)試。

在函數(shù)sub_41114F上下斷點(diǎn),讓程序運(yùn)行到這里

對(duì)EAX寄存器進(jìn)行數(shù)據(jù)窗口下跟隨,看我們的值進(jìn)行了怎么的變化,F8單步步過,看到我們的值發(fā)送了變化

?重新執(zhí)行程序,看看我的值具體的變化

?F7單步步入,F4運(yùn)行到00411949 ? ?E8 57F7FFFF ? ? call ConsoleA.004110A5? 然后再F7步入,來到改變函數(shù)。

?F4運(yùn)行到0041181B,F7跳轉(zhuǎn)到0041194E,F8單步執(zhí)行,期間注意窗口值的變化,執(zhí)行到00411992,發(fā)現(xiàn)我們的第二個(gè)值R變成了V

?查看發(fā)現(xiàn),原來是對(duì)值進(jìn)行與4的異或,還是偶數(shù)項(xiàng)進(jìn)行異或。重新異或得到flag:RVRVRHLVRVLVLVRVLVL

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Mountain climbing WP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。