首页
社区
课程
招聘
[求助]怎么在IDA中修改汇编语言对应的机器码(64位系统)
发表于: 2017-6-6 22:15 14254

[求助]怎么在IDA中修改汇编语言对应的机器码(64位系统)

2017-6-6 22:15
14254

想通过ida逆向破除一个程序的时间限制,改限制比较简单,限定了一个固定的失效时间,比如2015年1月1日,只要改系统时间就能继续使用


通过用ida将程序反汇编成类似c的伪代码如下

反编译得到用c表示的伪代码

 

  v35 = -1;

  if ( v31 + 100 * v32 + 10000 * v30 > v34 )

    v35 = 0;

  return v35;

需要跳过该if判断

对应的汇编语句如下,因为对汇编不是非常熟悉,所以语句的范围稍微选得大一些

.text:000000000000236A                 add     eax, edx

.text:000000000000236C                 mov     rdx, [rbp+120h+arg_8]

.text:0000000000002373                 add     eax, [rdx]

.text:0000000000002375                 mov     [rbp+120h+var_18], eax

.text:000000000000237B                 mov     [rbp+120h+var_14], 0FFFFFFFFh

.text:0000000000002385                 mov     eax, [rbp+120h+var_1C]

.text:000000000000238B                 mov     edx, [rbp+120h+var_18]

.text:0000000000002391                 cmp     eax, edx

.text:0000000000002393                 jle     short loc_239F

.text:0000000000002395                 mov     [rbp+120h+var_14], 0

.text:000000000000239F

.text:000000000000239F loc_239F:                               ; CODE XREF: valid_usage+299j

.text:000000000000239F                 mov     eax, [rbp+120h+var_14]

.text:00000000000023A5                 mov     rbx, [rbp+120h+var_38]

.text:00000000000023AC                 lea     rsp, [rbp+120h]

.text:00000000000023B3                 pop     rbp

.text:00000000000023B4                 retn

.text:00000000000023B4 valid_usage     endp


因为不知道怎么修改汇编删除判断语句,所以我想了一个改动最小的方法,等效的c表示的伪代码为

  v35 = -1;

  if ( v31 + 100 * v32 + 10000 * v30 > v34 )

    v35 = 1;

  return v35;

对应的汇编语句为

.text:0000000000002395                 mov     [rbp+120h+var_14], 1

或者-1,也可以

现在的问题是不知道怎么修改对应的机器码才能实现我想要的改动。


对应的2395地址下的机器码为

C7 85 0C 01 00 00 00 00 00 00 8B 85 0C 01 00 00

我需要怎么改才能实现我想要的功能?


更详细一点的描述请见附件。请各位高手指点迷津,多谢!







[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 28961
活跃值: (7448)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
2

IDA  HexView中F2直接修改,  

C7 85 0C 01 00 00 01 00 00 00 8B 85 0C 01 00 00

改完Edit->Patch->Apply  patches  to  file

2017-6-6 22:33
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
风间仁 IDA  HexView中F2直接修改,  C7 85 0C 01 00 00 01 00 00 00 ...
你好,我主要是不知道对应mov          [rbp+120h+var_14],  1的16位码怎么修改才能将命令行中的0改成1或者-1.
还有一种就是把这4行都改成nop
.text:0000000000002391                                  cmp          eax,  edx
.text:0000000000002393                                  jle          short  loc_239F
.text:0000000000002395                                  mov          [rbp+120h+var_14],  0
.text:000000000000239F
.text:000000000000239F  loc_239F:   
是不是都改成90就可以了?
2017-6-6 22:39
0
雪    币: 21449
活跃值: (62288)
能力值: (RANK:125 )
在线值:
发帖
回帖
粉丝
4

Edit/Patch Program/Assemble


2017-6-6 22:39
0
雪    币: 346
活跃值: (1953)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
Edit/Patch  Program/Assemble修改代码,如果是debug模式下也可以吗?
2017-6-6 22:52
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
风间仁 IDA  HexView中F2直接修改,  C7 85 0C 01 00 00 01 00 00 00 ...
刚刚没看懂,现在才发现你已经告诉我机器码怎么修改了,再次感谢!!!!
2017-6-6 23:03
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
7
要改成-1把237b的地址数据复制过来不可以了!
2017-6-7 03:07
0
雪    币: 239
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
怎么只改一行? 我只要有改动就一定要改到末尾...有些代码直接复制出来粘上去会弹出无效, 然后流程就断掉了
2018-8-15 16:10
0
游客
登录 | 注册 方可回帖
返回
//