日韩性视频-久久久蜜桃-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)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美熟妇7777一区二区 | 日韩三级黄色片 | 国产一区二区高清视频 | 欧美××××黑人××性爽 | 成人黄页| 伊人久久综合影院 | 好屌妞视频这里有精品 | 欧美性视频一区二区三区 | 欧美精品第二页 | 小宵虎南在线观看 | 毛片女人 | 久久亚洲熟女cc98cm | 欧美丰满熟妇bbbbbb百度 | 狂野欧美性猛交xxxx | 一区二区不卡视频在线观看 | 在线观看国产成人 | 免费黄视频网站 | 色xxxx| h在线免费观看 | 三级黄色免费片 | 一级欧美一级日韩 | 日韩免费av网站 | 人人射视频| 小泽玛利亚一区二区三区在线观看 | 综合色久 | 国产精品美女视频 | 污污视频免费看 | 绝顶高潮合集videos | 91成年影院 | 日本黄网在线观看 | 在线免费观看高清视频 | 精品久久久久久久久久久久久久久久久 | 97蜜桃网| 精品成人久久久 | 欧美乱妇在线观看 | 火影忍者羞羞漫画 | www.亚洲精品 | 成人黄色一区二区 | 国产毛片毛片毛片毛片毛片 | 懂色aⅴ一区二区三区免费 国产精品99在线观看 | 伊人色影院 | 日日噜噜夜夜狠狠久久波多野 | 成人在线免费视频观看 | 天天干天天日夜夜操 | 国产情侣自拍小视频 | 永久免费观看av | 久久精品人人做人人爽 | h视频网站在线观看 | 又黄又爽又色视频 | 色视频国产 | 国产精品第1页 | 狠狠爱网站 | 波多野结衣小视频 | 国产精品色片 | 天堂网av2018| 免费男女乱淫真视频免费播放 | 日韩精品第1页 | 婷婷丁香激情五月 | 给我看高清的视频在线观看 | 青青国产精品 | 男女偷爱性视频刺激 | 日日爱网站 | 天堂网在线最新版www中文网 | 白浆导航 | 国产极品探花 | 亚洲草逼视频 | 特黄做受又粗又大又硬老头 | 亚洲三级精品 | 97色在线| 好色av| 欧美人一级淫片a免费播放 西方av在线 | 欧美1234区 | 在线黄色网页 | 久久婷综合 | 亚洲黄色在线看 | 深夜视频在线观看免费 | 高清乱码免费网 | 网站av在线 | 卡一卡二在线视频 | 国精品一区二区 | 午夜电影在线播放 | a级特黄视频| 国产成人精品一区二区三区 | av片免费在线播放 | 国产麻豆xxxvideo实拍 | 娇妻之欲海泛舟无弹窗笔趣阁 | 午夜精品福利电影 | 国产福利视频在线 | 精品国模一区二区三区 | 久久久久久亚洲av毛片大全 | 免费视频91蜜桃 | www国产在线 | 国产精品成人69xxx免费视频 | 在线观看中文字幕2021 | 亚洲国产成人精品视频 | 国产夜色精品一区二区av | 色婷婷视频 | 亚洲素人 | 穿情趣内衣被c到高潮视频 欧美性猛交xxxx黑人猛交 |