首页
社区
课程
招聘
[已解决] 跨进程发消息 150.00雪花
发表于: 2022-10-15 16:44 7725

[已解决] 跨进程发消息 150.00雪花

2022-10-15 16:44
7725

有一个程序A,打开A程序的一个窗口B,B窗口有一个表格,
在B窗口上有一个“关键词"按纽,点击这个按纽,打开窗口C,在C窗口上有字符串列表
在B窗口上的表格中任点选一个单元格,然后点C窗口中的字符串列表可以把选中的字符串发送到B窗口选中的单元格中.
在另外一个贴中,Mxixihaha 大佬说不需要这么麻烦 他的原理就是选择一下 行和列 然后mgGridCtrl->SetrWindowText 即可完成该项的文字
请Mxixihaha大佬帮忙。
不需要点C窗口,给B窗口中的指定单元格赋值

 


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

最后于 2022-10-23 15:32 被JJGuo编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 7544
活跃值: (5387)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
调用约定常年的有三种:__cdecl,__stdcal,__fastcall。三种模式均遵守从右向左入栈,其中__cdecl处理堆栈平衡的手段为外平栈,__stdcall和__fastcall处理堆栈平衡的手段为内平栈。而__stdcall与__fastcall的不同点在于,__fastcall在处理传参时,前俩个参数用寄存器ecx和edx来处理,处理效率更高。而stdcall统一用堆栈处理,不占用寄存器,效率略低。但是,__fastcall只有前俩个参数是用寄存器的,若传参数量超过俩个,也是要用堆栈的,超过俩个参数的采用fastcall意义不大。

看汇编的样子,你这个 0x0040C150 应该是__fastcall.
你应该去分析ecx,edx的值加到你的汇编去
mov eax,aStr //部位字符串
mov ebp, ColNo //列号  ,这里最好不要赋值给ebp,随便改个寄存器就行
mov edi,RowNo //行号

mov ecx,$004101CC 你是模拟call,这里不需要跳转
jmp ecx

2022-10-16 01:34
0
雪    币: 7544
活跃值: (5387)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
thiscall,也就是比fastcall少个edx参数
int __thiscall sub_40C150(DWORD *_this, int RowNo, int ColNo, int aStr);
2022-10-16 02:13
0
雪    币: 6096
活跃值: (5515)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
4
你有POPAD 但是没见你有PUSHAD啊,其它的不好说
你这是织毛衣那种东西吧,导出的EXECL格式是固定的,可以直接修改EXECL用程序处理
用ADO的方式打开EXECL,就可以像数据库一样读写
2022-10-16 08:51
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
lononan thiscall,也就是比fastcall少个edx参数 int __thiscall sub_40C150(DWORD *_this, int RowNo, int ColNo, int aStr ...
把EBP改成EBX,
去掉后两句
mov ecx,$004101CC 你是模拟call,这里不需要跳转
jmp ecx
A程序不崩溃了,但是没有发送成功
2022-10-16 09:17
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
gamehack 你有POPAD 但是没见你有PUSHAD啊,其它的不好说 你这是织毛衣那种东西吧,导出的EXECL格式是固定的,可以直接修改EXECL用程序处理 用ADO的方式打开EXECL,就可以像数据库一样读 ...
有PUSHAD
asm
pushad
mov eax,aStr //部位字符串
mov ebp, ColNo //列号
mov edi,RowNo //行号
2022-10-16 09:21
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
gamehack 你有POPAD 但是没见你有PUSHAD啊,其它的不好说 你这是织毛衣那种东西吧,导出的EXECL格式是固定的,可以直接修改EXECL用程序处理 用ADO的方式打开EXECL,就可以像数据库一样读 ...


在OD中修改文件可以导入修改后的文件


procedure LoadFile(aStr: PAnsiChar);stdcall;

begin

  asm

    pushad

    push 0

    push 0

    mov ecx,aStr //xls文件

    push ecx

    mov eax,$004CA560

    call eax

    popad

  end;

end;


没有成功

最后于 2022-10-16 10:45 被JJGuo编辑 ,原因:
2022-10-16 10:19
0
雪    币: 4381
活跃值: (4373)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
JJGuo gamehack 你有POPAD 但是没见你有PUSHAD啊,其它的不好说 你这是织毛衣那种东西吧,导出的EXECL格式是固定的,可以直接修改E ...
你要把字符串全部换成 PWideChar 类型就能成功了.  注意他的传入是 UNICODE
2022-10-16 10:49
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
Mxixihaha 你要把字符串全部换成 PWideChar 类型就能成功了. 注意他的传入是 UNICODE
大佬我转成PWideChar后也没有搞成功,
2022-10-16 11:24
0
雪    币: 4381
活跃值: (4373)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
JJGuo 大佬我转成PWideChar后也没有搞成功,
你那段是打开文件,  并且你还得把前几个CALL加进去初始化OLE    你这个地方仅仅是打开文件,下面的代码才是加入信息.
2022-10-16 13:23
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
求大佬帮忙,实在搞不定
2022-10-16 21:13
0
雪    币: 2081
活跃值: (1716)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
使用键盘模拟输入,直接向窗口B的单元格输入数据。
2022-10-16 22:21
0
雪    币: 2081
活跃值: (1716)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
得到窗口B的句柄。 得到表格的位置,测量表格的宽度, 高一般是19pix, 就可以遍历表格了。 输入数据时记录输入的行数行,即鼠标Y值, 当达到表格高度 的一定量的,向下滚动。 
2022-10-16 22:24
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
goldli 得到窗口B的句柄。 得到表格的位置,测量表格的宽度, 高一般是19pix, 就可以遍历表格了。 输入数据时记录输入的行数行,即鼠标Y值, 当达到表格高度 的一定量的,向下滚动。
用键盘模拟输入,已经实现,效果感觉不大好,特别是第一列,需要模拟鼠标双击,放弃了
2022-10-16 23:09
0
雪    币: 7544
活跃值: (5387)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
JJGuo 用键盘模拟输入,已经实现,效果感觉不大好,特别是第一列,需要模拟鼠标双击,放弃了
这种没保护的窗口,sendmessage可以实现后台输入
2022-10-17 00:50
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16

B窗口句柄可以取到,表格的句柄也可取到,但是要发给指定的单元格句柄怎么取呢
已经开新贴增加赏金200雪花,

最后于 2022-10-17 13:11 被JJGuo编辑 ,原因:
2022-10-17 10:33
0
雪    币: 3542
活跃值: (1867)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
17

找到获取ecx的方法了,楼主试试这个呢,源码也可以立即放上来,看私下发还是直接发上来。

最后于 2022-10-21 10:09 被lynnux编辑 ,原因:
2022-10-20 11:06
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
lynnux 找到获取ecx的方法了,楼主试试这个呢,源码也可以立即放上来,看私下发还是直接发上来。

大佬,是用什么语言写的?私发

最后于 2022-10-20 12:39 被JJGuo编辑 ,原因:
2022-10-20 12:39
0
雪    币: 3542
活跃值: (1867)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
19
JJGuo lynnux 找到获取ecx的方法了,楼主试试这个呢,源码也可以立即放上来,看私下发还是直接发上来。 大佬,是用什么语言写的?私发

C++源码私你了,转delphi应该不难,原理写在hook.cpp里了 

最后于 2022-10-20 12:52 被lynnux编辑 ,原因:
2022-10-20 12:51
0
雪    币: 4381
活跃值: (4373)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20

楼下已实现获取内容.

最后于 2022-10-21 08:41 被Mxixihaha编辑 ,原因:
2022-10-20 21:43
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
Mxixihaha 随便写了个demo给你. 没有调用CALL那些
大佬,可以用apj取指定单元格的值吗
2022-10-20 22:14
0
雪    币: 62
活跃值: (2032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
Mxixihaha 随便写了个demo给你. 没有调用CALL那些

Mxixihaha 大佬,打开尺寸表后,先初始化,后点设置,表格上没有数据上去

打开尺寸表后,不点初始化,直接点设置,也没有数据上去

2022-10-21 08:24
0
雪    币: 4381
活跃值: (4373)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
JJGuo Mxixihaha 大佬,打开尺寸表后,先初始化,后点设置,表格上没有数据上去打开尺寸表后,不点初始化,直接点设置,也没有数据上去

 既然是Demo肯定不会是你所要的逻辑与需求.  初始化的位置可以在任何地方,  Demo选择了在程序启动后第一时间操作.



获取内容版.   你自己研究研究,  我只是用Demo告诉你一切都可以实现. 仅此而已



Demo已经实现和上传给你研究, 不会再回复帖子.

最后于 2022-10-21 08:42 被Mxixihaha编辑 ,原因:
上传的附件:
2022-10-21 08:40
0
游客
登录 | 注册 方可回帖
返回
//