一段字符串解码的反汇编代码,请高手帮忙解释一下,不甚感激!

wellin 2005-03-17 06:00:35
以下是一段字符串解码的反汇编代码,通过调试,发现传递两个参数(char *b ,int a) 给函数 func
函数func中跳转到 JMP-1 这个解码部分返回解码的内容。 希望汇编高手帮忙看看,我最想知道
的就是那个JMP-1 到底做了些什么,如果高手能给出c的代码,那是跪地感谢了,如果能详细讲解
一下那个JMP-1每句话的意思,也是感激万分。拜托各位了!(问题解决,马上散分)
func(char *b,int a)
{
::10030A90:: 55 PUSH EBP
::10030A91:: 8BEC MOV EBP, ESP
::10030A93:: 83EC 08 SUB ESP, 8
::10030A96:: 53 PUSH EBX
::10030A97:: 56 PUSH ESI
::10030A98:: 57 PUSH EDI
::10030A99:: 8BF9 MOV EDI, ECX
::10030A9B:: 8B87 B0000000 MOV EAX, [EDI+B0]
::10030AA1:: 83F8 42 CMP EAX, 42
::10030AA4:: 897D F8 MOV [EBP-8], EDI
::10030AA7:: 74 29 JE SHORT 10030AD2 JMP-1
::10030AA9:: 83F8 4C CMP EAX, 4C
::10030AAC:: 75 6F JNZ SHORT 10030B1D JMP-2
::10030AAE:: 8B87 C0000000 MOV EAX, [EDI+C0]
::10030AB4:: 8B5D 0C MOV EBX, [EBP+C]
::10030AB7:: 8B75 08 MOV ESI, [EBP+8]
::10030ABA:: 50 PUSH EAX
::10030ABB:: E8 60FEFFFF CALL 10030920 CALL-1
::10030AC0:: 83C4 04 ADD ESP, 4
::10030AC3:: 8987 C0000000 MOV [EDI+C0], EAX
::10030AC9:: 5F POP EDI
::10030ACA:: 5E POP ESI
::10030ACB:: 5B POP EBX
::10030ACC:: 8BE5 MOV ESP, EBP
::10030ACE:: 5D POP EBP
::10030ACF:: C2 0800 RETN 8
}
---------------------------------------------------------------
JMP-1
{
::10030AD2:: 8B8F C0000000 MOV ECX, [EDI+C0]
::10030AD8:: 894D FC MOV [EBP-4], ECX
::10030ADB:: FC CLD
::10030ADC:: 8B7D 08 MOV EDI, [EBP+8]
::10030ADF:: 8B4D 0C MOV ECX, [EBP+C]
::10030AE2:: BE 6121BDE7 MOV ESI, E7BD2161
::10030AE7:: 8B45 FC MOV EAX, [EBP-4]
::10030AEA:: 8BFF MOV EDI, EDI
::10030AEC:: 51 PUSH ECX
::10030AED:: B9 20000000 MOV ECX, 20
::10030AF2:: 8BD8 MOV EBX, EAX
::10030AF4:: D1E0 SHL EAX, 1
::10030AF6:: 23DE AND EBX, ESI
::10030AF8:: 8BD3 MOV EDX, EBX
::10030AFA:: 0FCB BSWAP EBX
::10030AFC:: 66:33DA XOR BX, DX
::10030AFF:: 32FB XOR BH, BL
::10030B01:: 7A 01 JPE SHORT 10030B04
::10030B03:: 40 INC EAX
::10030B04:: 49 DEC ECX
::10030B05:: 75 EB JNZ SHORT 10030AF2
::10030B07:: 59 POP ECX
::10030B08:: 3007 XOR [EDI], AL
::10030B0A:: 47 INC EDI
::10030B0B:: 49 DEC ECX
::10030B0C:: 75 DE JNZ SHORT 10030AEC
::10030B0E:: 8945 FC MOV [EBP-4], EAX
::10030B11:: 8B55 FC MOV EDX, [EBP-4]
::10030B14:: 8B45 F8 MOV EAX, [EBP-8]
::10030B17:: 8990 C0000000 MOV [EAX+C0], EDX
::10030B1D:: 5F POP EDI
::10030B1E:: 5E POP ESI
::10030B1F:: 5B POP EBX
::10030B20:: 8BE5 MOV ESP, EBP
::10030B22:: 5D POP EBP
::10030B23:: C2 0800 RETN 8
}

---------------------------------------------------------------
JMP-2
{
::10030B1D:: 5F POP EDI
::10030B1E:: 5E POP ESI
::10030B1F:: 5B POP EBX
::10030B20:: 8BE5 MOV ESP, EBP
::10030B22:: 5D POP EBP
::10030B23:: C2 0800 RETN 8
}
-----------------------------------------------------------
CALL-1
{
........
}
...全文
222 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzCpp 2005-04-05
  • 打赏
  • 举报
回复
这个是一个类的成员函数,ecx是this指针。
除了临时变量外,还有函数的成员变量需要访问。
tiancai1 2005-04-04
  • 打赏
  • 举报
回复
bauhaus(人中聋疯,贱中魁首)
讲的有点道理。只是粗劣看一下。
bauhaus 2005-04-04
  • 打赏
  • 举报
回复
非也
此段汇编码应该是vc编译器生成的
你的这段代码应该是类的一个方法
wellin 2005-04-02
  • 打赏
  • 举报
回复
大概照葫芦画瓢也能弄出解码程序了,不过有个关键,内部的运算并不完全依赖传入的两个参数,还把寄存器的值也弄进来运算了,晕死了,不知道怎么跟了。
tgz501 2005-04-02
  • 打赏
  • 举报
回复
晕倒
bauhaus 2005-03-29
  • 打赏
  • 举报
回复
很简单,多读几遍,动态跟踪一下就知道怎么回事了
他所谓的解码就是一些位操作而已
没有复杂的算法
smallmaster 2005-03-27
  • 打赏
  • 举报
回复
SORRY,因为要备考,我没有时间帮你,刚刚登陆CSDN才看到你的消息。如果找不到答案,可以去www.pediy.com问问
bob008 2005-03-25
  • 打赏
  • 举报
回复
晕,居然有人看这个,头晕,想睡觉鸟~
sunvin 2005-03-24
  • 打赏
  • 举报
回复
最初ecx值是什么啊?E7BD2161是密匙相关吧?
wellin 2005-03-20
  • 打赏
  • 举报
回复
我仅仅是想知道JMP-1内的那段意思。有好心的朋友就帮忙看看吧。
wellin 2005-03-19
  • 打赏
  • 举报
回复
有朋友帮忙看看吗
VxD1 2005-03-19
  • 打赏
  • 举报
回复
大概谁都没时间来看吧
wellin 2005-03-17
  • 打赏
  • 举报
回复
JMP-1里面有个大循环嵌套了一个小循环.........

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧