数码之家

 找回密码
 立即注册
搜索
查看: 2075|回复: 9

[电脑] 用汇编修改exe文件的函数返回

[复制链接]
发表于 2021-2-11 01:02:55 | 显示全部楼层 |阅读模式
.text:6F48162C sub_6F48162C    proc near               
.text:6F48162C                                         
.text:6F48162C
.text:6F48162C Time            = dword ptr -2Ch
.text:6F48162C var_10          = dword ptr -10h
.text:6F48162C
.text:6F48162C                 push    ebx
.text:6F48162D                 sub     esp, 28h
.text:6F481630                 lea     ebx, [esp+2Ch+var_10]
.text:6F481634                 mov     [esp+2Ch+Time], ebx ; Time
.text:6F481637                 call    time
.text:6F48163C                 mov     [esp+2Ch+Time], ebx ; Time
.text:6F48163F                 call    localtime
.text:6F481644                 cmp     dword ptr [eax+14h], 78h
.text:6F481648                 setle   al
.text:6F48164B                 add     esp, 28h
.text:6F48164E                 pop     ebx
.text:6F48164F                 retn
.text:6F48164F sub_6F48162C    endp

不懂汇编,但猜这个函数应该是取当前时间作比较,并处理,,,,,程序限制了2021-01-01开始,功能不正常。修改系统时间,不现实。

想请教,怎样让取得的时间永远小于这个时间。。。


发表于 2021-2-11 01:18:51 | 显示全部楼层
返回值 在EAX中,修改这个值 就行

打赏

参与人数 1家元 +8 收起 理由
devcang + 8

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-11 01:24:35 | 显示全部楼层
xiaobing88 发表于 2021-2-11 01:18
返回值 在EAX中,修改这个值 就行

谢谢!


做了个偏门的方法,干掉 call    time ,成功了

~~~~
回复 支持 反对

使用道具 举报

发表于 2021-2-11 08:00:05 | 显示全部楼层
大佬们,
windows 下有什么软件可以方便地看到 汇编代码, 并看到代码对应2进制位置方便自己改的.

回复 支持 反对

使用道具 举报

发表于 2021-2-11 09:12:39 | 显示全部楼层
代码太短,无法跟踪算法。

关键:cmp     dword ptr [eax+14h], 78h

如果: 78h=120   倒数=021, 14h=20  

那么,[eax+14h] 必须等于 78h

动态调试工具: 1.OllyDBG     2.x64dbg
回复 支持 反对

使用道具 举报

发表于 2021-2-11 09:22:00 | 显示全部楼层
用ADI就可以,当然还有其它的工具也可以。
回复 支持 反对

使用道具 举报

发表于 2021-2-11 11:57:35 | 显示全部楼层
text:6F481648                 setle   al 改成 setg al 就行,用IDA
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-11 23:53:55 | 显示全部楼层
unppnu 发表于 2021-2-11 09:12
代码太短,无法跟踪算法。

关键:cmp     dword ptr [eax+14h], 78h

谢谢,,,,,

修改 14h和78h,都不行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-11 23:54:29 | 显示全部楼层
liebedemi 发表于 2021-2-11 11:57
text:6F481648                 setle   al 改成 setg al 就行,用IDA

谢谢,,,
但不知道对应的十六进制码,所以还没试得到
回复 支持 反对

使用道具 举报

发表于 2021-2-12 09:52:26 | 显示全部楼层
devcang 发表于 2021-2-11 23:54
谢谢,,,
但不知道对应的十六进制码,所以还没试得到

.text:6F48163F                 call    localtime                         //本地时间
.text:6F481644                 cmp     dword ptr [eax+14h], 78h          //比较堆栈里的值=78h?(h是表示为16进制)
.text:6F481648                 setle   al                                //条件“真”则置1
.text:6F48164B                 add     esp, 28h                  
.text:6F48164E                 pop     ebx
.text:6F48164F                 retn                                       //返回

最简单的就是在:
.text:6F48163F                 call    localtime
里返回置1即可:
mov  al,0x1         //返回al置1
retn                    //返回
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-25 05:09 , Processed in 0.187200 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表