ARC_xp_20160530

1、

申請內存的地方在哪里?忘了...(應該是用的 malloc)

?

2、

鍵盤上按下一個鍵,處理的函數為:(所在的模塊 應該是“CEGUIIrrlichtRenderer.dll”)

003B465F      CC            INT3
003B4660  /$  53            PUSH EBX
003B4661  |.  56            PUSH ESI
003B4662  |.  57            PUSH EDI
003B4663  |.  8BF9          MOV EDI,ECX                              ;  ZC: ECX==[[[[[101649D4]+0C]+1C]+218]+58]
003B4665  |.  FF15 5CB03B00 CALL DWORD PTR DS:[<&CEGUIBase.?getSingl>;  CEGUIBas.?getSingleton@System@CEGUI@@SAAAV12@XZ
003B466B  |.  8BF0          MOV ESI,EAX                              ;  ZC: ESI==返回值==019FCAC0==[12F8BD8]
003B466D  |.  8B4424 10     MOV EAX,DWORD PTR SS:[ESP+10]            ;  ZC: 唯一參數,按鍵ASCII碼
003B4671  |.  0FB64C38 18   MOVZX ECX,BYTE PTR DS:[EAX+EDI+18]
003B4676  |.  51            PUSH ECX
003B4677  |.  8BCE          MOV ECX,ESI
003B4679  |.  FF15 6CB03B00 CALL DWORD PTR DS:[<&CEGUIBase.?injectKe>;  CEGUIBas.?injectKeyDown@System@CEGUI@@QAE_NI@Z
003B467F  |.  0FB75424 14   MOVZX EDX,WORD PTR SS:[ESP+14]
003B4684  |.  52            PUSH EDX
003B4685  |.  8BCE          MOV ECX,ESI
003B4687  |.  8AD8          MOV BL,AL
003B4689  |.  FF15 68B03B00 CALL DWORD PTR DS:[<&CEGUIBase.?injectCh>;  CEGUIBas.?injectChar@System@CEGUI@@QAE_NI@Z
003B468F  |.  84C0          TEST AL,AL
003B4691  |.  75 0A         JNZ SHORT CEGUIIrr.003B469D
003B4693  |.  84DB          TEST BL,BL
003B4695  |.  75 06         JNZ SHORT CEGUIIrr.003B469D
003B4697  |.  5F            POP EDI
003B4698  |.  5E            POP ESI
003B4699  |.  5B            POP EBX
003B469A  |.  C2 1000       RETN 10
003B469D  |>  5F            POP EDI
003B469E  |.  5E            POP ESI
003B469F  |.  B0 01         MOV AL,1
003B46A1  |.  5B            POP EBX
003B46A2  \.  C2 1000       RETN 10
003B46A5      CC            INT3

  ZC: (1)、injectKeyDown函數 是用于處理 回車 等的按鍵;(2)、injectChar函數 是用于處理 字符按鍵。

?

  ZC: CE 找到對應輸入文字內容的 2個緩沖區(CE修改2個緩沖區的內容,確定了 只有一個是用于發送信息的)

  ZC:   焦點處于輸入框時,對上面的緩沖區設置OD內存寫入斷點,會斷在 memcpy函數中

?

  2.1、injectChar 的代碼:(所在的模塊 應該是“CEGUIBase.dll”)

011B471F      CC            INT3
011B4720 >/$  6A FF         PUSH -1
011B4722  |.  68 A83E2301   PUSH CEGUIBas.01233EA8
011B4727  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
011B472D  |.  50            PUSH EAX
011B472E  |.  83EC 18       SUB ESP,18
011B4731  |.  56            PUSH ESI
011B4732  |.  A1 00892E01   MOV EAX,DWORD PTR DS:[12E8900]
011B4737  |.  33C4          XOR EAX,ESP
011B4739  |.  50            PUSH EAX
011B473A  |.  8D4424 20     LEA EAX,DWORD PTR SS:[ESP+20]
011B473E  |.  64:A3 0000000>MOV DWORD PTR FS:[0],EAX
011B4744  |.  8BF1          MOV ESI,ECX
011B4746  |.  8B4E 34       MOV ECX,DWORD PTR DS:[ESI+34]
011B4749  |.  85C9          TEST ECX,ECX
011B474B  |.  74 2A         JE SHORT CEGUIBas.011B4777
011B474D  |.  6A 00         PUSH 0
011B474F  |.  E8 4C940000   CALL CEGUIBas.?isVisible@Window@CEGUI@@Q>
011B4754  |.  84C0          TEST AL,AL
011B4756  |.  74 1F         JE SHORT CEGUIBas.011B4777
011B4758  |.  8B4E 38       MOV ECX,DWORD PTR DS:[ESI+38]
011B475B  |.  85C9          TEST ECX,ECX
011B475D  |.  75 0A         JNZ SHORT CEGUIBas.011B4769
011B475F  |.  8B4E 34       MOV ECX,DWORD PTR DS:[ESI+34]
011B4762  |.  E8 A9940000   CALL CEGUIBas.?getActiveChild@Window@CEG>  // ZC: 測試下來,緩沖區是這個對象的屬性
011B4767  |.  EB 10         JMP SHORT CEGUIBas.011B4779
011B4769  |>  E8 A2940000   CALL CEGUIBas.?getActiveChild@Window@CEG>
011B476E  |.  85C0          TEST EAX,EAX
011B4770  |.  75 07         JNZ SHORT CEGUIBas.011B4779
011B4772  |.  8B46 38       MOV EAX,DWORD PTR DS:[ESI+38]
011B4775  |.  EB 02         JMP SHORT CEGUIBas.011B4779
011B4777  |>  33C0          XOR EAX,EAX
011B4779  |>  C74424 0C 000>MOV DWORD PTR SS:[ESP+C],0
011B4781  |.  894424 10     MOV DWORD PTR SS:[ESP+10],EAX
011B4785  |.  C74424 08 904>MOV DWORD PTR SS:[ESP+8],OFFSET CEGUIBas>
011B478D  |.  C74424 28 000>MOV DWORD PTR SS:[ESP+28],0
011B4795  |.  85C0          TEST EAX,EAX
011B4797  |.  75 15         JNZ SHORT CEGUIBas.011B47AE
011B4799  |.  32C0          XOR AL,AL
011B479B  |.  8B4C24 20     MOV ECX,DWORD PTR SS:[ESP+20]
011B479F  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
011B47A6  |.  59            POP ECX
011B47A7  |.  5E            POP ESI
011B47A8  |.  83C4 24       ADD ESP,24
011B47AB  |.  C2 0400       RETN 4
011B47AE  |>  8B4C24 30     MOV ECX,DWORD PTR SS:[ESP+30]
011B47B2  |.  8B96 D4000000 MOV EDX,DWORD PTR DS:[ESI+D4]
011B47B8  |.  894C24 14     MOV DWORD PTR SS:[ESP+14],ECX
011B47BC  |.  895424 1C     MOV DWORD PTR SS:[ESP+1C],EDX
011B47C0  |.  8B10          MOV EDX,DWORD PTR DS:[EAX]
011B47C2  |.  8B92 C0000000 MOV EDX,DWORD PTR DS:[EDX+C0]
011B47C8  |.  8D4C24 08     LEA ECX,DWORD PTR SS:[ESP+8]
011B47CC  |.  51            PUSH ECX
011B47CD  |.  8BC8          MOV ECX,EAX
011B47CF  |.  FFD2          CALL EDX              ZC: here in
011B47D1  |.  837C24 0C 00  CMP DWORD PTR SS:[ESP+C],0
011B47D6  |.  0F95C0        SETNE AL
011B47D9  |.  8B4C24 20     MOV ECX,DWORD PTR SS:[ESP+20]
011B47DD  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
011B47E4  |.  59            POP ECX
011B47E5  |.  5E            POP ESI
011B47E6  |.  83C4 24       ADD ESP,24
011B47E9  \.  C2 0400       RETN 4
011B47EC      CC            INT3

  2.2、memcpy前的操作:(所在的模塊 應該是“CEGUIBase.dll”)

011148D9  |> \837E 04 20    CMP DWORD PTR DS:[ESI+4],20  // ZC: 對象屬性 與0x20比較,<=0x20則跳轉至ECX=ESI+14(注意是LEA);>0x20則ECX=[ESI+94]
011148DD  |.  76 08         JBE SHORT CEGUIBas.011148E7
011148DF  |.  8B8E 94000000 MOV ECX,DWORD PTR DS:[ESI+94]
011148E5  |.  EB 03         JMP SHORT CEGUIBas.011148EA
011148E7  |>  8D4E 14       LEA ECX,DWORD PTR DS:[ESI+14]  // ZC: 注意這里是LEA
011148EA  |>  50            PUSH EAX                                 ; /n
011148EB  |.  8D04AA        LEA EAX,DWORD PTR DS:[EDX+EBP*4]         ; |
011148EE  |.  50            PUSH EAX                                 ; |src
011148EF  |.  51            PUSH ECX                                 ; |dest
011148F0  |.  E8 79131100   CALL <JMP.&MSVCR100.memcpy>              ; \memcpy
011148F5  |.  83C4 0C       ADD ESP,0C    // ZC: 注意到貌似MSVCR100里面的函數都要在調用函數之后平衡堆棧(不像stdcall是在被調用函數里面平衡堆棧)

  ZC: 這里 對象中有2個緩沖區,一個是在 信息DWORD個數小于等于0x20時使用的,一個是?信息DWORD個數大于0x20時使用的(貌似這個緩沖區是動態申請的,應該是用的 malloc 但是沒找到具體在哪里分配內存...)

3、

 CE?對應輸入文字內容的 2個緩沖區 --> 定位 當發送消息時,操作緩沖區的匯編指令 --> 分析這些指令

4、幾個 地址:

基址   0x101649D4  模塊Irrlicht.dll              (XP中被加載到的地址:0x10001000) 偏移:0x001639D4  位于函數0x100E9410中[函數偏移0x000E8410]
基址   0x012F8BD8  模塊CEGUIBase.dll             (XP中被加載到的地址:0x01111000) 偏移:0x001E7BD8  位于函數0x011B40B0中[函數偏移0x000A30B0]
函數地址 0x011BDC10  模塊CEGUIBase.dll             (XP中被加載到的地址:0x01111000) 偏移:0x000ACC10  OD提示的函數名:“getActiveChild@Window”
函數地址 0x003B4660  模塊CEGUIIrrlichtRenderer.dll (XP中被加載到的地址:0x003B1000) 偏移:0x00003660  OD提示的函數名:“”

?

5、

?

轉載于:https://www.cnblogs.com/debugskill/p/5542486.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374609.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374609.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374609.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hibernate映射集合性能問題

首先&#xff0c;這篇文章的靈感來自于Burt Beckwith在2011年1月27日于SpringOne 2GX上發表的有關高級GORM –性能&#xff0c;定制和監控的演講 。 簡而言之&#xff0c; Burt Beckwith討論了使用映射集合和GORM中的Hibernate 2級緩存的潛在性能問題&#xff0c;以及避免此類性…

算法:1!+(1!+3!)+(1!+3!+5!) + ( 1! + 3! + 5! + 7! + 9!)+....+(1!+3!+5!+ ... + m!)...

-(void)touchesBegan:(nonnull NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event{ //算法入口 [self func2:9]; } //計算階乘 factor&#xff08;m&#xff09;&#xff1d; m&#xff01; -(int)factor:(int)m{ int factorNum0; if(m0|m1) return 1; e…

知道這 20 個正則表達式,能讓你少寫 1,000 行代碼

CocoaChina05-13正則表達式&#xff0c;一個十分古老而又強大的文本處理工具&#xff0c;僅僅用一段非常簡短的表達式語句&#xff0c;便能夠快速實現一個非常復雜的業務邏輯。熟練地掌握正則表達式的話&#xff0c;能夠使你的開發效率得到極大的提升。下面是技匠整理的&#x…

用Jackson進行Java JSON處理

JSON &#xff08;Javascript對象符號&#xff09;正成為一種非常流行的數據交換格式。 在使用諸如YUI&#xff0c;ExtJS&#xff0c;DOJO等Javascript框架開發Web應用程序時&#xff0c;我們可以使用XML或JSON在客戶端和服務器之間交換數據。 通常&#xff0c;我們從服務器獲得…

Android Togglebutton 默認背景被放大

1 . 最近在項目中自定義toggleButton 發現背景圖放入后 &#xff0c;比美工給我的原圖要大很大 2. 為什么&#xff1f; 3.比較ToggleButton 和TextView源碼 發現, toggleButton 設置了minWidth 和minHeigh &#xff0c;導致我的背景小圖被拉伸。 4.解決這種問題&#xff1a; 重…

MapReduce:簡單介紹

MapReduce是Google流行的一種并行編程技術。 它用于處理大量數據。 僅通過將工作并行分配給多臺機器&#xff0c;就可以在合理的時間內完成這種處理。 每臺機器都處理一小部分數據。 MapReduce是一種編程模型&#xff0c;使開發人員可以專注于編寫處理數據的代碼&#xff0c;而…

python翻譯詞典實例

#!/usr/bin/python # -*- coding:utf-8 -*- #通過有道翻譯來進行內容翻譯 import urllib2 import urllib import json #---------翻譯方法定義 start---------# def transfer( transferStr , lanSource auto ): data {type:lanSource,i:transferStr,doctype:json,xmlVersion:1…

元素分類--塊級元素(特點:獨占一行, 寬高邊距可改)

什么是塊級元素&#xff1f;在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>就是塊級元素。設置display:block就是將元素顯示為塊級元素。如下代碼就是將內聯元素a轉換為塊狀元素&#xff0c;從而使a元素具有塊狀元素特點。 a{display:b…

Java應用程序中的消息傳遞主體

消息傳遞是每個Java應用程序的關鍵方面&#xff0c;尤其是對于涉及企業應用程序集成&#xff08;EAI&#xff09;或關注點分離的應用程序&#xff0c;例如多層WEB應用程序。 消息傳遞可以分為兩個主要類別&#xff0c;即同步和異步。 另一方面&#xff0c;使用同步消息傳遞時&…

站立會議05(第二次沖刺)

一、站立會議信息&#xff08;配站立會議照片&#xff09; 第五天我們繼續開發&#xff0c;把注冊驗證信息完善一下&#xff0c;將開始網站公共主頁的開發。 二、任務進度 第五天我們注冊驗證完成。 三、任務看板&#xff08;圖&#xff09; 四、燃盡圖&#xff08;圖&#xff…

[SoapUI] DataSource, DataSourceLoop, DataSink

Script assertion in login: 轉載于:https://www.cnblogs.com/MasterMonkInTemple/p/4748189.html

1154. 一年中的第幾天

給你一個字符串 date &#xff0c;按 YYYY-MM-DD 格式表示一個 現行公元紀年法 日期。請你計算并返回該日期是當年的第幾天。 通常情況下&#xff0c;我們認為 1 月 1 日是每年的第 1 天&#xff0c;1 月 2 日是每年的第 2 天&#xff0c;依此類推。每個月的天數與現行公元紀年…

將CAPTCHA添加到您的GWT應用程序

什么是驗證碼&#xff1f; 在一個充滿惡意機器人的世界中&#xff0c;您該怎么做才能保護您寶貴的Web應用程序&#xff1f; 您真正應該做的基本事情之一就是向其中添加CAPTCHA功能。 如果您不熟悉&#xff08;聽起來有些奇怪&#xff09;&#xff0c;則CAPTCHA是確保用戶實際上…

SQL基礎語句

數據庫面試常見題 一、SQL語言包括數據定義語言、數據操作語言、數據控制語言和事務控制語言1&#xff1a;DDL(Data Definition Language)&#xff0c;是用于描述數據庫中要存儲的現實世界實體的語言。 CREATE TABLE - 創建新表 ALTER TABLE - 變更&#xff08;改變&#xff0…

YYModel Summary

YYModel Effect-> YYModel的作用Provide some data-model method—>提供一些數據模型的方法Convert json to any object, or convert any object to json.->對任何對象轉換成JSON&#xff0c;和對任何JSON轉換為對象Set object properties with a key-value dictionar…

iOS學習——ScrollView圖片輪播和同類控件優先級問題

iOS學習——ScrollView的使用和同類控件優先級問題 1. 布置界面 ScrollView的使用非常簡單&#xff0c;只有三步 1.1 添加一個scrollview 1.2 向scrollview添加內容 1.3 告訴scrollview中內容的實際大小 首先做第一步&#xff0c;布置界面。 拖拽一個scrollview就可以了 就…

Exchanger和無GC的Java

總覽 Exchanger類在線程之間傳遞工作和回收使用的對象方面非常有效。 AFAIK&#xff0c;它也是最少使用的并發類之一。 但是&#xff0c;如果您不需要GC&#xff0c;則使用ArrayBlockingQueue進行日志記錄會更簡單。 交換器類 Exchanger類對于在兩個線程之間來回傳遞數據很有…

構造函數的反射

1 import java.lang.reflect.Constructor;2 3 public class zzbds {4 public static void main(String[] args) {5 6 try{ 7 Class cStudent.class; //獲得無參構造函數8 Constructor constructorc.getConstructor(new Class[]{…

字符串連接“+”int、char、string

String s1 "21" "8" "54";System.out.println(s1);String s2 "21" 8 "54";System.out.println(s2);String s3 "21" 8 "54";System.out.println(s3);21854 21854 21854

使用Spring使用Java發送電子郵件– GMail SMTP服務器示例

對于使用Java發送電子郵件&#xff0c; JavaMail API是標準解決方案。 如官方網頁所述&#xff0c;“ JavaMail API提供了獨立于平臺和協議的框架來構建郵件和消息傳遞應用程序”。 必需的類包含在JavaEE平臺中&#xff0c;但是要在獨立的JavaSE應用程序中使用它&#xff0c;您…