首页
社区
课程
招聘
[旧帖] 如何用代码注入来来模拟Button按下 0.00雪花
发表于: 2009-12-1 15:36 9735

[旧帖] 如何用代码注入来来模拟Button按下 0.00雪花

2009-12-1 15:36
9735
自己用VC写的一个按下Button后运行一个MessageBox,我已经找到了

0012FB7C   77D18734  /CALL 到 假定的 WinProc 来自 USER32.77D18731
0012FB80   00200928  |hWnd = 00200928 ('Button1',class='Button',parent=0031081A)
0012FB84   00000202  |Message = WM_LBUTTONUP
0012FB88   00000000  |Keys = 0
0012FB8C   001D0047  \X = 71. Y = 29.

但77D18731却是
77D1870C   $  55            PUSH EBP
77D1870D   .  8BEC          MOV EBP,ESP
77D1870F   .  56            PUSH ESI
77D18710   .  57            PUSH EDI
77D18711   .  53            PUSH EBX
77D18712   .  68 CDABBADC   PUSH DCBAABCD
77D18717   .  56            PUSH ESI
77D18718   .  FF75 18       PUSH DWORD PTR SS:[EBP+18]
77D1871B   .  FF75 14       PUSH DWORD PTR SS:[EBP+14]
77D1871E   .  FF75 10       PUSH DWORD PTR SS:[EBP+10]
77D18721   .  FF75 0C       PUSH DWORD PTR SS:[EBP+C]
77D18724   .  64:A1 1800000>MOV EAX,DWORD PTR FS:[18]
77D1872A   .  8088 B40F0000>OR BYTE PTR DS:[EAX+FB4],1
77D18731   .  FF55 08       CALL DWORD PTR SS:[EBP+8]

如果我要代码注入(不使用鼠标或键盘)请问push的是哪些参数?想了一天了,实在想不出来!!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (34)
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
坐下学习,希望有所收获
2009-12-1 17:05
0
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
先系统学下基础??
2009-12-1 18:06
0
雪    币: 1534
活跃值: (738)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
汉....来了个没基础的
2009-12-2 00:13
0
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
恕吾天资愚钝,我实在没看懂LZ你要干么??
2009-12-2 00:41
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我晕死,怎么这么多装/B的(除5楼)
第一,这不是破解。
第二,这是代码注入。
第三,别装/B好不,注入代码只是要几个参数而已!你会你就说出来,我将非常感谢!不说我也没求你,OK!

回5楼
先感谢你回帖,我说的是代码注入(简单说就是外挂原理,网上有很多代码注入器的),只是现在我想实现的是通过代码注入来调用LBUTTONDOWN事件。我语文功底不行,实在很抱歉!
2009-12-2 12:23
0
雪    币: 163
活跃值: (103)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
先取那个按钮的句柄,再向主窗口发送这个数据
SendMessage
2009-12-2 12:24
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢回帖!你说的是通过编程实现,但我想要的是通过调用它的汇编代码,直接运行LBUTTONDOWN事件!
2009-12-2 12:34
0
雪    币: 163
活跃值: (103)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
也可以啊,找到那个按钮的事件地址,要调用的话,直接一个JMP跳过去
2009-12-2 12:48
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
JMP是不行的,只能Call,但Call是要参数的,我现在就是不知道这些参数是什么
2009-12-2 12:58
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我不知道你代码的意思,
0012FB7C   77D18734  /CALL 到 假定的 WinProc 来自 USER32.77D18731
0012FB80   00200928  |hWnd = 00200928 ('Button1',class='Button',parent=0031081A)
0012FB84   00000202  |Message = WM_LBUTTONUP
0012FB88   00000000  |Keys = 0
0012FB8C   001D0047  \X = 71. Y = 29.

没看到一句汇编代码

你可以直接加段代码给按钮发送一个鼠标按下消息
2009-12-2 13:08
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢回帖!这当然不是汇编代码,这是OD下断分析出来的,意思就是当前断下的77D3B036来自77D18731,他需要的参数在0012FB80这几个内存里面,77D18731的汇编代码在顶楼的下面已经贴出!
2009-12-2 13:24
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这个好像是按钮的消息事件吧,利用SendMessag来向一个控件发送系统消息,目体消息的参数是什么,你要查下这个函数吧。
我也不是太懂,呵。
2009-12-2 13:30
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢回帖!但我不是想用编程实现,我想的是汇编,直接调用Call实现。
2009-12-2 13:40
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
直接调用CALL实现,不就是在CALL前面push参数么。
说实话,你这个问题我看不懂。。。。
2009-12-2 13:43
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
你的意思是不是再写别外一个程序,来对刚才那个程序进行注入来达到按下按钮相同的效果。。就是弹出MESSAGEBOX框???
2009-12-2 13:45
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
其实1楼lz就已经说的很明白了 只是大家都不仔细看 ^_^
按钮事件是在消息循环里处理的 找到处理代码地址直接jmp过去就可以了 堆栈应该是平衡的
2009-12-2 13:49
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
LZ你无视我11L最后一句了。。你可以找个空地方,写个SendMessageA,
要知道你这是要自己凭空产生一个按钮消息。
消息是由系统发给窗口处理函数进行处理的,你的代码很有可能就是在系统的领空
77D1870C   $  55            PUSH EBP
77D1870D   .  8BEC          MOV EBP,ESP
77D1870F   .  56            PUSH ESI
77D18710   .  57            PUSH EDI
77D18711   .  53            PUSH EBX
77D18712   .  68 CDABBADC   PUSH DCBAABCD
77D18717   .  56            PUSH ESI
77D18718   .  FF75 18       PUSH DWORD PTR SS:[EBP+18]
77D1871B   .  FF75 14       PUSH DWORD PTR SS:[EBP+14]
77D1871E   .  FF75 10       PUSH DWORD PTR SS:[EBP+10]
77D18721   .  FF75 0C       PUSH DWORD PTR SS:[EBP+C]
77D18724   .  64:A1 1800000>MOV EAX,DWORD PTR FS:[18]
77D1872A   .  8088 B40F0000>OR BYTE PTR DS:[EAX+FB4],1
77D18731   .  FF55 08       CALL DWORD PTR SS:[EBP+8]
2009-12-2 13:52
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
回16楼
就是这个意思

目前能做到的就是
push 140054;鼠标坐标
push 1
push 201
push 3065e
MOV EAX,7FFDD000
MOV ECX,40000000
MOV EBX,0
call 77d3b036
但这样必须要鼠标移动到按钮上才会想用LBUTTONDOWN事件,貌似push 140054无用

而且LBUTTONUP
push 140054;鼠标坐标
push 0
push 202
push 3065e
MOV EAX,7FFDD000
MOV ECX,40000000
MOV EBX,0
call 77d3b036
这样虽然能弹出MessageBox,但按下MessageBox确定后就会出错
LBUTTONUP出错解决,原来是少传了EDX值!
2009-12-2 13:53
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
按钮事件的确是在消息循环里处理的。。而且LZ已经处理了消息,就是弹出一个对话框,
但是LZ是不要手动点击按钮,让程序自己点击,
不点击按钮就没有消息产生,所以,LZ这个问题是在问怎么产生一个按钮点击消息
2009-12-2 13:56
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我也不是太懂线程的注入,但看你上面的方法,那根本不对,因为你的两个程序的空间是隔离的,你后面那程方法能够弹出MESSAGEBOX框,肯定不是第一个程序的,而是你后面那个程序弹出的。。。
你现在要做的就是在第二个程序里向,第一个程序的按钮发送按下事件的消息。。。不要管他CALL不CALL的。。。。。。。。。
只能帮你到这里了,下面的我了不会了,
祝你好运。。

补充:
如果在同一程序里发送消息事件的话,就更容易了,,根本不需要注入!!!
直接SendMessageA消息就行了!!!

下面是在百度里搜的SendMessageA
函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
  函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
  参数:
  hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
  Msg:指定被发送的消息。
  wParam:指定附加的消息指定信息。
  IParam:指定附加的消息指定信息。
  返回值:返回值指定消息处理的结果,依赖于所发送的消息。
  备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。
2009-12-2 14:04
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
大哥,你理解错我的意思了,我不凭空产生一个按钮消息,而是代码注入,用另外一个程序去通过call去调用LBUTTONDOWN事件,而且看这地址就知道这代码就是在系统的领空。不过非常感谢你!
2009-12-2 14:04
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
23
...回帖速度真快

泥巴同学 楼主的意思你可能还没完全弄明白阿
楼主就是不要通过消息循环 而达到单击按钮的效果   意思也就是说 直接找到弹消息的代码地址 跳过去执行   
感觉挺便扭的*__*'
2009-12-2 14:14
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
汗,那我还真是不理解你的意思了,我等答案吧。。
上面这么多帖,我只看到xacker能明白你的意思。。。。
2009-12-2 15:22
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
板凳学习哦,看看大牛们如何解决
2009-12-2 17:14
0
游客
登录 | 注册 方可回帖
返回
//