菜鸟先飞 发表于 2016-8-16 15:46

修改软件返回值,遇到的问题

本帖最后由 菜鸟先飞 于 2016-8-19 11:39 编辑





前同事写的对接api,其中有个返回值弄错了(源码丢失)。
这个软件有8个api接口 只修改这一个接口的返回值即可




我整了半天,也没修改成功。

我想把图中4返回值 修改成5 ,就是不返回已经注册,返回其他错误 !!!请大家告知方法



《已追加HB至888》



感谢虚无空幻 问题得到详细解答 谢谢这位大牛






虚无空幻 发表于 2016-8-16 15:46


不提供售后,直接给分吧.....
醉了,楼主不是成员吗,怎么这么穷.
鉴于我这么辛苦,再买点分给我嘛......



1.压入4个参数 必须是字符串地址 因为可读 避免大错
2.又一个连接字符串,需要把证书转为字符串,由于不知道具体参数,可以直接改为别的call来返回自己想要的值
0046AB09|.E8 7265F9FF   call 软件.00401080

找个栈内存改为http://****/code-platform/platform/synStatus.do?number=13111111111&contentNo=1&status=2
字符串必须在栈区,因为有可读权限
修改的代码必须在代码段,因为有可执行权限
地址126e80


004FFB3B      B8 806E1200   mov eax,0x126E80                         ;ASCII "http://114.119.5.218:7539/code-platform/platform/synStatus.do?number=13111111111&contentNo=1&status="




0012F358   001B0268ASCII "JSESSIONID=C07BF922FFC40B2DAFA81C17BA1BBB97"
0012F35C   001884F0ASCII "Accept: */*\r\nReferer: http://****/code-platform/platform/synStatus.do?number=131111111"
0012F360   001B0140ASCII "Server: Apache-Coyote/1.1\r\nSet-Cookie: JSESSIONID=C07BF922FFC40B2DAFA81C17BA1BBB97; Path=/code-platf"





http://114.119.5.218:7539/code-platform/platform/synStatus.do?number=13154652365&contentNo=&status=status


001B00F001 00 00 00 05 00 00 00 65 72 72 6F 72 00 00 00......error...
01 00 00 00 01 00 00 00 34 00 00 00 00 00 00

这里应该是返回值   4字节? 长度 字符串
改成 4


------------
主要思路
找个按钮事件,或者一个循环执行.
找到你想要的函数
执行这个函数,并且平衡堆栈
对网站接收返回值进行判断(修改接收返回值)
往下走,看那个压入参数是这个字符串类型的指针
0046AC90|.E8 BBE90000   call 软件.00479650

好吧....没找到处理处理的call,对易语言的调用方式比较绝望....
还有个方法.在获取网页内容call后面修改网页返回值
首先判断返回值为是否为4,然后修改为5....
0046ABE1|.E8 7E68FCFF   call 软件.00431464

返回值eax
下面添加个jmp,先找个可写的内存段
004FF083      00            db 00


职业伸手Dan_i 发表于 2016-8-16 18:14

{:5_118:}传说中的沙发。。

福气啦 发表于 2016-8-16 19:58

论坛有大神,帮你顶上去,希望有人出手

虚无空幻 发表于 2016-8-16 20:00



之前提交还需要审核.....
楼主充点CB再审核吧.不然这点分让我情何以堪.........

追梦赤子心 发表于 2016-8-16 20:12

虚无空幻 发表于 2016-8-16 22:08

虚无空幻 发表于 2016-8-16 20:00
之前提交还需要审核.....
楼主充点CB再审核吧.不然这点分让我情何以堪.........

因为call的返回值是赋值给eax的
而易语言的字符串类型是这样的
01 00 00 00 先是4个字节不知道干啥用
05 00 00 00 开始代表字符串长度
xx xx xx xx xx 字符串
我修改的是判断是否为0x34. 如果是则修改为0x35

xlz0326 发表于 2016-8-16 23:43

kanhaiqu 发表于 2016-8-17 01:36

封情 发表于 2016-8-17 15:04

看看我是不是来晚了
页: [1] 2
查看完整版本: 修改软件返回值,遇到的问题