capstone

Форк
0
/
ChangeLog 
1030 строк · 30.8 Кб
1
This file details the changelog of Capstone.
2

3
-----------------------------
4
Version 5.0.0: July 5th, 2023
5

6
## What's Changed
7
* [workflows] Remove deprecated image versions by @kabeor in https://github.com/capstone-engine/capstone/pull/2057
8
* Fix capstone_test.c #2059 by @imbillow in https://github.com/capstone-engine/capstone/pull/2060
9
* Support repz prefix on X86 ret instructions by @adamjseitz in https://github.com/capstone-engine/capstone/pull/2063
10
* fix for msvc static lib, dll build error and warnings by @arkup in https://github.com/capstone-engine/capstone/pull/2061
11
* use calloc for cs_insn instead of malloc by @ConnorRigby in https://github.com/capstone-engine/capstone/pull/1972
12
* Fix access bug for TEST op by @melynx in https://github.com/capstone-engine/capstone/pull/1511
13
* Update Cython bindings by @peace-maker in https://github.com/capstone-engine/capstone/pull/2068
14
* Use Intel register syntax for Tricore by @XVilka in https://github.com/capstone-engine/capstone/pull/2067
15
* Add `#` prefix to tricore imm operand by @imbillow in https://github.com/capstone-engine/capstone/pull/2070
16
* Revert "Mark cs_* as thread local to avoid race condition in multithreads" by @oleavr in https://github.com/capstone-engine/capstone/pull/1933
17
* Replace strncpy with memcpy to fix compiler warning. by @Rot127 in https://github.com/capstone-engine/capstone/pull/2075
18
* Remove outdated and irrelevant TODO by @XVilka in https://github.com/capstone-engine/capstone/pull/2074
19

20
## New Contributors
21
* @arkup made their first contribution in https://github.com/capstone-engine/capstone/pull/2061
22
* @ConnorRigby made their first contribution in https://github.com/capstone-engine/capstone/pull/1972
23
* @melynx made their first contribution in https://github.com/capstone-engine/capstone/pull/1511
24

25

26
---------------------------------
27
Version 5.0.0-rc4: June 18th, 2023
28

29
## What's Changed
30
* Fix TriCore test by @hamarituc in https://github.com/capstone-engine/capstone/pull/2049
31
* [workflows] Fix python-publish issue by @kabeor in https://github.com/capstone-engine/capstone/pull/2050
32
* Update version tag by @kabeor in https://github.com/capstone-engine/capstone/pull/2052
33
* Release 5.0-rc4 by @kabeor in https://github.com/capstone-engine/capstone/pull/2051
34

35
---------------------------------
36
Version 5.0.0-rc3: June 17th, 2023
37

38
What's Changed:
39
- update pkgconfig version by @kabeor in #1847
40
- vb6 bindings: clarify license as Apache v2.0 by @dzzie in #1850
41
- AArch64 SYS instruction operands by @adamjseitz in #1859
42
- AArch64: fix missing VAS specifiers in aliased instructions by @adamjseitz in #1860
43
- Add cstool in CMake Package Config + CMake Github Workflow by @theblackunknown in #1867
44
- Fix pkgconfig not installed when CAPSTONE_BUILD_CSTOOL is false by @theblackunknown in #1870
45
- AArch64 comprehensively add vas specifiers to aliased instructions by @adamjseitz in #1877
46
- Fix pkg-config template by @hamarituc in #1878
47
- Fix eBPF lddw opcode by @terorie in #1885
48
- Add eBPF callx instruction by @terorie in #1886
49
- Mark cs_* as thread local to avoid race condition in multithreads by @wtdcode in #1891
50
- One semicolon is enough in C by @trufae in #1892
51
- Add PowerPC paired-singles support by @terorie in #1898
52
- Update the table for UD0 and UD1 with the latest llvm table by @junghee in #1863
53
- Sync eBPF and PowerPC bindings by @terorie in #1900
54
- Fix PPC insn names and psq displacement by @terorie in #1902
55
- Fix -Werror build by @trufae in #1906
56
- Remove outdated ctypes requirement by @jbott in #1910
57
- Fix memory leak in testsuite by @hamarituc in #1919
58
- PPC: fix out of bound memory access by @hamarituc in #1913
59
- AArch64 armv9.2 update by @FinnWilkinson in #1907
60
- m68k: Add support for the FNOP instruction by @huth in #1921
61
- arm64: fix invalid free introduced in 662bb3f by @trufae in #1926
62
- Fixed SME index alias printing issue. by @FinnWilkinson in #1925
63
- Updated Arm64 python bindings after Armv9.2-a support. by @FinnWilkinson in #1932
64
- ARM/AArch64: Add post-index to instruction info by @ZehMatt in #1937
65
- Fix regressions in custom memory allocator support by @oleavr in #1934
66
- cstool: support riscv compressed instruction disassemble by @rrwhx in #1940
67
- Mention debug build option for cmake. by @Rot127 in #1942
68
- cstool: avoid misaligned instructions in compressed riscv by @carenas in #1943
69
- arm64: fix missing post_index by @HyperSine in #1944
70
- Add CMAKE_EXPORT_COMPILE_COMMANDS to cmake build doc by @Rot127 in #1948
71
- Fix potential array out of bounds by @mjunix in #1938
72
- Add Renesas SuperH instructions support by @ysat0 in #1927
73
- fix missing access field in arm64 java binding by @sunxingxing in #1959
74
- Update python bindings to fix ARM in detail mode. by @wideglide in #1961
75
- sh: add missing include for CMake install step by @SweetVishnya in #1964
76
- Fix CITest && python binding issues by @kabeor in #1965
77
- correct register accesses for ARM's sxtb/uxtb and similar instructions by @covanam in #1968
78
- In x86: Fixed backward compatibility with C90 by @hasherezade in #1969
79
- Fix for missing register usages on ARM64 authenticated branches (issue #1975) by - @stevielavern in #1976
80
- AArch64: fixes register access flags for moves by @thomasdangl in #1974
81
- [SH] Fix build warnings by @Rot127 in #1960
82
- update CI ubuntu version by @kabeor in #1986
83
- fix cstest Makefile by @imbillow in #1989
84
- fix: compile error missing file cstool msvc/visual studio by @raigorx in #2000
85
- Fix missing NOTRACK prefix by @junghee in #2002
86
- Fix make builds with SH support by @trufae in #2006
87
- Add missing architectures in the readme and sort them by @trufae in #2008
88
- Add TriCore Architecture by @imbillow in #1973
89
- Fix compilation warnings related to TriCore. by @imbillow in #2012
90
- Fix SH build warnings. by @Rot127 in #2016
91
- Tricore fix the negative call and jump by @imbillow in #2018
92
- [SH] Fix warnings about unhandled switch cases by adding defaults. by @Rot127 in #2017
93
- Tricore fix disp fill and ctest build by @imbillow in #2019
94
- Fix disassemble of xor by @imbillow in #2023
95
- Fix register accesses & operands of multiple ARMv8.3 PAC instructions by @stevielavern in - #2022
96
- Add missing arm64 to Darwin LIBARCHS and remove dependencies tracking… by @gdbinit in #2024
97
- Fix tricore compile warning by @imbillow in #2027
98
- [PPC] Fix random branch hint and update_cr0 set up. by @Rot127 in #2028
99
- Fix #2032 by @Rot127 in #2033
100
- Add operands access support for TriCore by @imbillow in #2034
101
- Hotfix for -DCAPSTONE_DIET build. by @Rot127 in #2038
102
- Fix Python bindings after changes to cs_detail by @peace-maker in #2041
103
- RISCV: Add call, int and branch_relative instruction groups by @peace-maker in #2007
104
- Re-fix pkgconfig includedir/Cflags by @orlitzky in #2046
105

106
New Contributors:
107
- @adamjseitz made their first contribution in #1859
108
- @theblackunknown made their first contribution in #1867
109
- @hamarituc made their first contribution in #1878
110
- @terorie made their first contribution in #1885
111
- @junghee made their first contribution in #1863
112
- @jbott made their first contribution in #1910
113
- @FinnWilkinson made their first contribution in #1907
114
- @huth made their first contribution in #1921
115
- @ZehMatt made their first contribution in #1937
116
- @rrwhx made their first contribution in #1940
117
- @Rot127 made their first contribution in #1942
118
- @HyperSine made their first contribution in #1944
119
- @mjunix made their first contribution in #1938
120
- @ysat0 made their first contribution in #1927
121
- @sunxingxing made their first contribution in #1959
122
- @wideglide made their first contribution in #1961
123
- @SweetVishnya made their first contribution in #1964
124
- @covanam made their first contribution in #1968
125
- @thomasdangl made their first contribution in #1974
126
- @imbillow made their first contribution in #1989
127
- @raigorx made their first contribution in #2000
128
- @peace-maker made their first contribution in #2041
129
- @orlitzky made their first contribution in #2046
130

131

132
---------------------------------
133
Version 5.0.0-rc2: February 28th, 2022
134

135
New features:
136
- None
137

138
Improvements:
139
- Fix for python publish build (#1844)
140
- Modernize CMake and switch to CMake 3.15 (#1841)
141
- Fix AArch64 ldapr detailed information (#1840)
142
- Fix incorrect MI->ac_idx leading to wrong AArch64 InsnOp access printing (#1845)
143

144
Contributors:
145
- stevielavern
146
- mrexodia
147
- kabeor
148

149
---------------------------------
150
Version 5.0.0-rc1: February 27th, 2022
151

152
New features:
153
- Add arch BPF (#1388)
154
- Add arch RISCV (#1401)
155
- Add arch WASM (#1359)
156
- PyPI workflow (#1645)
157
- Option to generate install target (#1698 #1700)
158
- Swift binding (#1707)
159
- Add CI Test support (#1797)
160
- Add benchmark (#1811)
161

162
Improvements:
163
- Add fixups for aarch64 instructions (#1632 #1655)
164
- Add fixups for x86 instructions (#1644 #1657 #1689 1751)
165
- Add fixups for m68k instructions (#1663 #1709)
166
- Add fixups for m680x instructions (#1695)
167
- Add fixups for mips instructions (#1674)
168
- Add fixups for mos65xx instructions (#1702)
169
- Add fixups for systemz instructions (#1679)
170
- Add fixups for risc-v instructions (#1682 #1690 #1691)
171
- Add fixups for ppc instructions (#1687 #1688)
172
- Add cmake config and export targets (#1637)
173
- Fix issues in Makefiles (#1639)
174
- Fix issues about cmake builds (#1649 #1659)
175
- MSVC tooling updates (#1651)
176
- Fix crash when using skipdata with NULL mnemonic(#1703)
177
- Fix python only use ascii character (#1704)
178
- Add support for aarch64 distributions (#1720)
179
- Fix registry access for several versions of pop such as POPDS, POPSS, etc. (#1725)
180
- Fix registry access on cmov instructions (#1727)
181
- Fix -Wstringop-truncation warnings (#1730)
182
- Fix always return the same type from regs_read (#1736)
183
- Fix inconsistent behavior of Mips_option() (#1744)
184
- Fix pythonic bug (#1745)
185
- Fixes the (pip) Python Module build on FreeBSD (#1750)
186
- Enable detection and build on all BSD systems (#1753)
187
- Fix the displacement offset for moffset-encoded operands (#1754)
188
- Update cmake_minimum_required to version 2.8.12 (#1756)
189
- Fixed typos in compilation steps (#1762)
190
- Fix build android (#1765)
191
- Support disassembling bytes from memoryview (#1773)
192
- Fixed library extension to build properly under CYGWIN (#1791)
193
- Add Capstone Engine Documentation (#1794)
194
- Fix eflags effects for adc/sbb (#1798)
195
- Update x86 operand access information (#1801)
196
- CI automatically build release tarball (#1802)
197
- Don't format sstreams when there's nothing to format (#1805)
198
- Fix warning about Unused variables (#1815)
199
- Fix insn initialization when instruction have no operands or have a prefix (#1816)
200
- Avoid abort() if x86 not supported (#1818)
201
- Fix unterminated string regression (#1819)
202
- Fixed incorrect operand access on x86 instruction vmovdqu (#1823)
203

204
Contributors:
205
- ekilmer
206
- mcmtroffaes
207
- sh1r4s3
208
- emoon
209
- chfl4gs
210
- heshpdx
211
- hmoenck
212
- cyanpencil
213
- NicolasDerumigny
214
- trofi
215
- maximumspatium
216
- junchao-loongson
217
- carenas 
218
- notyourusualaccountname
219
- rth7680
220
- StalkR
221
- aeflores
222
- TobiasFaller
223
- XVilka
224
- meme
225
- zydeco
226
- catenacyber
227
- michalsc
228
- urbas
229
- keenk
230
- kazarmy
231
- learn-more
232
- veritas501
233
- trufae
234
- cederom
235
- Quentin01
236
- jranieri-grammatech
237
- scribam
238
- huettenhain
239
- LBJ-the-GOAT
240
- wheremyfoodat
241
- Jaysonicc
242
- huettenhain
243
- syscl
244
- bezita
245
- Smartsmurf 
246
- tmfink
247
- kazarmy
248
- rofl0r
249
- bSr43
250
- wtdcode
251
- dropTableUsers42
252
- carenas
253
- owlxiao
254
- Mxz297
255
- SpikeI
256
- catenacyber
257
- david942j
258
- fanfuqiang
259
- aquynh
260
- kabeor
261

262

263
---------------------------------
264
Version 4.0.2: May 8th, 2020
265

266
[ Core ]
267

268
- Windows kernel-mode driver support
269
- Fix installation path on FreeBSD and DragonFly
270

271

272
[ cstool ]
273

274
- Add armv8, ppc32 & thumbv8 modes
275
- Print instruction ID
276

277

278
[ X86 ]
279

280
- Support CS_OPT_UNSIGNED for ATT syntax
281
- Fix operand size for some instructions
282
- Fix LOCK prefixes
283
- Recognize xacquire/xrelease prefix
284
- Fix call/jmp access mode of mem operand
285
- Add ENDBR32, ENDBR64 to reduce mode
286
- Other minor fixes
287

288

289
[ ARM64 ]
290

291
- Support CS_OPT_UNSIGNED
292
- Fix register access flags for memory instructions
293
- Fix UMOV vess
294

295

296
[ ARM ]
297

298
- Update writeback for STR_POST_REG
299

300

301
[ M68K ]
302

303
- Store correct register value in op.reg_pair
304

305

306
[ PowerPC ]
307

308
- BDZLA is absolute branch
309

310

311
[ SystemZ ]
312

313
- Fix truncated 64bit imm operand
314
- Fix base/index printing
315

316

317
[ Python ]
318

319
- Fix skipdata struct being destroyed
320
- Add repr for capstone.CsInsn
321

322

323
[ Java ]
324

325
- Fix Java bindings to use pointers instead of longs
326

327

328
[ Ocaml ]
329

330
- Fix x86_op record
331

332

333
---------------------------------
334
Version 4.0.1: January 10th, 2019
335

336

337
[ Core ]
338

339
- Fix some issues for packaging (Debian, Gentoo).
340
- Better support for building with Mingw.
341
- cstool has new option -s to turn on skipdata mode.
342
- cstool -v now report build settings of the core.
343
- Add suite/capstone_get_setup.c so users can integrate with their own code
344
  to retrieve Capstone settings at build time.
345

346

347
[ Arm ]
348

349
- Fix 4.0 regression: the `tbh [r0, r1, lsl #1]` instruction sets the operand.shift.value back again (see #1317)
350
- Remove ARM_REG_PC group for BX instruction.
351

352

353
[ X86 ]
354

355
- Fix: endbr32 and endbr64 instructions are now properly decoded in both CS_MODE_32 and CS_MODE_64  (#1129)
356

357

358
[ M680X ]
359

360
- Fix some issues reported by clang-analyzer (#1329).
361

362

363
[ Python ]
364

365
- Fix skipdata setup.
366
- Add getter/setter for skipdata_mnem, skipdata_callback.
367

368

369
---------------------------------
370
Version 4.0: December 18th, 2018
371

372

373
[ Core ]
374

375
- New APIs: cs_regs_access()
376
- Add new options for cs_option(): CS_OPT_MNEMONIC & CS_OPT_UNSIGNED & CS_OPT_SYNTAX_MASM.
377
- Various updates & bugfixes for all architectures.
378
- Add 4 new architectures: EVM, M68K, M680X & TMS320C64x.
379
- Add new group types: CS_GRP_PRIVILEGE & CS_GRP_BRANCH_RELATIVE.
380
- Add new error types: CS_ERR_X86_MASM.
381

382

383
[ X86 ]
384

385
- Add XOP code condition type in x86_xop_cc.
386
- Add some info on encoding to cs_x86 in cs_x86_encoding.
387
- Add register flags update in cs_x86.{eflags, fpu_flags}
388
- Change cs_x86.disp type from int32_t to int64_t.
389
- Add new groups: X86_GRP_VM & X86_GRP_FPU.
390
- Lots of new instructions (AVX)
391

392

393
[ ARM64 ]
394

395
- Add instruction ARM64_INS_NEGS & ARM64_INS_NGCS.
396

397

398
[ Mips ]
399

400
- Add mode CS_MODE_MIPS2.
401

402

403
[ PPC ]
404

405
- Change cs_ppc_op.imm type from int32_t to int64_t.
406
- Add new groups: PPC_GRP_ICBT, PPC_GRP_P8ALTIVEC, PPC_GRP_P8VECTOR & PPC_GRP_QPX.
407
- Lots of new instructions (QPX among them)
408

409

410
[ Sparc ]
411

412
- Change cs_sparc_op.imm type from int32_t to int64_t.
413

414

415
[ Binding ]
416

417
- New bindings: PowerShell & VB6
418

419

420
---------------------------------
421
Version 3.0.5: July 18th, 2018
422

423

424
[ Core ]
425

426
- Fix the include path for Android builds when building cstool.
427
- Add possibility to disable universal build for Mac OS.
428
- cstool: Separate instruction bytes by spaces.
429
- Fix code path of pkg-config in Cmake.
430
- Update XCode project for XCode 9.1.
431
- Add Cortex-M support to cstool.
432
- Cmake forces to be build using MT with MSVC.
433
- Better support for Mac OS kernel.
434

435

436
[ X86 ]
437

438
- Fix some issues in handling EVEX & VEX3 instructions.
439
- Fix immediate operand for AND instruction in ATT mode.
440
- Fix ATT syntax when imm operand is 0.
441
- Better handle XACQUIRE/XRELEASE.
442
- Fix imm operand of RETF.
443

444

445
[ ARM ]
446

447
- Fix an integer overflow bug.
448

449

450
[ ARM64 ]
451

452
- Bug fix for incorrect operand type in certain load/store instructions.
453

454

455
[ Mips ]
456

457
- Mode CS_MODE_MIPS32R6 automatically sets CS_MODE_32
458

459

460
[ PPC ]
461

462
- Fix endian check.
463

464

465
[ Sparc ]
466

467
- Fix an integer overflow bug.
468

469

470
[ SystemZ ]
471

472
- Fix an integer overflow bug.
473

474

475
[ Python binding ]
476

477
- Raise error on accessing irrelevant data fields if skipdata & detail modes are enable.
478

479

480
---------------------------------
481
Version 3.0.5-rc3: July 31st, 2017
482

483

484
[ Core ]
485

486
- Fix compilation for MacOS kernel extension
487
- cstool to support armbe and arm64be modes
488
- Add nmake.bat for Windows build
489
- Fix an integer overflow for Windows kernel driver
490
- Support to embedded Capstone into MacOS kernel
491
- cstool: fix mips64 mode
492
- Fix a compiling error in MS Visual Studio 2015
493
- Install pkgconfig file with CMake build
494
- Fix SOVERSION property of CMake build
495
- Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc
496
- Fix MingW build
497
- Better handle CMake installation for Linux 64bit
498

499

500
[ X86 ]
501

502
- Support BND prefix of Intel MPX extension
503
- Correct operand size for CALL/JMP in 64bit mode with prefix 0x66
504
- LOCK NOP is a valid instruction
505
- Fix ATT syntax for instruction with zero offset segment register
506
- LES/LDS are invalid in 64bit mode
507
- Fix number of operands for some MOV instructions
508

509

510
[ ARM ]
511

512
- Fix POP reg to update SP register
513
- Update flags for UADD8 instruction
514

515

516
[ ARM64 ]
517

518
- Better performance with new lookup table
519
- Handle system registers added in ARMv8.1/2
520

521

522
[ Java binding ]
523

524
- Better handle input with invalid code
525

526

527
[ Visual Basic binding ]
528

529
- New binding
530

531
---------------------------------
532
Version 3.0.5-rc2: March 2nd, 2017
533

534

535
[ Core ]
536

537
- Fix build for Visual Studio 2012
538
- Fix X86_REL_ADDR macro
539
- Add CS_VERSION_MAJOR, CS_VERSION_MINOR, CS_VERSION_EXTRA
540
- Better support for embedding Capstone into Windows kernel drivers
541
- Support to embedded Capstone into MacOS kernel
542
- Support MacOS 10.11 and up
543
- Better support for Cygwin
544
- Support build packages for FreeBSD & DragonflyBSD
545
- Add a command-line tool "cstool"
546
- Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc
547

548

549
[ X86 ]
550

551
- Some random 16-bit code can be handled wrongly.
552
- Remove abundant operand type X86_OP_FP
553
- Fix instructions MOVQ, LOOP, LOOPE, LOOPNE, CALL/JMP rel16, REPNE LODSD, MOV *AX, MOFFS, FAR JMP/CALL
554
- Add X86_REG_EFLAGS for STC and STD
555
- Fix instruction attributes for SYSEXIT, MOVW, ROL, LGS, SLDT
556
- Rename registers ST0-ST7 to be consistent with asm output
557

558

559
[ ARM ]
560

561
- Properly handle IT instruction
562
- Fix LDRSB
563
- Fix writeback for LDR
564
- Fix Thumb BigEndian setup
565

566

567
[ ARM64 ]
568

569
- Fix arith extender
570
- Fix writeback for LDR
571
- Rename enum arm64_mrs_reg to arm64_sysreg
572

573

574
[ PowerPC ]
575

576
- Print 0 offset for memory operand
577

578

579
[ Sparc ]
580

581
- Fix POPC instruction
582

583

584
[ Python binding ]
585

586
- Better PyPy support
587
- Add __version__
588
- Better support for Python 3
589
- Fix CS_SKIPDATA_CALLBACK prototype
590
- Cast skipdata function inside binding to simplify the API
591

592

593
[ Java binding ]
594

595
- Better handle input with invalid code
596

597

598
[ PowerShell ]
599

600
- New binding
601

602
---------------------------------
603
Version 3.0.4: July 15th, 2015
604

605

606
[ Library ]
607

608
- Improve cross-compile for Android using Android NDK.
609
- Support cross-compile for AArch64 Android (with Linux GCC).
610
- Removed osxkernel_inttypes.h that is incompatible with BSD license.
611
- Make it possible to compile with CC having a space inside (like "ccache gcc").
612

613

614
[ X86 ]
615

616
- Fix a null pointer dereference bug on handling code with special prefixes.
617
- Properly handle AL/AX/EAX operand for OUT instruction in AT&T syntax.
618
- Print immediate operand in positive form in some algorithm instructions.
619
- Properly decode some SSE instructions.
620

621

622
[ PowerPC ]
623

624
- Fixed a memory corruption bug.
625
- Fixed a memory corruption bug for the engine built in DIET mode.
626

627

628
[ Mips ]
629

630
- Fixed instruction ID of SUBU instruction.
631
- Fixed a memory corruption bug.
632

633

634
[ Arm ]
635

636
- Fixed a memory corruption bug on IT instruction.
637

638

639
[ XCore ]
640

641
- Fixed a memory corruption bug when instruction has a memory operand.
642

643

644
[ Python ]
645

646
- Support Virtualenv.
647
- setup.py supports option --user if not in a virtualenv to allow for local usage.
648
- Properly handle the destruction of Cs object in the case the shared library
649
  was already unloaded.
650

651
---------------------------------
652
Version 3.0.3: May 08th, 2015
653

654

655
[ Library ]
656

657
- Support to embed into Mac OS X kernel extensions.
658
- Now it is possible to compile Capstone with older C compilers, such as
659
  GCC 4.8 on Ubuntu 12.04.
660
- Add "test_iter" to MSVC project.
661

662

663
[ X86 ]
664

665
- All shifted instructions SHL, SHR, SAL, SAR, RCL, RCR, ROL & ROR now support
666
  $1 as first operand in *AT&T* syntax (so we have "rcll $1, %edx" instead of
667
  "rcll %edx").
668
- CMPXCHG16B is a valid instruction with LOCK prefix.
669
- Fixed a segfault on the input of 0xF3.
670

671

672
[ Arm ]
673

674
- BLX instruction modifies PC & LR registers.
675

676

677
[ Sparc ]
678

679
- Improved displacement decoding for sparc banching instructions.
680

681

682
[ Python binding ]
683

684
- Fix for Cython so it can properly initialize.
685
- X86Op.avx_zero_mask now has c_bool type, but not c_uint8 type.
686
- Properly support compile with Cygwin & install binding (setup.py).
687

688
---------------------------------
689
Version 3.0.2: March 11th, 2015
690

691

692
[ Library ]
693

694
- On *nix, only export symbols that are part of the API (instead of all
695
  the internal symbols).
696

697

698
[ X86 ]
699

700
- Do not consider 0xF2 as REPNE prefix if it is a part of instruction encoding.
701
- Fix implicit registers read/written & instruction groups of some instructions.
702
- More flexible on the order of prefixes, so better handle some tricky
703
  instructions.
704
- REPNE prefix can go with STOS & MOVS instructions.
705
- Fix a compilation bug for X86_REDUCE mode.
706
- Fix operand size of instructions with operand PTR []
707

708

709
[ Arm ]
710

711
- Fix a bug where arm_op_mem.disp is wrongly calculated (in DETAIL mode).
712
- Fix a bug on handling the If-Then block.
713

714

715
[ Mips ]
716

717
- Sanity check for the input size for MIPS64 mode.
718

719

720
[ MSVC ]
721

722
- Compile capstone.dll with static runtime MSVCR built in.
723

724

725
[ Python binding ]
726

727
- Fix a compiling issue of Cython binding with gcc 4.9.
728

729
---------------------------------
730
Version 3.0.1: February 03rd, 2015
731

732
[ X86 ]
733

734
- Properly handle LOCK, REP, REPE & REPNE prefixes.
735
- Handle undocumented immediates for SSE's (V)CMPPS/PD/SS/SD instructions.
736
- Print LJUMP/LCALL without * as prefix for Intel syntax.
737
- Handle REX prefix properly for segment/MMX related instructions (x86_64).
738
- Instruction with length > 15 is consider invalid.
739
- Handle some tricky encodings for instructions MOVSXD, FXCH, FCOM, FCOMP,
740
  FSTP, FSTPNCE, NOP.
741
- Handle some tricky code for some X86_64 instructions with REX prefix.
742
- Add missing operands in detail mode for PUSH , POP , IN/OUT reg, reg
743
- MOV32ms & MOV32sm should reference word rather than dword.
744

745

746
[ Arm64 ]
747

748
- BL & BLR instructions do not read SP register.
749
- Print absolute (rather than relative) address for instructions B, BL,
750
  CBNZ, ADR.
751

752

753
[ Arm ]
754

755
- Instructions ADC & SBC do not update flags.
756
- BL & BLX do not read SP, but PC register.
757
- Alias LDR instruction with operands [sp], 4 to POP.
758
- Print immediate operand of MVN instruction in positive hexadecimal form.
759

760

761
[ PowerPC ]
762

763
- Fix some compilation bugs when DIET mode is enable.
764
- Populate SLWI/SRWI instruction details with SH operand.
765

766

767
[ Python binding ]
768

769
- Fix a Cython bug when CsInsn.bytes returns a shorten array of bytes.
770
- Fixed a memory leak for Cython disasm functions when we immaturely quit
771
  the enumeration of disassembled instructions.
772
- Fix a NULL memory access issue when SKIPDATA & Detail modes are enable
773
  at the same time.
774
- Fix a memory leaking bug when we stop enumeration over the disassembled
775
  instructions prematurely.
776
- Export generic operand types & groups (CS_OP_xxx & CS_GRP_xxx).
777

778
---------------------------------
779
Version 3.0: November 19th, 2014
780

781
[ API ]
782

783
- New API: cs_disasm_iter & cs_malloc. See docs/README for tutorials.
784
- Renamed cs_disasm_ex to cs_disasm (cs_disasm_ex is still supported, but
785
  marked obsolete to be removed in future)
786
- Support SKIPDATA mode, so Capstone can jump over unknown data and keep going
787
  from the next legitimate instruction. See docs/README for tutorials.
788
- More details provided in cs_detail struct for all architectures.
789
- API version was bumped to 3.0.
790

791

792
[ Bindings ]
793

794
- Python binding supports Python3 (besides Python2).
795
- Support Ocaml binding.
796
- Java: add close() method to be used to deinitialize a Capstone object when
797
  no longer use it.
798

799

800
[ Architectures ]
801

802
- New architectures: Sparc, SystemZ & XCore.
803
- Important bugfixes for Arm, Arm64, Mips, PowerPC & X86.
804
- Support more instructions for Arm, Arm64, Mips, PowerPC & X86.
805
- Always expose absolute addresses rather than relative addresses (Arm, Arm64,
806
  Mips, PPC, Sparc, X86).
807
- Use common instruction operand types REG, IMM, MEM & FP across all
808
  architectures (to enable cross-architecture analysis).
809
- Use common instruction group types across all architectures (to enable
810
  cross-architecture analysis).
811

812

813
[ X86 ]
814

815
- X86 engine is mature & handles all the malware tricks (that we are aware of).
816
- Added a lot of new instructions (such as AVX512, 3DNow, etc).
817
- Add prefix symbols X86_PREFIX_REP/REPNE/LOCK/CS/DS/SS/FS/GS/ES/OPSIZE/ADDRSIZE.
818
- Print immediate in positive form & hexadecimal for AND/OR/XOR instructions.
819
- More friendly disassembly for JMP16i (in the form segment:offset)
820

821

822
[ Mips ]
823

824
- Engine added supports for new hardware modes: Mips32R6 (CS_MODE_MIPS32R6) &
825
  MipsGP64 (CS_MODE_MIPSGP64).
826
- Removed the ABI-only mode CS_MODE_N64.
827
- New modes CS_MODE_MIPS32 & CS_MODE_MIPS64 (to use instead of CS_MODE_32 &
828
  CS_MODE_64).
829

830

831
[ ARM ]
832

833
- Support new mode CS_MODE_V8 for Armv8 A32 encodings.
834
- Print immediate in positive form & hexadecimal for AND/ORR/EOR/BIC instructions
835

836

837
[ ARM64 ]
838

839
- Print immediate in hexadecimal for AND/ORR/EOR/TST instructions.
840

841

842
[ PowerPC ]
843

844
- Do not print a dot in front of absolute address.
845

846

847
[ Other features ]
848

849
- Support for Microsoft Visual Studio (so enable Windows native compilation).
850
- Support CMake compilation.
851
- Cross-compile for Android.
852
- Build libraries/tests using XCode project
853
- Much faster, while consuming less memory for all architectures.
854

855
---------------------------------
856
Version 2.1.2: April 3rd, 2014
857

858
This is a stable release to fix some bugs deep in the core. There is no update
859
to any architectures or bindings, so bindings version 2.1 can be used with this
860
version 2.1.2 just fine.
861

862
[ Core changes]
863

864
- Support cross-compilation for all iDevices (iPhone/iPad/iPod).
865
- X86: do not print memory offset in negative form.
866
- Fix a bug in X86 when Capstone cannot handle short instruction.
867
- Print negative number above -9 without prefix 0x (arm64, mips, arm).
868
- Correct the SONAME setup for library versioning (Linux, *BSD, Solaris).
869
- Set library versioning for dylib of OSX.
870

871
---------------------------------
872
Version 2.1.1: March 13th, 2014
873

874
This is a stable release to fix some bugs deep in the core. There is no update
875
to any architectures or bindings, so bindings version 2.1 can be used with this
876
version 2.1.1 just fine.
877

878
[ Core changes]
879

880
- Fix a buffer overflow bug in Thumb mode (ARM). Some special input can
881
  trigger this flaw.
882
- Fix a crash issue when embedding Capstone into OSX kernel. This should
883
  also enable Capstone to be embedded into other systems with limited stack
884
  memory size such as Linux kernel or some firmwares.
885
- Use a proper SONAME for library versioning (Linux).
886

887
---------------------------------
888
Version 2.1: March 5th, 2014
889

890
[ API changes ]
891

892
- API version has been bumped to 2.1.
893
- Change prototype of cs_close() to be able to invalidate closed handle.
894
  See http://capstone-engine.org/version_2.1_API.html for more information.
895
- Extend cs_support() to handle more query types, not only about supported
896
  architectures. This change is backward compatible, however, so existent code
897
  do not need to be modified to support this.
898
- New query type CS_SUPPORT_DIET for cs_support() to ask about diet status of
899
  the engine.
900
- New error code CS_ERR_DIET to report errors about newly added diet mode.
901
- New error code CS_ERR_VERSION to report issue of incompatible versions between
902
  bindings & core engine.
903

904

905
[ Core changes ]
906

907
- On memory usage, Capstone uses about 40% less memory, while still faster
908
  than version 2.0.
909
- All architectures are much smaller: binaries size reduce at least 30%.
910
  Especially, X86-only binary reduces from 1.9MB to just 720KB.
911
- Support "diet" mode, in which engine size is further reduced (by around 40%)
912
  for embedding purpose. The price to pay is that we have to sacrifice some
913
  non-critical data fields. See http://capstone-engine.org/diet.html for more
914
  details.
915

916

917
[ Architectures ]
918

919
- Update all 5 architectures to fix bugs.
920
- PowerPC:
921
	- New instructions: FMR & MSYNC.
922
- Mips:
923
	- New instruction: DLSA
924
- X86:
925
	- Properly handle AVX-512 instructions.
926
	- New instructions: PSETPM, SALC, INT1, GETSEC.
927
	- Fix some memory leaking issues in case of prefixed instructions such
928
	  as LOCK, REP, REPNE.
929

930

931
[ Python binding ]
932

933
- Verify the core version at initialization time. Refuse to run if its version
934
  is different from the core's version.
935
- New API disasm_lite() added to Cs class. This light API only returns tuples of
936
  (address, size, mnemonic, op_str), rather than list of CsInsn objects. This
937
  improves performance by around 30% in some benchmarks.
938
- New API version_bind() returns binding's version, which might differ from
939
  the core's API version if the binding is out-of-date.
940
- New API debug() returns information on Cython support, diet status & archs
941
  compiled in.
942
- Fixed some memory leaking bugs for Cython binding.
943
- Fix a bug crashing Cython code when accessing @regs_read/regs_write/groups.
944
- Support diet mode.
945

946

947
[ Java binding ]
948

949
- Fix some memory leaking bugs.
950
- New API version() returns combined version.
951
- Support diet mode.
952
- Better support for detail option.
953

954

955
[ Miscellaneous ]
956

957
- make.sh now can uninstall the core engine. This is done with:
958

959
	$ sudo ./make.sh uninstall
960

961
----------------------------------
962
Version 2.0: January 22nd, 2014
963

964
Release 2.0 deprecates version 1.0 and brings a lot of crucial changes.
965

966
[ API changes ]
967

968
- API version has been bumped to 2.0 (see cs_version() API)
969
- New API cs_strerror(errno) returns a string describing error code given
970
  in its only argument.
971
- cs_version() now returns combined version encoding both major & minor versions.
972
- New option CS_OPT_MODE allows to change engine’s mode at run-time with
973
  cs_option().
974
- New option CS_OPT_MEM allows to specify user-defined functions for dynamically
975
  memory management used internally by Capstone. This is useful to embed Capstone
976
  into special environments such as kernel or firmware.
977
- New API cs_support() can be used to check if this lib supports a particular
978
  architecture (this is necessary since we now allow to choose which architectures
979
  to compile in).
980
- The detail option is OFF by default now. To get detail information, it should be
981
  explicitly turned ON. The details then can be accessed using cs_insn.detail
982
  pointer (to newly added structure cs_detail)
983

984

985
[ Core changes ]
986

987
- On memory usage, Capstone uses much less memory, but a lot faster now.
988
- User now can choose which architectures to be supported by modifying config.mk
989
  before compiling/installing.
990

991

992
[ Architectures ]
993

994
- Arm
995
     - Support Big-Endian mode (besides Little-Endian mode).
996
     - Support friendly register, so instead of output sub "r12,r11,0x14",
997
	 we have "sub ip,fp,0x14".
998
- Arm64: support Big-Endian mode (besides Little-Endian mode).
999
- PowerPC: newly added.
1000
- Mips: support friendly register, so instead of output "srl $2,$1,0x1f",
1001
     we have "srl $v0,$at,0x1f".
1002
- X86: bug fixes.
1003

1004

1005
[ Python binding ]
1006

1007
- Python binding is vastly improved in performance: around 3 ~ 4 times faster
1008
  than in 1.0.
1009
- Cython support has been added, which can further speed up over the default
1010
  pure Python binding (up to 30% in some cases)
1011
- Function cs_disasm_quick() & Cs.disasm() now use generator (rather than a list)
1012
  to return successfully disassembled instructions. This improves the performance
1013
  and reduces memory usage.
1014

1015

1016
[ Java binding ]
1017

1018
- Better performance & bug fixes.
1019

1020

1021
[ Miscellaneous ]
1022

1023
- Fixed some installation issues with Gentoo Linux.
1024
- Capstone now can easily compile/install on all *nix, including Linux, OSX,
1025
  {Net, Free, Open}BSD & Solaris.
1026

1027
----------------------------------
1028
[Version 1.0]: December 18th, 2013
1029

1030
- Initial public release.
1031

1032

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.