首页
社区
课程
招聘
我遇到难题了研究了一个月都快大小便失禁了
发表于: 2011-4-26 02:23 8423

我遇到难题了研究了一个月都快大小便失禁了

2011-4-26 02:23
8423
我是名net程序员,最近在学习用od找call ,自己用vs2010写了一个小程序想学习用od找到call

我先声明一下我找call 目的是学习游戏外挂开发,会用到远程注入的汇编功能,这需要了解call的每一个参数是如何来的

代码是用户vb2010.net4写的一个程序

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show("ok")
    End Sub
End Class

目的也就是找到messagebox的call ,用od 打开程序下断以后找到了
7533EA5F >/$  8BFF          MOV EDI,EDI
7533EA61  |.  55            PUSH EBP
7533EA62  |.  8BEC          MOV EBP,ESP
7533EA64  |.  833D 749A3475>CMP DWORD PTR DS:[75349A74],0
7533EA6B  |.  74 24         JE SHORT USER32.7533EA91
7533EA6D  |.  64:A1 1800000>MOV EAX,DWORD PTR FS:[18]
7533EA73  |.  6A 00         PUSH 0
7533EA75  |.  FF70 24       PUSH DWORD PTR DS:[EAX+24]
7533EA78  |.  68 A49E3475   PUSH USER32.75349EA4
7533EA7D  |.  FF15 34142E75 CALL DWORD PTR DS:[<&KERNEL32.Interlocke>;  KERNEL32.InterlockedCompareExchange
7533EA83  |.  85C0          TEST EAX,EAX
7533EA85  |.  75 0A         JNZ SHORT USER32.7533EA91
7533EA87  |.  C705 A09E3475>MOV DWORD PTR DS:[75349EA0],1
7533EA91  |>  6A 00         PUSH 0                                   ; /LanguageID = 0 (LANG_NEUTRAL)
7533EA93  |.  FF75 14       PUSH DWORD PTR SS:[EBP+14]               ; |Style
7533EA96  |.  FF75 10       PUSH DWORD PTR SS:[EBP+10]               ; |Title
7533EA99  |.  FF75 0C       PUSH DWORD PTR SS:[EBP+C]                ; |Text
7533EA9C  |.  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
7533EA9F  |.  E8 49FFFFFF   CALL USER32.MessageBoxExW                ; \MessageBoxExW
这是我要找的call
7533EAA4  |.  5D            POP EBP
7533EAA5  \.  C2 1000       RETN 10

几经测试也确定就是这里的call了,问题是esp和ebp都是指针,所有压入堆栈的的参数都会变化,我如何跟踪,我的天啊,高手啊救救我吧

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 226
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ebp在这里是用来寻址堆栈参数和局部变量的.再一个是保存esp.
esp在过程中会浮动.ebp在过程中不能随意修改.否则会引起程序崩溃(返回地址丢失).

没看明白您想表达的意思.能详细描述一下您疑惑的地方吗?
2011-4-26 03:13
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
CTRL+F9看看
2011-4-26 08:32
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

esp和ebp肯定不是固定的啊

不知道楼主要表达什么意思

你不是找到CALL了吗
2011-4-26 09:56
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
你OD調試是體力活,我脫殼才用,如果不是,不要用OD來調試,你根本看不懂
2011-4-26 10:32
0
雪    币: 1361
活跃值: (1136)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
往上找就会发现你想要的了
2011-4-26 11:56
0
雪    币: 143
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
OD不能调试.net的,楼主放弃吧
2011-4-26 13:15
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
找到有什麽用?你試試修改它,會怎樣?呵呵呵
2011-4-26 13:24
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
不是不可以,而是分析比較困難,好像看天書。.NET的有專門調試器
2011-4-26 13:26
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
有同感,我也在飘渺中
2011-4-26 17:05
0
雪    币: 95
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
请问下  .NET的專門調試器是啥呢??
2011-4-26 17:23
0
雪    币: 143
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
那就是不可以了,如果这也算可以,那我拿个UE32也可以分析了。你能调试到的都是解释库,不是程序的代码
2011-4-26 17:29
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我也想知道,net专门的调试器是什么?
2011-4-26 19:02
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
0.0,.net基本上小弟我用到現在。都是用靜態調適器,他的動態調適器不好用

不過他也是有動態的PEBrowseDbg

這個,不過我覺得這個不好用.......
2011-4-26 19:12
0
雪    币: 54
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
哇塞,这两个量本来就不定的啊,栈也只是一个内存段而已!你的初级会员怎么混到的?
2011-4-26 22:47
0
雪    币: 167
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
来到UltraEdit界面,按下ctrl+G,将刚刚记下的地址输入,看到该处的机器码为75,对应的就是刚才看的汇编指令JE,我们只要将它改为74,也就是JE,然后保存退出,就大功告成了.

lz笔误吧
2011-4-26 23:24
0
雪    币: 549
活跃值: (2240)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
17
就凭大小全失禁这精神,楼主一定能征服所有困难,支持
2011-4-28 22:34
0
雪    币: 4
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
路过 LZ加油
2011-4-29 00:39
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
19
如果你一定要用OD來調試,我覺得你精神可嘉,但是我建議不要浪費時間
2011-4-29 09:16
0
雪    币: 69
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
認真回答你,你的問題有三:

Q1. 瞭解call的每一個參數是如何來的
Q2. 目的也就是找到messagebox的call
Q3. 問題是esp和ebp都是指針,所有壓入堆棧的的參數都會變化,我如何跟蹤

A1. 你知道這個call有多少個參數,所以在step in/over這個call時,看一下堆疊,參數就在那裡。如果你已經在call裡面了,最簡單的做法就是先跳出(run to return)這個函數,然後設斷點。如果你還想知道那些參數倒底怎麼變到那裡的……這是大家都在研究的問題。

A2. 你已經找到了。
7533EA9F  |.  E8 49FFFFFF   CALL USER32.MessageBoxExW                ; \MessageBoxExW
就是呼叫MessageBox的函數,之前幾行則是它的參數。

A3. 壓入heap/stack的東西並不會改變,除非你(或者程式)去改變他。就算是動態分配(allocate)記憶體,存address的地方也會是固定的。
2011-4-30 00:40
0
雪    币: 95
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
嘿嘿,大小便失禁。。。谁让你去搞外挂。。。
2011-4-30 10:57
0
游客
登录 | 注册 方可回帖
返回
//