反汇编代码,需要知道具体执行过程

很久不来 2007-06-21 03:27:15
最好能写成c语言

00439E18 8A06 MOV AL,BYTE PTR DS:[ESI]
00439E1A 46 INC ESI
00439E1B 8807 MOV BYTE PTR DS:[EDI],AL
00439E1D 47 INC EDI
00439E1E 01DB ADD EBX,EBX
00439E20 75 07 JNZ SHORT 1.00439E29
00439E22 8B1E MOV EBX,DWORD PTR DS:[ESI]
00439E24 83EE FC SUB ESI,-4
00439E27 11DB ADC EBX,EBX
00439E29 ^72 ED JB SHORT 1.00439E18
00439E2B B8 01000000 MOV EAX,1
00439E30 01DB ADD EBX,EBX
00439E32 75 07 JNZ SHORT 1.00439E3B
00439E34 8B1E MOV EBX,DWORD PTR DS:[ESI]
00439E36 83EE FC SUB ESI,-4
00439E39 11DB ADC EBX,EBX
00439E3B 11C0 ADC EAX,EAX
00439E3D 01DB ADD EBX,EBX
00439E3F ^73 EF JNB SHORT 1.00439E30
00439E41 75 09 JNZ SHORT 1.00439E4C
00439E43 8B1E MOV EBX,DWORD PTR DS:[ESI]
00439E45 83EE FC SUB ESI,-4
00439E48 11DB ADC EBX,EBX
00439E4A ^73 E4 JNB SHORT 1.00439E30
00439E4C 31C9 XOR ECX,ECX
00439E4E 83E8 03 SUB EAX,3
00439E51 72 0D JB SHORT 1.00439E60
00439E53 C1E0 08 SHL EAX,8
00439E56 8A06 MOV AL,BYTE PTR DS:[ESI]
00439E58 46 INC ESI
00439E59 83F0 FF XOR EAX,FFFFFFFF
00439E5C 74 74 JE SHORT 1.00439ED2
00439E5E 89C5 MOV EBP,EAX
00439E60 01DB ADD EBX,EBX
00439E62 75 07 JNZ SHORT 1.00439E6B
00439E64 8B1E MOV EBX,DWORD PTR DS:[ESI]
00439E66 83EE FC SUB ESI,-4
00439E69 11DB ADC EBX,EBX
00439E6B 11C9 ADC ECX,ECX
00439E6D 01DB ADD EBX,EBX
00439E6F 75 07 JNZ SHORT 1.00439E78
00439E71 8B1E MOV EBX,DWORD PTR DS:[ESI]
00439E73 83EE FC SUB ESI,-4
00439E76 11DB ADC EBX,EBX
00439E78 11C9 ADC ECX,ECX
00439E7A 75 20 JNZ SHORT 1.00439E9C
00439E7C 41 INC ECX
00439E7D 01DB ADD EBX,EBX
00439E7F 75 07 JNZ SHORT 1.00439E88
00439E81 8B1E MOV EBX,DWORD PTR DS:[ESI]
00439E83 83EE FC SUB ESI,-4
00439E86 11DB ADC EBX,EBX
00439E88 11C9 ADC ECX,ECX
00439E8A 01DB ADD EBX,EBX
00439E8C ^73 EF JNB SHORT 1.00439E7D
00439E8E 75 09 JNZ SHORT 1.00439E99
00439E90 8B1E MOV EBX,DWORD PTR DS:[ESI]
00439E92 83EE FC SUB ESI,-4
00439E95 11DB ADC EBX,EBX
00439E97 ^73 E4 JNB SHORT 1.00439E7D
00439E99 83C1 02 ADD ECX,2
00439E9C 81FD 00F3FFFF CMP EBP,-0D00
00439EA2 83D1 01 ADC ECX,1
00439EA5 8D142F LEA EDX,DWORD PTR DS:[EDI+EBP]
00439EA8 83FD FC CMP EBP,-4
00439EAB 76 0F JBE SHORT 1.00439EBC
00439EAD 8A02 MOV AL,BYTE PTR DS:[EDX]
00439EAF 42 INC EDX
00439EB0 8807 MOV BYTE PTR DS:[EDI],AL
00439EB2 47 INC EDI
00439EB3 49 DEC ECX
00439EB4 ^75 F7 JNZ SHORT 1.00439EAD
00439EB6 ^E9 63FFFFFF JMP 1.00439E1E
00439EBB 90 NOP
00439EBC 8B02 MOV EAX,DWORD PTR DS:[EDX]
00439EBE 83C2 04 ADD EDX,4
00439EC1 8907 MOV DWORD PTR DS:[EDI],EAX
00439EC3 83C7 04 ADD EDI,4
00439EC6 83E9 04 SUB ECX,4
00439EC9 ^77 F1 JA SHORT 1.00439EBC
00439ECB 01CF ADD EDI,ECX
00439ECD ^E9 4CFFFFFF JMP 1.00439E1E
00439ED2 5E POP ESI
...全文
325 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
很久不来 2007-06-24
  • 打赏
  • 举报
回复
to:ReverseEngineering(★给我一杯壮阳水☆换我一夜不下垂★男人阳萎不是罪☆)

能看懂就不翻译了!

mengshijie_1981(云中雀):

CF的内容怎样知道呢?并且进位以后这个值起什么作用?
ADC EBX,EBX
ADC EAX,EAX
重复使用,意味着什么
单独一句指令我可以明白
但是连起来呢
完成一个什么动作?或者说是功能
njtzj 2007-06-24
  • 打赏
  • 举报
回复
ADC EBX,EBX
ADC EAX,EAX
应该是64位数相加吧
czlyc006 2007-06-24
  • 打赏
  • 举报
回复
CF的内容怎样知道呢?
-------------------
通常在进行算术或逻辑运算时,CF标志位用来标记该运算是否产生进位/借位
mengshijie_1981 2007-06-22
  • 打赏
  • 举报
回复
ADC EBX,EBX
等价于:
EBX=EBX+EBX+CF;CF是进位标志
JNB 的意思是不小于0就跳转,根据前面指令的计算结果是否大于零,如果>=0,就跳转
short你不必去管它,它的意思是用一个字节的长度来存放jmp的偏移。意思就是向前或者向后只能跳转128字节的偏移。

ReverseEngineering 2007-06-22
  • 打赏
  • 举报
回复
换成C又怎么样。直接看汇编多好。
很久不来 2007-06-21
  • 打赏
  • 举报
回复
我能看到这些,但是不会转换成c语言,因为有些指令不是很熟悉,比如JNZ,JB等条件转移指令,不知道怎么写成c。比如:
ADC EBX,EBX
ADC EAX,EAX
ADD EBX,EBX
JNB SHORT 1.00439E30 //怎么理解这句话,short怎么个跳法
JNZ SHORT 1.00439E4C

很多地方都用到了
ADC EBX,EBX
ADC EAX,EAX
怎么翻译啊?
mengshijie_1981 2007-06-21
  • 打赏
  • 举报
回复
翻译这个函数其实并不是很难,只是函数很大,翻译起来很耗费时间,那位兄弟有空帮lz翻译一下。我仔细琢磨了一下,象“1.00439E18”这样的目标地址,其实是偏移地址,去掉其中的前两个字符“1.”,后面的就是纯粹的偏移地址,这个地址对应着上面源程序中最前面一列。例如:
00439E20 75 07 JNZ SHORT 1.00439E29;跳转到了下面一条指令

00439E29 ^72 ED JB SHORT 1.00439E18 ;跳转到了下面一行,其实就是函数的第一行

00439E18 8A06 MOV AL,BYTE PTR DS:[ESI]
很久不来 2007-06-21
  • 打赏
  • 举报
回复
这一部分是看不到的
在链接库里!
czlyc006 2007-06-21
  • 打赏
  • 举报
回复
那么可以去看UPX的代码,开源的
yangb2014# 2007-06-21
  • 打赏
  • 举报
回复
付费?
很久不来 2007-06-21
  • 打赏
  • 举报
回复
是一段
单是是一段完整的功能
具体讲是UPX的压缩算法,1.25版的
大熊猫侯佩 2007-06-21
  • 打赏
  • 举报
回复
是你断章取义还是完整功能的指令集?

21,459

社区成员

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

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