首页
社区
课程
招聘
[旧帖] [求助]请教一个汇编的问题 0.00雪花
发表于: 2008-1-27 14:25 4033

[旧帖] [求助]请教一个汇编的问题 0.00雪花

2008-1-27 14:25
4033
请问大家如何在一个程序中设置一个变量并且比较呢

现在是一个程序 里面有一段在不停循环.
我想在循环中加一个判断 比如当A的值等于999 就跳出这个循环继续下面的

然后在其他段里面加入一个我可控条件.比如我按了个按钮,就让A=999

请问的是 我在其他段中设置的A=999如何写出来?我看了半天也没有明白汇编中的变量是怎回事.
谢谢大家

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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
.data?
XXX dd ?

.code
....
....
.while 条件
  ...
   .if XXX==999
          .Break
   .endif
  ...
.endw

不知道符不符合你的要求
2008-1-27 14:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢PETNT的回复
这个是一个程序里面的 我反汇编他想改变他的流程.你说的..我还是没有明白.汇编里面可以用这些WHILE什么的吗.
2008-1-27 15:04
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
4
OD里当然写不出这个,我以为你在写程序。

在程序里要想改变程序流程并不是十分容易,除非是仅仅将je改为jne的改变。

如果你还想做一些判断,由于涉及到的代码会很多,以至于你无法在原处修改来达到目的。

所以需要找个恰当的位置 把程序 jmp 出去,做完事情后在jmp 回来。但这里一定要注意保护现场和恢复原指令。

http://bbs.pediy.com/showthread.php?t=56420

这是我写的,里面有类似操作,希望对你有用。
2008-1-27 16:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
再次感谢PETNT.
你说的JMP出去再回来的思路很有用.
正在拜读“以彼之道,还施彼身”——对付CrackMe之小蜜蜂v1

该程序是自有比较和判断句. 我只是想让他在我可控的条件下达到判断触发.
比如
00414FDE  F6C4 01                  TEST AH,1                              
00414FE1  0F85 37010000            JNZ 0041511E  

这个是他自己的条件.但是我想让他在我觉得合适的时候再满足这个条件.
我可以在其他我可以触发的地方比如按个按钮的里面加个AH=1吗?如果可以要如何加?
2008-1-27 17:41
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
6
估计可以通过全局变量来实现,仅仅用eax好像不太容易,因为eax太难保护了,你把它jmp出去后,改成对全局变量的比较,可能能够实现。
2008-1-27 18:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
全局变量能够打个比方或者给个例子吗?
唉 很头疼 谢谢指点了.
2008-1-27 19:29
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
8
你可以在data段自己选一个程序没用的地方,记下这个地方。
引用时用:[XXXXXXXX]
如写入 mov dword ptr [XXXXXXXX],EAX
2008-1-27 19:37
0
游客
登录 | 注册 方可回帖
返回
//