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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

170928 逆向-Reversing.kr(Direct3D_FPS)

發布時間:2023/12/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 170928 逆向-Reversing.kr(Direct3D_FPS) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1625-5 王子昂 總結《2017年9月28日》 【連續第361天總結】
A. Reversing.kr-Direct3D_FPS
B.
這次DX讓我有點慫……
一直對這種大型程序都心有畏懼,可能是因為沒寫過不了解其原理吧

解壓出來可以看到包含一個DX庫,一個Data文件夾下放置著各種圖片和音效資源,一個exe

運行一打開就把我嚇了一跳,差點以為不小心打開的恐怖游戲……

這囧囧的怪物,還有后面那張好像兵庫北的微笑的圖片(:з」∠)

慣例拖入IDA查找字符串,這次核心函數就在WinMain中
由于函數太長就不放全部內容了
大體上可以根據游戲畫面中左下角顯示的10和失敗提示找到HP
根據槍聲音效找到射擊控制部分
根據按鍵的Switch結構找到移動部分
另外射擊的后坐力和音效是有一定的間隔的,這意味著一定有一個計時器(否則將會不間斷的連續產生槍聲音效,很違和)

試玩了一下,很簡陋不過五臟俱全了,基本上開5槍才能殺死一個怪;另外隨著距離增加還有隨機的散射效果

基本理清整個程序的結構,怪物和自己應該都是對象,在內存中各占132個字節
不過沒分析清楚類的成員;只能看出來有存活標識和HP兩部分

沿著GameClear!的字符串可以找到勝利檢查函數:

int *Is_win() {int *result; // eax@1result = dword_E49194;//怪物[0]地址while ( *result != 1 )//遍歷,發現有存活就跳出{result += 132;//指針指向下一個怪物if ( (signed int)result >= (signed int)&unk_E4F8B4 )//遍歷完全{MessageBoxA(hWnd, "CkfkbuliLE\\E_ZF\x1C\a%%)p\x1749\x01\x16IL \x15\v\x0F麟褒爰秈跓躔櫛皓", "Game Clear!", 0x40u);//顯示flagreturn (int *)SendMessageA(hWnd, 2u, 0, 0);}}return result; }

從遍歷完全的e4f8b4和開始的e49194作差,除以單位長度可以得知一共是50個單位

很明顯flag的值不全是可見字符,說明在別的地方還有解密操作,通過交叉引用可以找到
在這里:

int __thiscall hit(void *this) {int result; // eax@1int v2; // ecx@2int v3; // edx@2result = sub_E43440(this);//得到被擊中的怪物指針if ( result != -1 ){v2 = 132 * result;v3 = dword_E49190[132 * result];//該怪物的血量,OD中查到是100if ( v3 > 0 ){dword_E49190[v2] = v3 - 2;//每單位時間hp-2,實際上一槍經過了10單位時間(槍聲間隔),即一槍是20hp}else{dword_E49194[v2] = 0;flag[result] ^= byte_E49184[v2 * 4];//flag的第n個字節與第n個怪物對象的某個數據進行異或}}return result; }

乍一看不一定能識別出來這個函數是做什么的(沒有注釋的話啦
但是查看交叉引用就能發現這個函數是在下述過程中被調用的:

if ( dword_E47BD4 ){hit(v12);if ( dword_E47BD8 < 5 )//也許是后坐力導致的鏡頭偏移?但是從游戲觀察來看鏡頭上抬是和音效同步的,即一次槍聲上抬一次;不明白這里的gap的作用sub_E41880((int)&flt_E47BE0, dword_E47D70, (int)&v21);elsedword_E47BD8 = 0;++dword_E47BD8;if ( shoot_gap >= 10 ) // 每10單位時間播放一次音效{shoot_gap = 0;PlaySoundA("data\\Shoot.wav", 0, 1u);}++shoot_gap;}

很明顯,是射擊函數
由此可以推斷hit函數中進行的是運算等邏輯部分

我直接用IDC打印了一下對象的值,發現是空的;說明還有動態申請的過程
在IDA中直接運行游戲,然后IDC腳本打印:

IDC>auto i;for(i=0;i<50;i++)Message(“%d “, Byte(0xe49184 + i*132*4));
0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144 148 152 156 160 164 168 172 176 180 184 188 192 196

還好,就是i*4,很好處理
直接python腳本跑一下就能得到:
先Dump字符串的ASCII值

IDC>auto i;for(i=0;i<50;i++)Message(“%d, “, Byte(0xe47028 + i));
67, 107, 102, 107, 98, 117, 108, 105, 76, 69, 92, 69, 95, 90, 70, 28, 7, 37, 37, 41, 112, 23, 52, 57, 1, 22, 73, 76, 32, 21, 11, 15, 247, 235, 250, 232, 176, 253, 235, 188, 244, 204, 218, 159, 245, 240, 232, 206, 240, 169,

然后腳本處理

s = [67, 107, 102, 107, 98, 117, 108, 105, 76, 69, 92, 69, 95, 90, 70, 28, 7, 37, 37, 41, 112, 23, 52, 57, 1, 22, 73, 76, 32, 21, 11, 15, 247, 235, 250, 232, 176, 253, 235, 188, 244, 204, 218, 159, 245, 240, 232, 206, 240, 169] for i in range(50):print(chr(s[i] ^ i*4), end='')

Congratulation~ Game Clear! Password is Thr3EDPr0m

這題中i*4的值是很簡單的,如果很困難怎么辦呢?
其實還可以寫外掛,增傷鎖血之類的
將hit函數中的hp-2改為-100(實踐來看,遠距離的散射效果似乎是按照每單位時間進行的,也就是說如果離得遠很有可能一槍的1/10沒打中啥的……奇妙的判定)

這樣可以快速將怪打完,剩最后一只了合影留個念

但是最后clear了也沒彈窗,再檢查一下內存:

IDC>auto i;for(i=0;i<50;i++)Message(“%d “, Byte(0xe49194 + i*132*4));
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1

最后有2個單位還沒死……想了一下,應該一個是中間那個大圓球,一個是自己吧
自殺理論上來說跟最后一只怪倒是說不定有可能;但是中間那個大圓球被命中的時候不會觸發hit的擊中判定(下斷未觸發),所以也就不會被扣血量,更不可能殺死……

╮(╯_╰)╭沒轍,正常游玩下是不可能得到flag的
有點好奇會不會有人五槍一只、慢慢打死48只怪獸,然后發現啥都沒有呢……太惡意了OTZ

整體來說,逆向C++的類只能算初入門,還欠缺很多……
(IDA的動態調試真難用,但是ODDump內存更不方便啊QAQ)

C. 明日計劃
算法學習
Reversing.kr

總結

以上是生活随笔為你收集整理的170928 逆向-Reversing.kr(Direct3D_FPS)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女人张开腿让男人插 | 免费国产视频在线观看 | 午夜一区二区三区免费观看 | 午夜影院私人 | 热热热av | 97国产精品人人爽人人做 | 黑人一级黄色片 | 成人性视频在线 | 日本免费色 | 蜜桃精品在线 | 嫩模被强到高潮呻吟不断 | 欧美精品999 | 成人欧美精品一区二区 | 少妇裸体挤奶汁奶水视频 | 国产经典毛片 | 91丨九色丨海角社区 | 男人激烈吮乳吃奶爽文 | 在线播放少妇奶水过盛 | 亚洲精品国产精品乱码不99热 | av女星全部名单 | 亚洲欧美国产一区二区 | 韩国伦理片免费看 | 成人一区二区三区在线观看 | 99re8在线精品视频免费播放 | 亚洲国产精品久久 | 在线播放你懂的 | 国产精品一二三四 | av网站免费看| 久久精品区 | 色欲久久久天天天精品综合网 | 亚洲国产日韩a在线播放性色 | 91成人入口 | xx久久| 香蕉网久久 | 欧美日韩亚洲天堂 | 午夜精品一区二区在线观看 | 女同av在线播放 | 日韩精选视频 | 中文字幕亚洲乱码熟女一区二区 | 青草草在线观看 | 岛国精品在线观看 | 久久人人爽天天玩人人妻精品 | 国产精品入口日韩视频大尺度 | 国产精品第12页 | 久久亚洲AV无码 | 亚洲av无码久久忘忧草 | 精品自拍视频 | 日韩中文字幕国产 | 成人免费视频网站 | 在线国产区 | 狠狠干美女 | 亚洲欧美亚洲 | 中文字幕日韩欧美一区二区三区 | 亚洲精品国产精品国自产 | 色婷婷av一区二区三区软件 | 麻豆精品| 日韩毛片儿 | 伊人99热 | 在线1区| 成人av免费在线看 | 夜夜夜综合| 国产美女主播在线观看 | 91国偷自产中文字幕久久 | 日本a级片网站 | aaa亚洲精品 | 少妇无码吹潮 | 九九九免费视频 | 欧美αv | 麻豆久久久久久 | 欧美色综合天天久久综合精品 | 强伦人妻一区二区三区视频18 | 污网站在线免费看 | 成年人午夜视频 | 亚洲激情黄色 | 国产在线视频99 | 欧美综合在线观看 | 不用播放器的av网站 | 色欧美色| 一区二区三区免费网站 | 日本www免费 | 日本一二三不卡视频 | 国产美女明星三级做爰 | 亚洲一区二区三区影视 | 闷骚老干部cao个爽 av九九九 | 欧美久久成人 | 成人动漫免费在线观看 | 97涩涩网| 欧美成本人视频 | 涩涩成人| 有奶水的迷人少妇 | 欧美综合国产 | 国产精品理论在线观看 | 国产成人啪精品午夜在线观看 | 免费毛片视频 | 精品国产精品网麻豆系列 | 欧美自拍第一页 | 一本色道久久hezyo无码 | 成人av18 | 久久青草免费视频 |